Browse Source

Merge branch 'release/0.5.0'

Warafear 1 year ago
parent
commit
dd606f27d9
172 changed files with 16524 additions and 9491 deletions
  1. 3634 0
      .nx/cache/d/daemon.log
  2. 1 1
      .nx/cache/d/server-process.json
  3. 342 165
      .nx/cache/file-map.json
  4. 1 1
      .nx/cache/lockfile.hash
  5. 363 0
      .nx/cache/parsed-lock-file.json
  6. 7547 7155
      .nx/cache/project-graph.json
  7. 158 4
      package-lock.json
  8. 2 1
      package.json
  9. 1 0
      src/app/character/character-creator/character-creator.component.ts
  10. 8 3
      src/app/character/character-picker/character-card/character-card.component.html
  11. 11 4
      src/app/character/character-picker/character-card/character-card.component.ts
  12. 17 2
      src/app/character/character-picker/character-picker.component.ts
  13. 7 1
      src/app/journal/journal-character/class/class.component.scss
  14. 59 61
      src/app/journal/journal-character/general/general.component.html
  15. 46 15
      src/app/journal/journal-character/general/general.component.scss
  16. 12 1
      src/app/journal/journal-character/journal-character.component.html
  17. 8 0
      src/app/journal/journal-character/journal-character.component.scss
  18. 7 1
      src/app/journal/journal-character/species/species.component.scss
  19. 7 1
      src/app/journal/journal-character/subclass/subclass.component.scss
  20. 1 1
      src/app/journal/journal-home/details-panel/details-panel.component.scss
  21. 1 3
      src/app/journal/journal-home/details-panel/details-panel.component.ts
  22. 19 14
      src/app/journal/journal-home/navigation-panel/navigation-panel.component.html
  23. 2 2
      src/app/journal/journal-home/navigation-panel/navigation-panel.component.scss
  24. 10 1
      src/app/journal/journal-home/navigation-panel/navigation-panel.component.ts
  25. 0 41
      src/app/journal/journal-inventory/food-details/food-details.component.html
  26. 0 0
      src/app/journal/journal-inventory/food-details/food-details.component.scss
  27. 0 23
      src/app/journal/journal-inventory/food-details/food-details.component.ts
  28. 20 11
      src/app/journal/journal-inventory/journal-inventory.component.html
  29. 3 3
      src/app/journal/journal-inventory/journal-inventory.component.scss
  30. 12 52
      src/app/journal/journal-inventory/journal-inventory.component.ts
  31. 27 36
      src/app/journal/journal-inventory/simple-item-details/simple-item-details.component.html
  32. 5 7
      src/app/journal/journal-inventory/simple-item-details/simple-item-details.component.ts
  33. 65 37
      src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.html
  34. 35 2
      src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.scss
  35. 9 0
      src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.ts
  36. 13 1
      src/app/journal/journal-notes/journal-notes.component.html
  37. 12 3
      src/app/journal/journal-notes/journal-notes.component.ts
  38. 2 2
      src/app/journal/journal-spellcards/add-card/add-card.component.html
  39. 3 3
      src/app/journal/journal-spellcards/add-card/add-card.component.scss
  40. 1 1
      src/app/journal/journal-spellcards/journal-spellcards.component.html
  41. 4 4
      src/app/journal/journal-spellcards/journal-spellcards.component.ts
  42. 1 22
      src/app/journal/journal-spellcards/spellcard/spellcard.component.html
  43. 4 0
      src/app/journal/journal-spellcards/spellcard/spellcard.component.ts
  44. 11 23
      src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.html
  45. 5 4
      src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.scss
  46. 1 1
      src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.ts
  47. 68 66
      src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.html
  48. 4 15
      src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.scss
  49. 18 1
      src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.ts
  50. 4 3
      src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.html
  51. 1 1
      src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.scss
  52. 2 4
      src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.ts
  53. 5 3
      src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.html
  54. 0 2
      src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.ts
  55. 37 68
      src/app/journal/journal-stats/ability-panel/proficiencies-table/tools-modal/tools-modal.component.html
  56. 6 51
      src/app/journal/journal-stats/ability-panel/proficiencies-table/tools-modal/tools-modal.component.scss
  57. 58 67
      src/app/journal/journal-stats/ability-panel/spellslots/spellslots-modal/spellslots-modal.component.html
  58. 3 9
      src/app/journal/journal-stats/ability-panel/spellslots/spellslots-modal/spellslots-modal.component.scss
  59. 42 23
      src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.html
  60. 65 12
      src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.scss
  61. 10 11
      src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.ts
  62. 9 21
      src/app/journal/journal-stats/ability-panel/trait-table/trait-details/trait-details.component.html
  63. 47 49
      src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.html
  64. 0 14
      src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.scss
  65. 17 1
      src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.ts
  66. 4 3
      src/app/journal/journal-stats/ability-panel/trait-table/trait-table.component.html
  67. 1 1
      src/app/journal/journal-stats/ability-panel/trait-table/trait-table.component.scss
  68. 29 30
      src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-details/attribute-details.component.html
  69. 15 21
      src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-details/attribute-details.component.scss
  70. 4 9
      src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-details/save-throw-details.component.html
  71. 0 11
      src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-details/save-throw-details.component.scss
  72. 3 10
      src/app/journal/journal-stats/attribute-skill-container/skill-panel/skill-details/skill-details.component.html
  73. 3 8
      src/app/journal/journal-stats/info-row/armor-class/armor-class-details/armor-class-details.component.html
  74. 0 5
      src/app/journal/journal-stats/info-row/armor-class/armor-class-details/armor-class-details.component.scss
  75. 64 52
      src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.html
  76. 60 65
      src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.scss
  77. 1 1
      src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.ts
  78. 0 2
      src/app/journal/journal-stats/info-row/conditions/conditions.component.ts
  79. 13 14
      src/app/journal/journal-stats/info-row/conditions/exhaustion-details/exhaustion-details.component.html
  80. 3 3
      src/app/journal/journal-stats/info-row/conditions/exhaustion-details/exhaustion-details.component.scss
  81. 6 9
      src/app/journal/journal-stats/info-row/death-save/death-save-details/death-save-details.component.html
  82. 3 8
      src/app/journal/journal-stats/info-row/initiative/initiative-details/initiative-details.component.html
  83. 21 37
      src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.html
  84. 15 20
      src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.scss
  85. 3 8
      src/app/journal/journal-stats/info-row/proficiency/proficiency-details/proficiency-details.component.html
  86. 1 1
      src/app/journal/journal-stats/journal-stats.component.html
  87. 1 1
      src/app/journal/journal-stats/journal-stats.component.scss
  88. 22 22
      src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.html
  89. 29 38
      src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.scss
  90. 3 0
      src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.ts
  91. 27 34
      src/app/journal/journal-stats/life-container/life/life-details/life-details.component.html
  92. 39 2
      src/app/journal/journal-stats/life-container/life/life-details/life-details.component.scss
  93. 5 3
      src/app/journal/journal-stats/life-container/life/life-details/life-details.component.ts
  94. 15 6
      src/app/journal/journal-stats/life-container/life/life.component.html
  95. 1 0
      src/app/journal/journal-stats/life-container/life/life.component.scss
  96. 2 3
      src/app/journal/journal-stats/life-container/life/life.component.ts
  97. 169 0
      src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.html
  98. 97 0
      src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.scss
  99. 23 0
      src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.spec.ts
  100. 60 0
      src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.ts
  101. 3 5
      src/app/journal/journal-stats/weapons-container/spell-table/spell-details/spell-details.component.html
  102. 82 94
      src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.html
  103. 8 2
      src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.scss
  104. 31 89
      src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.ts
  105. 46 61
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.html
  106. 8 3
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.scss
  107. 17 2
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.ts
  108. 252 182
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.html
  109. 81 54
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.scss
  110. 21 4
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.ts
  111. 3 1
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.html
  112. 1 1
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.scss
  113. 1 4
      src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.ts
  114. 6 2
      src/app/journal/journal.module.ts
  115. 2 2
      src/app/journal/spell-modal/spell-modal.component.html
  116. 15 17
      src/app/journal/spell-modal/spell-modal.component.scss
  117. 5 5
      src/app/journal/spell-modal/spell-modal.component.ts
  118. 2 2
      src/app/shared-components/full-spellcard/full-spellcard.component.html
  119. 3 0
      src/app/shared-components/icon-button/icon-button.component.html
  120. 15 0
      src/app/shared-components/icon-button/icon-button.component.scss
  121. 6 6
      src/app/shared-components/icon-button/icon-button.component.spec.ts
  122. 10 0
      src/app/shared-components/icon-button/icon-button.component.ts
  123. 20 3
      src/app/shared-components/shared-components.module.ts
  124. 3 1
      src/app/shared-components/ui-button/ui-button.component.html
  125. 113 36
      src/app/shared-components/ui-button/ui-button.component.scss
  126. 18 18
      src/app/shared-components/ui-button/ui-button.component.ts
  127. 14 0
      src/app/shared-components/value-box/value-box.component.html
  128. 33 0
      src/app/shared-components/value-box/value-box.component.scss
  129. 23 0
      src/app/shared-components/value-box/value-box.component.spec.ts
  130. 36 0
      src/app/shared-components/value-box/value-box.component.ts
  131. 1 1
      src/assets/icons/UIIcons/cross.svg
  132. 1 0
      src/assets/icons/UIIcons/lock.svg
  133. 1 1
      src/assets/icons/UIIcons/remove.svg
  134. BIN
      src/assets/images/spellcards_coming_soon.jpeg
  135. BIN
      src/assets/images/spells/backup.jpg
  136. BIN
      src/assets/images/spells/bladeWard.jpg
  137. BIN
      src/assets/images/spells/boomingBlade.jpg
  138. BIN
      src/assets/images/spells/chillTouch.jpg
  139. BIN
      src/assets/images/spells/controlFlames.jpg
  140. BIN
      src/assets/images/spells/createBonfire.jpg
  141. BIN
      src/assets/images/spells/druidCraft.jpg
  142. BIN
      src/assets/images/spells/friends.jpg
  143. BIN
      src/assets/images/spells/frostbite.jpg
  144. BIN
      src/assets/images/spells/greenFlameBlade.jpg
  145. BIN
      src/assets/images/spells/infestation.jpg
  146. BIN
      src/assets/images/spells/light.jpg
  147. BIN
      src/assets/images/spells/lightningLure.jpg
  148. BIN
      src/assets/images/spells/magicStone.jpg
  149. BIN
      src/assets/images/spells/mending.jpg
  150. BIN
      src/assets/images/spells/message.jpg
  151. BIN
      src/assets/images/spells/mindSilver.jpg
  152. BIN
      src/assets/images/spells/minorIllusion.jpg
  153. BIN
      src/assets/images/spells/moldEarth.jpg
  154. BIN
      src/assets/images/spells/poisonSpray.jpg
  155. BIN
      src/assets/images/spells/primalSavagery.jfif
  156. BIN
      src/assets/images/spells/produceFlame.jpg
  157. BIN
      src/assets/images/spells/rayOfFrost.jpg
  158. BIN
      src/assets/images/spells/sacredFlame.jpg
  159. BIN
      src/assets/images/spells/shapeWater.jfif
  160. BIN
      src/assets/images/spells/sprayPoison.jfif
  161. BIN
      src/assets/images/spells/swordBurst.jfif
  162. BIN
      src/assets/images/spells/thornWhip.jpg
  163. BIN
      src/assets/images/spells/thunderClap.jpg
  164. BIN
      src/assets/images/spells/viciousMockery.jpg
  165. 20 0
      src/button-styles.scss
  166. 251 0
      src/helpers.scss
  167. 4 3
      src/interfaces/spell.ts
  168. 2 0
      src/interfaces/weapon.ts
  169. 0 1
      src/services/species/species.service.ts
  170. 1651 46
      src/services/spells/spells.service.ts
  171. 1 1
      src/services/translator/translator.service.ts
  172. 79 283
      src/styles.scss

+ 3634 - 0
.nx/cache/d/daemon.log

@@ -463690,3 +463690,3637 @@ To fix this, set a unique name for each project in a project.json inside the pro
     at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
 [NX Daemon Server] - 2024-01-28T20:51:02.276Z - Time taken for 'hash changed files from watcher' 0.937999963760376ms
 [NX Daemon Server] - 2024-01-28T20:51:02.277Z - Done responding to the client null
+[NX Daemon Server] - 2024-01-30T06:21:29.501Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-01-30T06:21:29.505Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-01-30T06:21:29.513Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-30T06:21:29.516Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-01-30T06:21:29.516Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-30T06:21:29.519Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-01-30T06:21:30.705Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-01-30T06:21:30.705Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-01-30T06:21:30.707Z - Time taken for 'hash changed files from watcher' 347.774299999699ms
+[NX Daemon Server] - 2024-01-30T06:21:30.708Z - Done responding to the client null
+[NX Daemon Server] - 2024-01-31T07:00:53.402Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-01-31T07:00:53.405Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-01-31T07:00:53.413Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T07:00:53.415Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-01-31T07:00:53.416Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T07:00:53.418Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-01-31T07:00:54.596Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-01-31T07:00:54.596Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-01-31T07:00:54.598Z - Time taken for 'hash changed files from watcher' 352.46170000731945ms
+[NX Daemon Server] - 2024-01-31T07:00:54.598Z - Done responding to the client null
+[NX Daemon Server] - 2024-01-31T08:50:07.369Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-01-31T08:50:07.382Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-01-31T08:50:07.384Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T08:50:07.387Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-01-31T08:50:07.387Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T08:50:07.389Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-01-31T08:50:07.473Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-01-31T08:50:07.473Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-01-31T08:50:07.475Z - Time taken for 'hash changed files from watcher' 11.43639999628067ms
+[NX Daemon Server] - 2024-01-31T08:50:07.475Z - Done responding to the client null
+[NX Daemon Server] - 2024-01-31T08:50:09.033Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-01-31T08:50:09.037Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-01-31T08:50:09.047Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T08:50:09.049Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-01-31T08:50:09.049Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T08:50:09.050Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-01-31T08:50:09.115Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-01-31T08:50:09.115Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-01-31T08:50:09.117Z - Time taken for 'hash changed files from watcher' 11.78439998626709ms
+[NX Daemon Server] - 2024-01-31T08:50:09.118Z - Done responding to the client null
+[NX Daemon Server] - 2024-01-31T09:57:36.642Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-01-31T09:57:36.657Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-01-31T09:57:36.659Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T09:57:36.662Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-01-31T09:57:36.665Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T09:57:36.668Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-01-31T09:57:36.862Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-01-31T09:57:36.862Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-01-31T09:57:36.867Z - Time taken for 'hash changed files from watcher' 24.913799986243248ms
+[NX Daemon Server] - 2024-01-31T09:57:36.868Z - Done responding to the client null
+[NX Daemon Server] - 2024-01-31T15:12:32.503Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-01-31T15:12:32.507Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-01-31T15:12:32.508Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T15:12:32.509Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-01-31T15:12:32.510Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-01-31T15:12:32.513Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-01-31T15:12:33.700Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-01-31T15:12:33.701Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-01-31T15:12:33.702Z - Time taken for 'hash changed files from watcher' 335.5688000023365ms
+[NX Daemon Server] - 2024-01-31T15:12:33.703Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-02T08:44:45.102Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-02T08:44:45.110Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-02T08:44:45.125Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-02T08:44:45.130Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-02T08:44:45.130Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-02T08:44:45.135Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-02T08:44:47.103Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-02T08:44:47.103Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-02T08:44:47.106Z - Time taken for 'hash changed files from watcher' 550.1582000255585ms
+[NX Daemon Server] - 2024-02-02T08:44:47.107Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-02T17:44:42.168Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-02T17:44:42.172Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-02T17:44:42.173Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-02T17:44:42.174Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-02T17:44:42.175Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-02T17:44:42.177Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-02T17:44:43.344Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-02T17:44:43.345Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-02T17:44:43.346Z - Time taken for 'hash changed files from watcher' 368.2871000000014ms
+[NX Daemon Server] - 2024-02-02T17:44:43.346Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-03T10:39:45.185Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-03T10:39:45.187Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-03T10:39:45.194Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-03T10:39:45.195Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-03T10:39:45.195Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-03T10:39:45.197Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-03T10:39:45.838Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-03T10:39:45.838Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-03T10:39:45.839Z - Time taken for 'hash changed files from watcher' 15.241700001060963ms
+[NX Daemon Server] - 2024-02-03T10:39:45.839Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-03T13:07:16.014Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-03T13:07:16.031Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-03T13:07:16.031Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-03T13:07:16.032Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-03T13:07:16.032Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-03T13:07:16.034Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-03T13:07:18.022Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-03T13:07:18.022Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-03T13:07:18.023Z - Time taken for 'hash changed files from watcher' 583.068599998951ms
+[NX Daemon Server] - 2024-02-03T13:07:18.023Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-06T09:02:25.233Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-06T09:02:25.241Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-06T09:02:25.242Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-06T09:02:25.243Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-06T09:02:25.243Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-06T09:02:25.248Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-06T09:02:26.371Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-06T09:02:26.371Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-06T09:02:26.371Z - Time taken for 'hash changed files from watcher' 350.1765000000596ms
+[NX Daemon Server] - 2024-02-06T09:02:26.371Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T06:46:39.981Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T06:46:39.984Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T06:46:39.985Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T06:46:39.986Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-09T06:46:39.986Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T06:46:39.988Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T06:46:41.095Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T06:46:41.095Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T06:46:41.096Z - Time taken for 'hash changed files from watcher' 317.18299999833107ms
+[NX Daemon Server] - 2024-02-09T06:46:41.096Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T06:57:42.239Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T06:57:42.243Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T06:57:42.250Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T06:57:42.251Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T06:57:42.252Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T06:57:42.254Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T06:57:42.341Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T06:57:42.341Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T06:57:42.341Z - Time taken for 'hash changed files from watcher' 27.981699995696545ms
+[NX Daemon Server] - 2024-02-09T06:57:42.341Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:21:11.644Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:21:11.648Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:21:11.648Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:21:11.649Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-09T10:21:11.649Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:21:11.650Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:21:12.234Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:12.234Z - [REQUEST]: 
+[NX Daemon Server] - 2024-02-09T10:21:12.234Z - [REQUEST]: 
+[NX Daemon Server] - 2024-02-09T10:21:13.164Z - [REQUEST]: Responding to the client. project-graph
+[NX Daemon Server] - 2024-02-09T10:21:13.165Z - Time taken for 'total for creating and serializing project graph' 1513.6908999979496ms
+[NX Daemon Server] - 2024-02-09T10:21:13.165Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:13.166Z - [WATCHER]: 0 file(s) created or restored, 2 file(s) modified, 0 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:13.166Z - Done responding to the client project-graph
+[NX Daemon Server] - 2024-02-09T10:21:13.167Z - Handled REQUEST_PROJECT_GRAPH. Handling time: 1514. Response time: 3.
+[NX Daemon Server] - 2024-02-09T10:21:13.169Z - [REQUEST]: Responding to the client. handleRequestFileData
+[NX Daemon Server] - 2024-02-09T10:21:13.169Z - Done responding to the client handleRequestFileData
+[NX Daemon Server] - 2024-02-09T10:21:13.169Z - Handled REQUEST_FILE_DATA. Handling time: 0. Response time: 0.
+[NX Daemon Server] - 2024-02-09T10:21:13.172Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:21:13.208Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:13.208Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:13.291Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:13.291Z - [REQUEST]: .nx/cache/lockfile.hash,.nx/cache/parsed-lock-file.json,.nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:13.291Z - [REQUEST]: .nx/cache/project-graph.json~5bbc751f,.nx/cache/file-map.json~5bbc751f
+[NX Daemon Server] - 2024-02-09T10:21:13.366Z - Time taken for 'hash changed files from watcher' 12.168099999427795ms
+[NX Daemon Server] - 2024-02-09T10:21:13.413Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:13.414Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:13.539Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:13.539Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:13.539Z - [REQUEST]: .nx/cache/project-graph.json~343a6d56,.nx/cache/file-map.json~343a6d56
+[NX Daemon Server] - 2024-02-09T10:21:13.612Z - Time taken for 'hash changed files from watcher' 7.710999995470047ms
+[NX Daemon Server] - 2024-02-09T10:21:13.666Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:13.667Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:13.793Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:13.793Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:13.793Z - [REQUEST]: .nx/cache/project-graph.json~6656a213,.nx/cache/file-map.json~6656a213
+[NX Daemon Server] - 2024-02-09T10:21:13.862Z - Time taken for 'hash changed files from watcher' 7.832699999213219ms
+[NX Daemon Server] - 2024-02-09T10:21:13.918Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:13.919Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:14.044Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:14.044Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:14.044Z - [REQUEST]: .nx/cache/file-map.json~a6f99fe9,.nx/cache/project-graph.json~a6f99fe9
+[NX Daemon Server] - 2024-02-09T10:21:14.115Z - Time taken for 'hash changed files from watcher' 6.279899999499321ms
+[NX Daemon Server] - 2024-02-09T10:21:14.171Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:14.172Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:14.297Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:14.297Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:14.297Z - [REQUEST]: .nx/cache/file-map.json~648d7b48,.nx/cache/project-graph.json~648d7b48
+[NX Daemon Server] - 2024-02-09T10:21:14.371Z - Time taken for 'hash changed files from watcher' 7.227600000798702ms
+[NX Daemon Server] - 2024-02-09T10:21:14.422Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:14.423Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:14.551Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:14.551Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:14.551Z - [REQUEST]: .nx/cache/project-graph.json~51da5527,.nx/cache/file-map.json~51da5527
+[NX Daemon Server] - 2024-02-09T10:21:14.616Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:21:14.616Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-09T10:21:14.617Z - Time taken for 'hash changed files from watcher' 11.801500000059605ms
+[NX Daemon Server] - 2024-02-09T10:21:14.617Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:21:14.618Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:21:14.618Z - [REQUEST]: Responding to the client. project-graph
+[NX Daemon Server] - 2024-02-09T10:21:14.619Z - Time taken for 'total for creating and serializing project graph' 0.12650000303983688ms
+[NX Daemon Server] - 2024-02-09T10:21:14.619Z - Done responding to the client project-graph
+[NX Daemon Server] - 2024-02-09T10:21:14.619Z - Handled REQUEST_PROJECT_GRAPH. Handling time: 0. Response time: 1.
+[NX Daemon Server] - 2024-02-09T10:21:14.658Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:21:14.658Z - [REQUEST]: Responding to the client. project-graph
+[NX Daemon Server] - 2024-02-09T10:21:14.659Z - Time taken for 'total for creating and serializing project graph' 0.16180000454187393ms
+[NX Daemon Server] - 2024-02-09T10:21:14.660Z - Done responding to the client project-graph
+[NX Daemon Server] - 2024-02-09T10:21:14.660Z - Handled REQUEST_PROJECT_GRAPH. Handling time: 0. Response time: 2.
+[NX Daemon Server] - 2024-02-09T10:21:14.665Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:21:14.666Z - [REQUEST]: Responding to the client. project-graph
+[NX Daemon Server] - 2024-02-09T10:21:14.667Z - Time taken for 'total for creating and serializing project graph' 0.12489999830722809ms
+[NX Daemon Server] - 2024-02-09T10:21:14.667Z - Done responding to the client project-graph
+[NX Daemon Server] - 2024-02-09T10:21:14.667Z - Handled REQUEST_PROJECT_GRAPH. Handling time: 1. Response time: 1.
+[NX Daemon Server] - 2024-02-09T10:21:14.677Z - [WATCHER]: 10 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:14.677Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:14.710Z - [REQUEST]: Responding to the client. handleRequestFileData
+[NX Daemon Server] - 2024-02-09T10:21:14.710Z - Done responding to the client handleRequestFileData
+[NX Daemon Server] - 2024-02-09T10:21:14.710Z - Handled REQUEST_FILE_DATA. Handling time: 1. Response time: 0.
+[NX Daemon Server] - 2024-02-09T10:21:14.756Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:21:15.239Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:15.239Z - [REQUEST]: .nx/cache/nx-console-project-graph/static/favicon.ico,.nx/cache/project-graph.json,.nx/cache/file-map.json,.nx/cache/nx-console-project-graph/static/3rdpartylicenses.txt,.nx/cache/nx-console-project-graph/static/runtime.js,.nx/cache/nx-console-project-graph/static/polyfills.js,.nx/cache/nx-console-project-graph/static/environment.js,.nx/cache/nx-console-project-graph/static/styles.js,.nx/cache/nx-console-project-graph/static/styles.css,.nx/cache/nx-console-project-graph/static/main.js
+[NX Daemon Server] - 2024-02-09T10:21:15.239Z - [REQUEST]: .nx/cache/file-map.json~253cbc20,.nx/cache/project-graph.json~253cbc20
+[NX Daemon Server] - 2024-02-09T10:21:15.307Z - Time taken for 'hash changed files from watcher' 443.6697000041604ms
+[NX Daemon Server] - 2024-02-09T10:21:15.357Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:15.358Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:15.497Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:15.498Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:15.498Z - [REQUEST]: .nx/cache/project-graph.json~9701c3c7,.nx/cache/file-map.json~9701c3c7
+[NX Daemon Server] - 2024-02-09T10:21:15.566Z - Time taken for 'hash changed files from watcher' 22.51979999989271ms
+[NX Daemon Server] - 2024-02-09T10:21:15.618Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:15.622Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:15.757Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:15.757Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:15.757Z - [REQUEST]: .nx/cache/project-graph.json~4c0131fc,.nx/cache/file-map.json~4c0131fc
+[NX Daemon Server] - 2024-02-09T10:21:15.826Z - Time taken for 'hash changed files from watcher' 20.502599999308586ms
+[NX Daemon Server] - 2024-02-09T10:21:15.885Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:15.886Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:16.005Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:16.005Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:16.005Z - [REQUEST]: .nx/cache/file-map.json~c2a11433,.nx/cache/project-graph.json~c2a11433
+[NX Daemon Server] - 2024-02-09T10:21:16.086Z - Time taken for 'hash changed files from watcher' 7.091899998486042ms
+[NX Daemon Server] - 2024-02-09T10:21:16.146Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:16.147Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:16.271Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:16.271Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:16.271Z - [REQUEST]: .nx/cache/file-map.json~33c4777a,.nx/cache/project-graph.json~33c4777a
+[NX Daemon Server] - 2024-02-09T10:21:16.338Z - Time taken for 'hash changed files from watcher' 6.478999994695187ms
+[NX Daemon Server] - 2024-02-09T10:21:16.385Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:16.386Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:16.512Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:16.512Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:16.512Z - [REQUEST]: .nx/cache/file-map.json~a4a176ab,.nx/cache/project-graph.json~a4a176ab
+[NX Daemon Server] - 2024-02-09T10:21:16.594Z - Time taken for 'hash changed files from watcher' 8.576400004327297ms
+[NX Daemon Server] - 2024-02-09T10:21:16.653Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:16.653Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:16.785Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:16.785Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:16.785Z - [REQUEST]: .nx/cache/project-graph.json~c5808ea5,.nx/cache/file-map.json~c5808ea5
+[NX Daemon Server] - 2024-02-09T10:21:16.854Z - Time taken for 'hash changed files from watcher' 16.652900002896786ms
+[NX Daemon Server] - 2024-02-09T10:21:16.915Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:16.918Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:17.041Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:17.041Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:17.041Z - [REQUEST]: .nx/cache/file-map.json~fdc69b39,.nx/cache/project-graph.json~fdc69b39
+[NX Daemon Server] - 2024-02-09T10:21:17.110Z - Time taken for 'hash changed files from watcher' 10.042400002479553ms
+[NX Daemon Server] - 2024-02-09T10:21:17.167Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:17.169Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:17.292Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:17.292Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:17.292Z - [REQUEST]: .nx/cache/file-map.json~f96c2d82,.nx/cache/project-graph.json~f96c2d82
+[NX Daemon Server] - 2024-02-09T10:21:17.363Z - Time taken for 'hash changed files from watcher' 6.448999993503094ms
+[NX Daemon Server] - 2024-02-09T10:21:17.421Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:17.421Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:17.554Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:17.554Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:17.554Z - [REQUEST]: .nx/cache/file-map.json~6da572d2,.nx/cache/project-graph.json~6da572d2
+[NX Daemon Server] - 2024-02-09T10:21:17.622Z - Time taken for 'hash changed files from watcher' 14.388000003993511ms
+[NX Daemon Server] - 2024-02-09T10:21:17.671Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:17.671Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:17.801Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:17.801Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:17.801Z - [REQUEST]: .nx/cache/project-graph.json~db6d129f,.nx/cache/file-map.json~db6d129f
+[NX Daemon Server] - 2024-02-09T10:21:17.882Z - Time taken for 'hash changed files from watcher' 12.701899997889996ms
+[NX Daemon Server] - 2024-02-09T10:21:17.919Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:17.920Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:18.050Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:18.050Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:18.050Z - [REQUEST]: .nx/cache/file-map.json~3bef1f1a,.nx/cache/project-graph.json~3bef1f1a
+[NX Daemon Server] - 2024-02-09T10:21:18.115Z - Time taken for 'hash changed files from watcher' 13.8969000056386ms
+[NX Daemon Server] - 2024-02-09T10:21:18.165Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:18.166Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:18.297Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:18.297Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:18.297Z - [REQUEST]: .nx/cache/project-graph.json~76b40f2c,.nx/cache/file-map.json~76b40f2c
+[NX Daemon Server] - 2024-02-09T10:21:18.361Z - Time taken for 'hash changed files from watcher' 10.647399999201298ms
+[NX Daemon Server] - 2024-02-09T10:21:18.415Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:18.416Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:18.548Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:18.548Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:18.548Z - [REQUEST]: .nx/cache/file-map.json~4fb24005,.nx/cache/project-graph.json~4fb24005
+[NX Daemon Server] - 2024-02-09T10:21:18.617Z - Time taken for 'hash changed files from watcher' 13.825900003314018ms
+[NX Daemon Server] - 2024-02-09T10:21:18.662Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:18.664Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:18.786Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:18.786Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:18.786Z - [REQUEST]: .nx/cache/project-graph.json~f83ab182,.nx/cache/file-map.json~f83ab182
+[NX Daemon Server] - 2024-02-09T10:21:18.855Z - Time taken for 'hash changed files from watcher' 6.317400000989437ms
+[NX Daemon Server] - 2024-02-09T10:21:18.915Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:18.915Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:19.050Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:19.050Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:19.050Z - [REQUEST]: .nx/cache/file-map.json~73227789,.nx/cache/project-graph.json~73227789
+[NX Daemon Server] - 2024-02-09T10:21:19.122Z - Time taken for 'hash changed files from watcher' 15.334700003266335ms
+[NX Daemon Server] - 2024-02-09T10:21:19.175Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:19.178Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:19.304Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:19.304Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:19.304Z - [REQUEST]: .nx/cache/file-map.json~ad29544c,.nx/cache/project-graph.json~ad29544c
+[NX Daemon Server] - 2024-02-09T10:21:19.374Z - Time taken for 'hash changed files from watcher' 12.80859999358654ms
+[NX Daemon Server] - 2024-02-09T10:21:19.425Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:19.425Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:19.554Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:19.554Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:19.554Z - [REQUEST]: .nx/cache/project-graph.json~85d716b7,.nx/cache/file-map.json~85d716b7
+[NX Daemon Server] - 2024-02-09T10:21:19.618Z - Time taken for 'hash changed files from watcher' 10.827200002968311ms
+[NX Daemon Server] - 2024-02-09T10:21:19.664Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:19.666Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:19.801Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:19.801Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:19.801Z - [REQUEST]: .nx/cache/project-graph.json~64249099,.nx/cache/file-map.json~64249099
+[NX Daemon Server] - 2024-02-09T10:21:19.873Z - Time taken for 'hash changed files from watcher' 17.910800002515316ms
+[NX Daemon Server] - 2024-02-09T10:21:19.928Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:19.930Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:20.064Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:20.065Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:20.065Z - [REQUEST]: .nx/cache/project-graph.json~60d10b02,.nx/cache/file-map.json~60d10b02
+[NX Daemon Server] - 2024-02-09T10:21:20.147Z - Time taken for 'hash changed files from watcher' 11.501199997961521ms
+[NX Daemon Server] - 2024-02-09T10:21:20.198Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:20.198Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:20.329Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:20.329Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:20.329Z - [REQUEST]: .nx/cache/file-map.json~9109fd2b,.nx/cache/project-graph.json~9109fd2b
+[NX Daemon Server] - 2024-02-09T10:21:20.393Z - Time taken for 'hash changed files from watcher' 9.595300003886223ms
+[NX Daemon Server] - 2024-02-09T10:21:20.452Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:20.452Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:20.591Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:20.591Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:20.591Z - [REQUEST]: .nx/cache/file-map.json~eb99d034,.nx/cache/project-graph.json~eb99d034
+[NX Daemon Server] - 2024-02-09T10:21:20.663Z - Time taken for 'hash changed files from watcher' 17.88679999858141ms
+[NX Daemon Server] - 2024-02-09T10:21:20.720Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:20.721Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:20.850Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:20.850Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:20.850Z - [REQUEST]: .nx/cache/project-graph.json~fe718b09,.nx/cache/file-map.json~fe718b09
+[NX Daemon Server] - 2024-02-09T10:21:20.916Z - Time taken for 'hash changed files from watcher' 14.363300003111362ms
+[NX Daemon Server] - 2024-02-09T10:21:20.965Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:20.968Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:21.102Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:21.102Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:21.102Z - [REQUEST]: .nx/cache/file-map.json~581a589b,.nx/cache/project-graph.json~581a589b
+[NX Daemon Server] - 2024-02-09T10:21:21.172Z - Time taken for 'hash changed files from watcher' 16.6216000020504ms
+[NX Daemon Server] - 2024-02-09T10:21:21.230Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:21.230Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:21.357Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:21.357Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:21.357Z - [REQUEST]: .nx/cache/file-map.json~4fbb75d3,.nx/cache/project-graph.json~4fbb75d3
+[NX Daemon Server] - 2024-02-09T10:21:21.431Z - Time taken for 'hash changed files from watcher' 12.215000003576279ms
+[NX Daemon Server] - 2024-02-09T10:21:21.480Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:21.480Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:21.611Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:21.611Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:21.611Z - [REQUEST]: .nx/cache/file-map.json~6fa396f0,.nx/cache/project-graph.json~6fa396f0
+[NX Daemon Server] - 2024-02-09T10:21:21.675Z - Time taken for 'hash changed files from watcher' 13.209700003266335ms
+[NX Daemon Server] - 2024-02-09T10:21:21.731Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:21.732Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:21.864Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:21.864Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:21.864Z - [REQUEST]: .nx/cache/project-graph.json~df0249fe,.nx/cache/file-map.json~df0249fe
+[NX Daemon Server] - 2024-02-09T10:21:21.939Z - Time taken for 'hash changed files from watcher' 13.837399996817112ms
+[NX Daemon Server] - 2024-02-09T10:21:21.993Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:21.997Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:22.123Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:22.123Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:22.123Z - [REQUEST]: .nx/cache/project-graph.json~e523deab,.nx/cache/file-map.json~e523deab
+[NX Daemon Server] - 2024-02-09T10:21:22.188Z - Time taken for 'hash changed files from watcher' 10.164200000464916ms
+[NX Daemon Server] - 2024-02-09T10:21:22.240Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:22.242Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:22.371Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:22.371Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:22.371Z - [REQUEST]: .nx/cache/project-graph.json~fd558d8e,.nx/cache/file-map.json~fd558d8e
+[NX Daemon Server] - 2024-02-09T10:21:22.438Z - Time taken for 'hash changed files from watcher' 12.391999997198582ms
+[NX Daemon Server] - 2024-02-09T10:21:22.493Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:22.493Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:22.630Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:22.630Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:22.630Z - [REQUEST]: .nx/cache/project-graph.json~7aabf8c5,.nx/cache/file-map.json~7aabf8c5
+[NX Daemon Server] - 2024-02-09T10:21:22.696Z - Time taken for 'hash changed files from watcher' 14.575300000607967ms
+[NX Daemon Server] - 2024-02-09T10:21:22.742Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:22.745Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:22.885Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:22.885Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:22.885Z - [REQUEST]: .nx/cache/project-graph.json~09b5031c,.nx/cache/file-map.json~09b5031c
+[NX Daemon Server] - 2024-02-09T10:21:22.954Z - Time taken for 'hash changed files from watcher' 19.319699995219707ms
+[NX Daemon Server] - 2024-02-09T10:21:23.010Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:23.011Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:23.149Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:23.149Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:23.149Z - [REQUEST]: .nx/cache/project-graph.json~c5c2256d,.nx/cache/file-map.json~c5c2256d
+[NX Daemon Server] - 2024-02-09T10:21:23.221Z - Time taken for 'hash changed files from watcher' 21.127100005745888ms
+[NX Daemon Server] - 2024-02-09T10:21:23.276Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:23.276Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:23.422Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:23.422Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:23.422Z - [REQUEST]: .nx/cache/file-map.json~9f4748a6,.nx/cache/project-graph.json~9f4748a6
+[NX Daemon Server] - 2024-02-09T10:21:23.525Z - Time taken for 'hash changed files from watcher' 16.897100001573563ms
+[NX Daemon Server] - 2024-02-09T10:21:23.577Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:23.577Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:23.705Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:23.705Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:23.705Z - [REQUEST]: .nx/cache/file-map.json~a0bfedf4,.nx/cache/project-graph.json~a0bfedf4
+[NX Daemon Server] - 2024-02-09T10:21:23.768Z - Time taken for 'hash changed files from watcher' 15.795100003480911ms
+[NX Daemon Server] - 2024-02-09T10:21:23.824Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:23.826Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:23.963Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:23.963Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:23.963Z - [REQUEST]: .nx/cache/project-graph.json~acd34326,.nx/cache/file-map.json~acd34326
+[NX Daemon Server] - 2024-02-09T10:21:24.030Z - Time taken for 'hash changed files from watcher' 16.366200000047684ms
+[NX Daemon Server] - 2024-02-09T10:21:24.078Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:24.079Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:24.204Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:24.204Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:24.204Z - [REQUEST]: .nx/cache/project-graph.json~cc9da781,.nx/cache/file-map.json~cc9da781
+[NX Daemon Server] - 2024-02-09T10:21:24.272Z - Time taken for 'hash changed files from watcher' 12.429899998009205ms
+[NX Daemon Server] - 2024-02-09T10:21:24.320Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:24.320Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:24.451Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:24.451Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:24.451Z - [REQUEST]: .nx/cache/project-graph.json~49ff3a53,.nx/cache/file-map.json~49ff3a53
+[NX Daemon Server] - 2024-02-09T10:21:24.520Z - Time taken for 'hash changed files from watcher' 12.513699993491173ms
+[NX Daemon Server] - 2024-02-09T10:21:24.569Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:24.571Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:24.699Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:24.699Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:24.699Z - [REQUEST]: .nx/cache/file-map.json~7db705f1,.nx/cache/project-graph.json~7db705f1
+[NX Daemon Server] - 2024-02-09T10:21:24.767Z - Time taken for 'hash changed files from watcher' 10.981700003147125ms
+[NX Daemon Server] - 2024-02-09T10:21:24.823Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:24.823Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:24.952Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:24.952Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:24.952Z - [REQUEST]: .nx/cache/file-map.json~a135172a,.nx/cache/project-graph.json~a135172a
+[NX Daemon Server] - 2024-02-09T10:21:25.020Z - Time taken for 'hash changed files from watcher' 10.49270000308752ms
+[NX Daemon Server] - 2024-02-09T10:21:25.075Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:25.075Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:25.202Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:25.202Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:25.202Z - [REQUEST]: .nx/cache/file-map.json~aade9aec,.nx/cache/project-graph.json~aade9aec
+[NX Daemon Server] - 2024-02-09T10:21:25.265Z - Time taken for 'hash changed files from watcher' 11.810599997639656ms
+[NX Daemon Server] - 2024-02-09T10:21:25.317Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:25.318Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:25.445Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:25.445Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:25.445Z - [REQUEST]: .nx/cache/project-graph.json~f95349e5,.nx/cache/file-map.json~f95349e5
+[NX Daemon Server] - 2024-02-09T10:21:25.517Z - Time taken for 'hash changed files from watcher' 11.736900001764297ms
+[NX Daemon Server] - 2024-02-09T10:21:25.570Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:25.571Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:25.699Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:25.699Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:25.699Z - [REQUEST]: .nx/cache/file-map.json~483bc837,.nx/cache/project-graph.json~483bc837
+[NX Daemon Server] - 2024-02-09T10:21:25.775Z - Time taken for 'hash changed files from watcher' 8.278599999845028ms
+[NX Daemon Server] - 2024-02-09T10:21:25.834Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:25.834Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:25.963Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:25.964Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:25.964Z - [REQUEST]: .nx/cache/project-graph.json~9af20e57,.nx/cache/file-map.json~9af20e57
+[NX Daemon Server] - 2024-02-09T10:21:26.063Z - Time taken for 'hash changed files from watcher' 10.386100001633167ms
+[NX Daemon Server] - 2024-02-09T10:21:26.118Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:26.118Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:26.245Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:26.246Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:26.246Z - [REQUEST]: .nx/cache/file-map.json~125b4381,.nx/cache/project-graph.json~125b4381
+[NX Daemon Server] - 2024-02-09T10:21:26.314Z - Time taken for 'hash changed files from watcher' 11.504000000655651ms
+[NX Daemon Server] - 2024-02-09T10:21:26.363Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:26.365Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:26.503Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:26.503Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:26.503Z - [REQUEST]: .nx/cache/project-graph.json~73d87bf6,.nx/cache/file-map.json~73d87bf6
+[NX Daemon Server] - 2024-02-09T10:21:26.578Z - Time taken for 'hash changed files from watcher' 20.660799995064735ms
+[NX Daemon Server] - 2024-02-09T10:21:26.628Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:26.629Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:26.761Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:26.761Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:26.761Z - [REQUEST]: .nx/cache/project-graph.json~b4e2b3aa,.nx/cache/file-map.json~b4e2b3aa
+[NX Daemon Server] - 2024-02-09T10:21:26.826Z - Time taken for 'hash changed files from watcher' 13.309300005435944ms
+[NX Daemon Server] - 2024-02-09T10:21:26.884Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:26.884Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:27.017Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:27.017Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:27.017Z - [REQUEST]: .nx/cache/project-graph.json~3a628ffa,.nx/cache/file-map.json~3a628ffa
+[NX Daemon Server] - 2024-02-09T10:21:27.086Z - Time taken for 'hash changed files from watcher' 18.05240000039339ms
+[NX Daemon Server] - 2024-02-09T10:21:27.133Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:27.137Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:27.258Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:27.258Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:27.258Z - [REQUEST]: .nx/cache/project-graph.json~afc77242,.nx/cache/file-map.json~afc77242
+[NX Daemon Server] - 2024-02-09T10:21:27.323Z - Time taken for 'hash changed files from watcher' 10.177000001072884ms
+[NX Daemon Server] - 2024-02-09T10:21:27.380Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:27.382Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:27.509Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:27.509Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:27.509Z - [REQUEST]: .nx/cache/project-graph.json~96d1e406,.nx/cache/file-map.json~96d1e406
+[NX Daemon Server] - 2024-02-09T10:21:27.569Z - Time taken for 'hash changed files from watcher' 11.493700005114079ms
+[NX Daemon Server] - 2024-02-09T10:21:27.619Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:27.620Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:27.746Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:27.746Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:27.746Z - [REQUEST]: .nx/cache/file-map.json~531696d4,.nx/cache/project-graph.json~531696d4
+[NX Daemon Server] - 2024-02-09T10:21:27.823Z - Time taken for 'hash changed files from watcher' 13.33890000730753ms
+[NX Daemon Server] - 2024-02-09T10:21:27.868Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:27.871Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:28.001Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:28.001Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:28.001Z - [REQUEST]: .nx/cache/file-map.json~b24504ef,.nx/cache/project-graph.json~b24504ef
+[NX Daemon Server] - 2024-02-09T10:21:28.071Z - Time taken for 'hash changed files from watcher' 12.983499996364117ms
+[NX Daemon Server] - 2024-02-09T10:21:28.117Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:28.120Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:28.244Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:28.245Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:28.245Z - [REQUEST]: .nx/cache/file-map.json~460b254e,.nx/cache/project-graph.json~460b254e
+[NX Daemon Server] - 2024-02-09T10:21:28.309Z - Time taken for 'hash changed files from watcher' 10.986599996685982ms
+[NX Daemon Server] - 2024-02-09T10:21:28.370Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:28.371Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:28.497Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:28.497Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:28.497Z - [REQUEST]: .nx/cache/file-map.json~1546c9c2,.nx/cache/project-graph.json~1546c9c2
+[NX Daemon Server] - 2024-02-09T10:21:28.562Z - Time taken for 'hash changed files from watcher' 10.999099999666214ms
+[NX Daemon Server] - 2024-02-09T10:21:28.615Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:28.618Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:28.741Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:28.741Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:28.741Z - [REQUEST]: .nx/cache/project-graph.json~c029e461,.nx/cache/file-map.json~c029e461
+[NX Daemon Server] - 2024-02-09T10:21:28.806Z - Time taken for 'hash changed files from watcher' 10.447000004351139ms
+[NX Daemon Server] - 2024-02-09T10:21:28.854Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:28.857Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:28.987Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:28.987Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:28.987Z - [REQUEST]: .nx/cache/project-graph.json~7431e401,.nx/cache/file-map.json~7431e401
+[NX Daemon Server] - 2024-02-09T10:21:29.060Z - Time taken for 'hash changed files from watcher' 14.151799999177456ms
+[NX Daemon Server] - 2024-02-09T10:21:29.120Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:29.121Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:29.249Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:29.249Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:29.249Z - [REQUEST]: .nx/cache/project-graph.json~b1b2b00b,.nx/cache/file-map.json~b1b2b00b
+[NX Daemon Server] - 2024-02-09T10:21:29.319Z - Time taken for 'hash changed files from watcher' 14.350000001490116ms
+[NX Daemon Server] - 2024-02-09T10:21:29.370Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:29.370Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:29.493Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:29.493Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:29.493Z - [REQUEST]: .nx/cache/project-graph.json~147e63a3,.nx/cache/file-map.json~147e63a3
+[NX Daemon Server] - 2024-02-09T10:21:29.562Z - Time taken for 'hash changed files from watcher' 10.709699995815754ms
+[NX Daemon Server] - 2024-02-09T10:21:29.614Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:29.618Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:29.737Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:29.737Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:29.737Z - [REQUEST]: .nx/cache/project-graph.json~db0f60fd,.nx/cache/file-map.json~db0f60fd
+[NX Daemon Server] - 2024-02-09T10:21:29.805Z - Time taken for 'hash changed files from watcher' 7.613299995660782ms
+[NX Daemon Server] - 2024-02-09T10:21:29.854Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:29.855Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:29.988Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:29.988Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:29.988Z - [REQUEST]: .nx/cache/project-graph.json~d07fc83e,.nx/cache/file-map.json~d07fc83e
+[NX Daemon Server] - 2024-02-09T10:21:30.052Z - Time taken for 'hash changed files from watcher' 15.473399996757507ms
+[NX Daemon Server] - 2024-02-09T10:21:30.111Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:30.111Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:30.237Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:30.237Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:30.237Z - [REQUEST]: .nx/cache/file-map.json~79324ae4,.nx/cache/project-graph.json~79324ae4
+[NX Daemon Server] - 2024-02-09T10:21:30.305Z - Time taken for 'hash changed files from watcher' 10.05969999730587ms
+[NX Daemon Server] - 2024-02-09T10:21:30.363Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:30.363Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:30.486Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:30.486Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:30.486Z - [REQUEST]: .nx/cache/file-map.json~d35f4cf4,.nx/cache/project-graph.json~d35f4cf4
+[NX Daemon Server] - 2024-02-09T10:21:30.544Z - Time taken for 'hash changed files from watcher' 7.047599993646145ms
+[NX Daemon Server] - 2024-02-09T10:21:30.597Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:30.598Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:30.725Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:30.725Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:30.725Z - [REQUEST]: .nx/cache/file-map.json~29324306,.nx/cache/project-graph.json~29324306
+[NX Daemon Server] - 2024-02-09T10:21:30.791Z - Time taken for 'hash changed files from watcher' 10.913699999451637ms
+[NX Daemon Server] - 2024-02-09T10:21:30.848Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:30.848Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:30.974Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:30.974Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:30.974Z - [REQUEST]: .nx/cache/project-graph.json~21d0c3b7,.nx/cache/file-map.json~21d0c3b7
+[NX Daemon Server] - 2024-02-09T10:21:31.040Z - Time taken for 'hash changed files from watcher' 10.069600000977516ms
+[NX Daemon Server] - 2024-02-09T10:21:31.097Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:31.097Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:31.231Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:31.231Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:31.231Z - [REQUEST]: .nx/cache/file-map.json~ff34cfef,.nx/cache/project-graph.json~ff34cfef
+[NX Daemon Server] - 2024-02-09T10:21:31.301Z - Time taken for 'hash changed files from watcher' 16.463599994778633ms
+[NX Daemon Server] - 2024-02-09T10:21:31.363Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:31.364Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:31.483Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:31.483Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:31.483Z - [REQUEST]: .nx/cache/project-graph.json~20c785fc,.nx/cache/file-map.json~20c785fc
+[NX Daemon Server] - 2024-02-09T10:21:31.549Z - Time taken for 'hash changed files from watcher' 6.679099999368191ms
+[NX Daemon Server] - 2024-02-09T10:21:31.597Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:31.597Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:31.719Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:31.719Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:31.719Z - [REQUEST]: .nx/cache/file-map.json~df038001,.nx/cache/project-graph.json~df038001
+[NX Daemon Server] - 2024-02-09T10:21:31.783Z - Time taken for 'hash changed files from watcher' 6.397399999201298ms
+[NX Daemon Server] - 2024-02-09T10:21:31.834Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:31.835Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:31.965Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:31.965Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:31.965Z - [REQUEST]: .nx/cache/project-graph.json~65fb4334,.nx/cache/file-map.json~65fb4334
+[NX Daemon Server] - 2024-02-09T10:21:32.032Z - Time taken for 'hash changed files from watcher' 12.939800001680851ms
+[NX Daemon Server] - 2024-02-09T10:21:32.083Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:32.085Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:32.212Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:32.212Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:32.212Z - [REQUEST]: .nx/cache/project-graph.json~cbf63ee2,.nx/cache/file-map.json~cbf63ee2
+[NX Daemon Server] - 2024-02-09T10:21:32.272Z - Time taken for 'hash changed files from watcher' 9.67119999974966ms
+[NX Daemon Server] - 2024-02-09T10:21:32.324Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:32.324Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:32.448Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:32.448Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:32.448Z - [REQUEST]: .nx/cache/file-map.json~a71bcc12,.nx/cache/project-graph.json~a71bcc12
+[NX Daemon Server] - 2024-02-09T10:21:32.513Z - Time taken for 'hash changed files from watcher' 10.308100000023842ms
+[NX Daemon Server] - 2024-02-09T10:21:32.576Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:32.577Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:32.697Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:32.697Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:32.697Z - [REQUEST]: .nx/cache/project-graph.json~398ad0aa,.nx/cache/file-map.json~398ad0aa
+[NX Daemon Server] - 2024-02-09T10:21:32.764Z - Time taken for 'hash changed files from watcher' 9.252500005066395ms
+[NX Daemon Server] - 2024-02-09T10:21:32.823Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:32.823Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:32.961Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:32.961Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:32.962Z - [REQUEST]: .nx/cache/project-graph.json~d4c20494,.nx/cache/file-map.json~d4c20494
+[NX Daemon Server] - 2024-02-09T10:21:33.021Z - Time taken for 'hash changed files from watcher' 16.861699998378754ms
+[NX Daemon Server] - 2024-02-09T10:21:33.075Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:33.078Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:33.205Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:33.205Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:33.205Z - [REQUEST]: .nx/cache/project-graph.json~a5064a90,.nx/cache/file-map.json~a5064a90
+[NX Daemon Server] - 2024-02-09T10:21:33.274Z - Time taken for 'hash changed files from watcher' 13.917599998414516ms
+[NX Daemon Server] - 2024-02-09T10:21:33.325Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:33.326Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:33.449Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:33.450Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:33.450Z - [REQUEST]: .nx/cache/project-graph.json~fdd17318,.nx/cache/file-map.json~fdd17318
+[NX Daemon Server] - 2024-02-09T10:21:33.518Z - Time taken for 'hash changed files from watcher' 7.358800001442432ms
+[NX Daemon Server] - 2024-02-09T10:21:33.573Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:33.577Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:33.697Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:33.697Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:33.697Z - [REQUEST]: .nx/cache/project-graph.json~fa23a145,.nx/cache/file-map.json~fa23a145
+[NX Daemon Server] - 2024-02-09T10:21:33.763Z - Time taken for 'hash changed files from watcher' 8.883099995553493ms
+[NX Daemon Server] - 2024-02-09T10:21:33.821Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:33.822Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:33.947Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:33.947Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:33.947Z - [REQUEST]: .nx/cache/project-graph.json~3db0f274,.nx/cache/file-map.json~3db0f274
+[NX Daemon Server] - 2024-02-09T10:21:34.011Z - Time taken for 'hash changed files from watcher' 10.079099997878075ms
+[NX Daemon Server] - 2024-02-09T10:21:34.070Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:34.073Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:34.197Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:34.197Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:34.197Z - [REQUEST]: .nx/cache/project-graph.json~d3b94428,.nx/cache/file-map.json~d3b94428
+[NX Daemon Server] - 2024-02-09T10:21:34.264Z - Time taken for 'hash changed files from watcher' 8.70150000602007ms
+[NX Daemon Server] - 2024-02-09T10:21:34.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:34.326Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:34.447Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:34.447Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:34.447Z - [REQUEST]: .nx/cache/project-graph.json~199fe5ef,.nx/cache/file-map.json~199fe5ef
+[NX Daemon Server] - 2024-02-09T10:21:34.514Z - Time taken for 'hash changed files from watcher' 6.608499996364117ms
+[NX Daemon Server] - 2024-02-09T10:21:34.571Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:34.571Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:34.695Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:34.695Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:34.695Z - [REQUEST]: .nx/cache/project-graph.json~9c535cac,.nx/cache/file-map.json~9c535cac
+[NX Daemon Server] - 2024-02-09T10:21:34.760Z - Time taken for 'hash changed files from watcher' 8.916700005531311ms
+[NX Daemon Server] - 2024-02-09T10:21:34.819Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:34.821Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:34.946Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:34.946Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:34.946Z - [REQUEST]: .nx/cache/file-map.json~a52a8c41,.nx/cache/project-graph.json~a52a8c41
+[NX Daemon Server] - 2024-02-09T10:21:35.014Z - Time taken for 'hash changed files from watcher' 6.498999997973442ms
+[NX Daemon Server] - 2024-02-09T10:21:35.072Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:35.074Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:35.205Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:35.205Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:35.205Z - [REQUEST]: .nx/cache/file-map.json~0eb2ec6f,.nx/cache/project-graph.json~0eb2ec6f
+[NX Daemon Server] - 2024-02-09T10:21:35.271Z - Time taken for 'hash changed files from watcher' 11.711400002241135ms
+[NX Daemon Server] - 2024-02-09T10:21:35.328Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:35.329Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:35.467Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:35.467Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:35.467Z - [REQUEST]: .nx/cache/file-map.json~4a3447c3,.nx/cache/project-graph.json~4a3447c3
+[NX Daemon Server] - 2024-02-09T10:21:35.532Z - Time taken for 'hash changed files from watcher' 18.57089999318123ms
+[NX Daemon Server] - 2024-02-09T10:21:35.591Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:35.592Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:35.722Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:35.722Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:35.722Z - [REQUEST]: .nx/cache/file-map.json~7c0d6c71,.nx/cache/project-graph.json~7c0d6c71
+[NX Daemon Server] - 2024-02-09T10:21:35.789Z - Time taken for 'hash changed files from watcher' 12.934499993920326ms
+[NX Daemon Server] - 2024-02-09T10:21:35.841Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:35.843Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:35.982Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:35.983Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:35.983Z - [REQUEST]: .nx/cache/file-map.json~4415a6e4,.nx/cache/project-graph.json~4415a6e4
+[NX Daemon Server] - 2024-02-09T10:21:36.049Z - Time taken for 'hash changed files from watcher' 20.028999999165535ms
+[NX Daemon Server] - 2024-02-09T10:21:36.106Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:36.109Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:36.234Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:36.234Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:36.234Z - [REQUEST]: .nx/cache/file-map.json~fa9ab385,.nx/cache/project-graph.json~fa9ab385
+[NX Daemon Server] - 2024-02-09T10:21:36.299Z - Time taken for 'hash changed files from watcher' 11.231300003826618ms
+[NX Daemon Server] - 2024-02-09T10:21:36.359Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:36.359Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:36.484Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:36.484Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:36.484Z - [REQUEST]: .nx/cache/file-map.json~2d6c6927,.nx/cache/project-graph.json~2d6c6927
+[NX Daemon Server] - 2024-02-09T10:21:36.548Z - Time taken for 'hash changed files from watcher' 11.416299998760223ms
+[NX Daemon Server] - 2024-02-09T10:21:36.605Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:36.606Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:36.739Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:36.740Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:36.740Z - [REQUEST]: .nx/cache/project-graph.json~ad93aef4,.nx/cache/file-map.json~ad93aef4
+[NX Daemon Server] - 2024-02-09T10:21:36.804Z - Time taken for 'hash changed files from watcher' 9.039099998772144ms
+[NX Daemon Server] - 2024-02-09T10:21:36.879Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:36.879Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:37.018Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:37.018Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:37.018Z - [REQUEST]: .nx/cache/project-graph.json~15c52f2a,.nx/cache/file-map.json~15c52f2a
+[NX Daemon Server] - 2024-02-09T10:21:37.080Z - Time taken for 'hash changed files from watcher' 17.907499998807907ms
+[NX Daemon Server] - 2024-02-09T10:21:37.129Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:37.133Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:37.250Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:37.250Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:37.250Z - [REQUEST]: .nx/cache/project-graph.json~2350f336,.nx/cache/file-map.json~2350f336
+[NX Daemon Server] - 2024-02-09T10:21:37.318Z - Time taken for 'hash changed files from watcher' 6.938900001347065ms
+[NX Daemon Server] - 2024-02-09T10:21:37.378Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:37.379Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:37.498Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:37.498Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:37.498Z - [REQUEST]: .nx/cache/file-map.json~56b8c8c0,.nx/cache/project-graph.json~56b8c8c0
+[NX Daemon Server] - 2024-02-09T10:21:37.565Z - Time taken for 'hash changed files from watcher' 5.847300000488758ms
+[NX Daemon Server] - 2024-02-09T10:21:37.611Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:37.613Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:37.746Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:37.746Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:37.746Z - [REQUEST]: .nx/cache/file-map.json~2152bca9,.nx/cache/project-graph.json~2152bca9
+[NX Daemon Server] - 2024-02-09T10:21:37.819Z - Time taken for 'hash changed files from watcher' 16.16899999976158ms
+[NX Daemon Server] - 2024-02-09T10:21:37.879Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:37.879Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:38.007Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:38.007Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:38.007Z - [REQUEST]: .nx/cache/project-graph.json~ec9f8f36,.nx/cache/file-map.json~ec9f8f36
+[NX Daemon Server] - 2024-02-09T10:21:38.074Z - Time taken for 'hash changed files from watcher' 8.855200000107288ms
+[NX Daemon Server] - 2024-02-09T10:21:38.134Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:38.137Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:38.262Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:38.262Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:38.263Z - [REQUEST]: .nx/cache/project-graph.json~53c0093c,.nx/cache/file-map.json~53c0093c
+[NX Daemon Server] - 2024-02-09T10:21:38.335Z - Time taken for 'hash changed files from watcher' 11.86540000140667ms
+[NX Daemon Server] - 2024-02-09T10:21:38.401Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:38.401Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:38.532Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:38.532Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:38.532Z - [REQUEST]: .nx/cache/project-graph.json~a78ba831,.nx/cache/file-map.json~a78ba831
+[NX Daemon Server] - 2024-02-09T10:21:38.600Z - Time taken for 'hash changed files from watcher' 17.636400006711483ms
+[NX Daemon Server] - 2024-02-09T10:21:38.647Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:38.648Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:38.771Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:38.772Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:38.772Z - [REQUEST]: .nx/cache/file-map.json~3f0fc396,.nx/cache/project-graph.json~3f0fc396
+[NX Daemon Server] - 2024-02-09T10:21:38.836Z - Time taken for 'hash changed files from watcher' 8.858399994671345ms
+[NX Daemon Server] - 2024-02-09T10:21:38.882Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:38.882Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:39.019Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:39.019Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:39.019Z - [REQUEST]: .nx/cache/project-graph.json~81360c33,.nx/cache/file-map.json~81360c33
+[NX Daemon Server] - 2024-02-09T10:21:39.087Z - Time taken for 'hash changed files from watcher' 15.526599995791912ms
+[NX Daemon Server] - 2024-02-09T10:21:39.136Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:39.136Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:39.271Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:39.271Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:39.271Z - [REQUEST]: .nx/cache/project-graph.json~bbdec40b,.nx/cache/file-map.json~bbdec40b
+[NX Daemon Server] - 2024-02-09T10:21:39.337Z - Time taken for 'hash changed files from watcher' 17.163599997758865ms
+[NX Daemon Server] - 2024-02-09T10:21:39.389Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:39.389Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:39.521Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:39.521Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:39.521Z - [REQUEST]: .nx/cache/file-map.json~2829ea25,.nx/cache/project-graph.json~2829ea25
+[NX Daemon Server] - 2024-02-09T10:21:39.632Z - Time taken for 'hash changed files from watcher' 13.026100002229214ms
+[NX Daemon Server] - 2024-02-09T10:21:39.682Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:39.682Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:39.808Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:39.808Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:39.809Z - [REQUEST]: .nx/cache/file-map.json~ca74c6b3,.nx/cache/project-graph.json~ca74c6b3
+[NX Daemon Server] - 2024-02-09T10:21:39.871Z - Time taken for 'hash changed files from watcher' 7.448600001633167ms
+[NX Daemon Server] - 2024-02-09T10:21:39.918Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:39.918Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:40.036Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:40.036Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:40.036Z - [REQUEST]: .nx/cache/project-graph.json~0f4cb9da,.nx/cache/file-map.json~0f4cb9da
+[NX Daemon Server] - 2024-02-09T10:21:40.125Z - Time taken for 'hash changed files from watcher' 6.40599999576807ms
+[NX Daemon Server] - 2024-02-09T10:21:40.177Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:40.179Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:40.304Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:40.304Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:40.304Z - [REQUEST]: .nx/cache/file-map.json~e2fef24f,.nx/cache/project-graph.json~e2fef24f
+[NX Daemon Server] - 2024-02-09T10:21:40.371Z - Time taken for 'hash changed files from watcher' 8.729000002145767ms
+[NX Daemon Server] - 2024-02-09T10:21:40.423Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:40.423Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:40.556Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:40.556Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:40.556Z - [REQUEST]: .nx/cache/project-graph.json~065fb5d7,.nx/cache/file-map.json~065fb5d7
+[NX Daemon Server] - 2024-02-09T10:21:40.651Z - Time taken for 'hash changed files from watcher' 9.636399999260902ms
+[NX Daemon Server] - 2024-02-09T10:21:40.695Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:40.698Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:40.826Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:40.826Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:40.826Z - [REQUEST]: .nx/cache/project-graph.json~fb59d63f,.nx/cache/file-map.json~fb59d63f
+[NX Daemon Server] - 2024-02-09T10:21:40.898Z - Time taken for 'hash changed files from watcher' 14.092299997806549ms
+[NX Daemon Server] - 2024-02-09T10:21:40.945Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:40.945Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:41.069Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:41.069Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:41.069Z - [REQUEST]: .nx/cache/project-graph.json~20fe19bb,.nx/cache/file-map.json~20fe19bb
+[NX Daemon Server] - 2024-02-09T10:21:41.146Z - Time taken for 'hash changed files from watcher' 5.947800002992153ms
+[NX Daemon Server] - 2024-02-09T10:21:41.199Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:41.199Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:41.333Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:41.333Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:41.333Z - [REQUEST]: .nx/cache/file-map.json~1e57d18b,.nx/cache/project-graph.json~1e57d18b
+[NX Daemon Server] - 2024-02-09T10:21:41.399Z - Time taken for 'hash changed files from watcher' 15.047200001776218ms
+[NX Daemon Server] - 2024-02-09T10:21:41.453Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:41.454Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:41.582Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:41.582Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:41.582Z - [REQUEST]: .nx/cache/file-map.json~677302b3,.nx/cache/project-graph.json~677302b3
+[NX Daemon Server] - 2024-02-09T10:21:41.648Z - Time taken for 'hash changed files from watcher' 9.402400001883507ms
+[NX Daemon Server] - 2024-02-09T10:21:41.693Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:41.708Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:41.820Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:41.820Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:41.820Z - [REQUEST]: .nx/cache/project-graph.json~f640451e,.nx/cache/file-map.json~f640451e
+[NX Daemon Server] - 2024-02-09T10:21:41.886Z - Time taken for 'hash changed files from watcher' 8.486000001430511ms
+[NX Daemon Server] - 2024-02-09T10:21:41.945Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:41.948Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:42.073Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:42.073Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:42.073Z - [REQUEST]: .nx/cache/project-graph.json~d7f17a8d,.nx/cache/file-map.json~d7f17a8d
+[NX Daemon Server] - 2024-02-09T10:21:42.141Z - Time taken for 'hash changed files from watcher' 11.687699995934963ms
+[NX Daemon Server] - 2024-02-09T10:21:42.196Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:42.199Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:42.323Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:42.323Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:42.323Z - [REQUEST]: .nx/cache/project-graph.json~665dc08f,.nx/cache/file-map.json~665dc08f
+[NX Daemon Server] - 2024-02-09T10:21:42.418Z - Time taken for 'hash changed files from watcher' 6.622900001704693ms
+[NX Daemon Server] - 2024-02-09T10:21:42.478Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:42.478Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:42.602Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:42.602Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:42.602Z - [REQUEST]: .nx/cache/project-graph.json~5260b3c7,.nx/cache/file-map.json~5260b3c7
+[NX Daemon Server] - 2024-02-09T10:21:42.671Z - Time taken for 'hash changed files from watcher' 6.534800000488758ms
+[NX Daemon Server] - 2024-02-09T10:21:42.729Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:42.730Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:42.858Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:42.858Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:42.858Z - [REQUEST]: .nx/cache/project-graph.json~9922115a,.nx/cache/file-map.json~9922115a
+[NX Daemon Server] - 2024-02-09T10:21:42.963Z - Time taken for 'hash changed files from watcher' 6.2147000059485435ms
+[NX Daemon Server] - 2024-02-09T10:21:43.016Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:43.017Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:43.156Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:43.156Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:43.156Z - [REQUEST]: .nx/cache/project-graph.json~8b34aa80,.nx/cache/file-map.json~8b34aa80
+[NX Daemon Server] - 2024-02-09T10:21:43.278Z - Time taken for 'hash changed files from watcher' 14.609600000083447ms
+[NX Daemon Server] - 2024-02-09T10:21:43.329Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:43.331Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:43.457Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:43.457Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:43.457Z - [REQUEST]: .nx/cache/project-graph.json~6a6d0ef0,.nx/cache/file-map.json~6a6d0ef0
+[NX Daemon Server] - 2024-02-09T10:21:43.517Z - Time taken for 'hash changed files from watcher' 10.661200001835823ms
+[NX Daemon Server] - 2024-02-09T10:21:43.573Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:43.573Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:43.712Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:43.712Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:43.712Z - [REQUEST]: .nx/cache/file-map.json~6cdbd51b,.nx/cache/project-graph.json~6cdbd51b
+[NX Daemon Server] - 2024-02-09T10:21:43.777Z - Time taken for 'hash changed files from watcher' 23.597500003874302ms
+[NX Daemon Server] - 2024-02-09T10:21:43.836Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:43.836Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:43.959Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:43.959Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:43.959Z - [REQUEST]: .nx/cache/file-map.json~9886f53c,.nx/cache/project-graph.json~9886f53c
+[NX Daemon Server] - 2024-02-09T10:21:44.063Z - Time taken for 'hash changed files from watcher' 6.9211999997496605ms
+[NX Daemon Server] - 2024-02-09T10:21:44.113Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:44.116Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:44.259Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:44.259Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:44.260Z - [REQUEST]: .nx/cache/project-graph.json~6822e338,.nx/cache/file-map.json~6822e338
+[NX Daemon Server] - 2024-02-09T10:21:44.371Z - Time taken for 'hash changed files from watcher' 16.849799998104572ms
+[NX Daemon Server] - 2024-02-09T10:21:44.424Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:44.426Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:44.556Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:44.556Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:44.556Z - [REQUEST]: .nx/cache/project-graph.json~31023583,.nx/cache/file-map.json~31023583
+[NX Daemon Server] - 2024-02-09T10:21:44.621Z - Time taken for 'hash changed files from watcher' 13.707399994134903ms
+[NX Daemon Server] - 2024-02-09T10:21:44.674Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:44.674Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:44.804Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:44.804Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:44.804Z - [REQUEST]: .nx/cache/project-graph.json~8f6597ac,.nx/cache/file-map.json~8f6597ac
+[NX Daemon Server] - 2024-02-09T10:21:44.876Z - Time taken for 'hash changed files from watcher' 13.80409999936819ms
+[NX Daemon Server] - 2024-02-09T10:21:44.921Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:44.922Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:45.043Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:45.043Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:45.043Z - [REQUEST]: .nx/cache/file-map.json~a64bcd0f,.nx/cache/project-graph.json~a64bcd0f
+[NX Daemon Server] - 2024-02-09T10:21:45.114Z - Time taken for 'hash changed files from watcher' 9.285300001502037ms
+[NX Daemon Server] - 2024-02-09T10:21:45.166Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:45.166Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:45.290Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:45.290Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:45.290Z - [REQUEST]: .nx/cache/file-map.json~b3e0dd96,.nx/cache/project-graph.json~b3e0dd96
+[NX Daemon Server] - 2024-02-09T10:21:45.364Z - Time taken for 'hash changed files from watcher' 6.045500002801418ms
+[NX Daemon Server] - 2024-02-09T10:21:45.419Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:45.419Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:45.547Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:45.547Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:45.547Z - [REQUEST]: .nx/cache/file-map.json~7d2cdcd1,.nx/cache/project-graph.json~7d2cdcd1
+[NX Daemon Server] - 2024-02-09T10:21:45.622Z - Time taken for 'hash changed files from watcher' 8.437800005078316ms
+[NX Daemon Server] - 2024-02-09T10:21:45.674Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:45.675Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:45.796Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:45.796Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:45.796Z - [REQUEST]: .nx/cache/project-graph.json~6126095f,.nx/cache/file-map.json~6126095f
+[NX Daemon Server] - 2024-02-09T10:21:45.881Z - Time taken for 'hash changed files from watcher' 7.3338000029325485ms
+[NX Daemon Server] - 2024-02-09T10:21:45.938Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:45.942Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:46.074Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:46.074Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:46.074Z - [REQUEST]: .nx/cache/project-graph.json~d7fbd797,.nx/cache/file-map.json~d7fbd797
+[NX Daemon Server] - 2024-02-09T10:21:46.140Z - Time taken for 'hash changed files from watcher' 16.737499997019768ms
+[NX Daemon Server] - 2024-02-09T10:21:46.190Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:46.190Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:46.312Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:46.312Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:46.313Z - [REQUEST]: .nx/cache/project-graph.json~d598f8c6,.nx/cache/file-map.json~d598f8c6
+[NX Daemon Server] - 2024-02-09T10:21:46.389Z - Time taken for 'hash changed files from watcher' 7.641000002622604ms
+[NX Daemon Server] - 2024-02-09T10:21:46.439Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:46.442Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:46.569Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:46.569Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:46.569Z - [REQUEST]: .nx/cache/file-map.json~bf37157a,.nx/cache/project-graph.json~bf37157a
+[NX Daemon Server] - 2024-02-09T10:21:46.635Z - Time taken for 'hash changed files from watcher' 12.405299998819828ms
+[NX Daemon Server] - 2024-02-09T10:21:46.689Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:46.692Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:46.826Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:46.826Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:46.826Z - [REQUEST]: .nx/cache/project-graph.json~e2394d11,.nx/cache/file-map.json~e2394d11
+[NX Daemon Server] - 2024-02-09T10:21:46.898Z - Time taken for 'hash changed files from watcher' 17.350500002503395ms
+[NX Daemon Server] - 2024-02-09T10:21:46.954Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:46.956Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:47.093Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:47.094Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:47.094Z - [REQUEST]: .nx/cache/project-graph.json~1d07c480,.nx/cache/file-map.json~1d07c480
+[NX Daemon Server] - 2024-02-09T10:21:47.168Z - Time taken for 'hash changed files from watcher' 12.471199996769428ms
+[NX Daemon Server] - 2024-02-09T10:21:47.213Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:47.214Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:47.349Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:47.350Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:47.350Z - [REQUEST]: .nx/cache/project-graph.json~53ac6b59,.nx/cache/file-map.json~53ac6b59
+[NX Daemon Server] - 2024-02-09T10:21:47.461Z - Time taken for 'hash changed files from watcher' 12.834700003266335ms
+[NX Daemon Server] - 2024-02-09T10:21:47.511Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:47.512Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:47.639Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:47.639Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:47.639Z - [REQUEST]: .nx/cache/file-map.json~36150cf1,.nx/cache/project-graph.json~36150cf1
+[NX Daemon Server] - 2024-02-09T10:21:47.733Z - Time taken for 'hash changed files from watcher' 12.124200001358986ms
+[NX Daemon Server] - 2024-02-09T10:21:47.790Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:47.791Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:47.914Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:47.914Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:47.914Z - [REQUEST]: .nx/cache/file-map.json~a44e3383,.nx/cache/project-graph.json~a44e3383
+[NX Daemon Server] - 2024-02-09T10:21:47.987Z - Time taken for 'hash changed files from watcher' 8.086300000548363ms
+[NX Daemon Server] - 2024-02-09T10:21:48.037Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:48.038Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:48.164Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:48.164Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:48.164Z - [REQUEST]: .nx/cache/file-map.json~1fe8cf1b,.nx/cache/project-graph.json~1fe8cf1b
+[NX Daemon Server] - 2024-02-09T10:21:48.230Z - Time taken for 'hash changed files from watcher' 7.253300003707409ms
+[NX Daemon Server] - 2024-02-09T10:21:48.286Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:48.289Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:48.416Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:48.416Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:48.416Z - [REQUEST]: .nx/cache/project-graph.json~a386b430,.nx/cache/file-map.json~a386b430
+[NX Daemon Server] - 2024-02-09T10:21:48.489Z - Time taken for 'hash changed files from watcher' 11.537100002169609ms
+[NX Daemon Server] - 2024-02-09T10:21:48.540Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:48.542Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:48.672Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:48.672Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:48.672Z - [REQUEST]: .nx/cache/file-map.json~f7125296,.nx/cache/project-graph.json~f7125296
+[NX Daemon Server] - 2024-02-09T10:21:48.740Z - Time taken for 'hash changed files from watcher' 13.762299999594688ms
+[NX Daemon Server] - 2024-02-09T10:21:48.792Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:48.793Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:48.915Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:48.915Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:48.915Z - [REQUEST]: .nx/cache/project-graph.json~5916901b,.nx/cache/file-map.json~5916901b
+[NX Daemon Server] - 2024-02-09T10:21:48.983Z - Time taken for 'hash changed files from watcher' 10.339400000870228ms
+[NX Daemon Server] - 2024-02-09T10:21:49.036Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:49.037Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:49.163Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:49.163Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:49.163Z - [REQUEST]: .nx/cache/file-map.json~e9338a8e,.nx/cache/project-graph.json~e9338a8e
+[NX Daemon Server] - 2024-02-09T10:21:49.226Z - Time taken for 'hash changed files from watcher' 9.712499998509884ms
+[NX Daemon Server] - 2024-02-09T10:21:49.286Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:49.289Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:49.422Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:49.423Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:49.423Z - [REQUEST]: .nx/cache/file-map.json~18269f50,.nx/cache/project-graph.json~18269f50
+[NX Daemon Server] - 2024-02-09T10:21:49.491Z - Time taken for 'hash changed files from watcher' 18.56410000473261ms
+[NX Daemon Server] - 2024-02-09T10:21:49.566Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:49.567Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:49.704Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:49.704Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:49.704Z - [REQUEST]: .nx/cache/file-map.json~8aa1e8f7,.nx/cache/project-graph.json~8aa1e8f7
+[NX Daemon Server] - 2024-02-09T10:21:49.775Z - Time taken for 'hash changed files from watcher' 20.4898000061512ms
+[NX Daemon Server] - 2024-02-09T10:21:49.827Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:49.831Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:49.963Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:49.963Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:49.963Z - [REQUEST]: .nx/cache/file-map.json~91f7ea06,.nx/cache/project-graph.json~91f7ea06
+[NX Daemon Server] - 2024-02-09T10:21:50.027Z - Time taken for 'hash changed files from watcher' 18.11199999600649ms
+[NX Daemon Server] - 2024-02-09T10:21:50.081Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:50.084Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:50.208Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:50.208Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:50.208Z - [REQUEST]: .nx/cache/project-graph.json~689e7ce7,.nx/cache/file-map.json~689e7ce7
+[NX Daemon Server] - 2024-02-09T10:21:50.282Z - Time taken for 'hash changed files from watcher' 11.19819999486208ms
+[NX Daemon Server] - 2024-02-09T10:21:50.329Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:50.330Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:50.458Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:50.458Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:50.458Z - [REQUEST]: .nx/cache/project-graph.json~4852d162,.nx/cache/file-map.json~4852d162
+[NX Daemon Server] - 2024-02-09T10:21:50.529Z - Time taken for 'hash changed files from watcher' 11.230599999427795ms
+[NX Daemon Server] - 2024-02-09T10:21:50.586Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:50.586Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:50.713Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:50.713Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:50.713Z - [REQUEST]: .nx/cache/project-graph.json~a1fdd302,.nx/cache/file-map.json~a1fdd302
+[NX Daemon Server] - 2024-02-09T10:21:50.773Z - Time taken for 'hash changed files from watcher' 10.879300005733967ms
+[NX Daemon Server] - 2024-02-09T10:21:50.820Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:50.823Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:50.949Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:50.949Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:50.949Z - [REQUEST]: .nx/cache/project-graph.json~837efed5,.nx/cache/file-map.json~837efed5
+[NX Daemon Server] - 2024-02-09T10:21:51.017Z - Time taken for 'hash changed files from watcher' 10.25789999961853ms
+[NX Daemon Server] - 2024-02-09T10:21:51.073Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:51.073Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:51.196Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:51.196Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:51.196Z - [REQUEST]: .nx/cache/file-map.json~1842e875,.nx/cache/project-graph.json~1842e875
+[NX Daemon Server] - 2024-02-09T10:21:51.263Z - Time taken for 'hash changed files from watcher' 9.189099997282028ms
+[NX Daemon Server] - 2024-02-09T10:21:51.326Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:51.326Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:51.450Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:51.450Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:51.450Z - [REQUEST]: .nx/cache/project-graph.json~c76154b8,.nx/cache/file-map.json~c76154b8
+[NX Daemon Server] - 2024-02-09T10:21:51.518Z - Time taken for 'hash changed files from watcher' 9.002700001001358ms
+[NX Daemon Server] - 2024-02-09T10:21:51.573Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:51.575Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:51.706Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:51.706Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:51.706Z - [REQUEST]: .nx/cache/file-map.json~22f4f9fb,.nx/cache/project-graph.json~22f4f9fb
+[NX Daemon Server] - 2024-02-09T10:21:51.777Z - Time taken for 'hash changed files from watcher' 12.197499997913837ms
+[NX Daemon Server] - 2024-02-09T10:21:51.826Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:51.827Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:51.959Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:51.959Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:51.959Z - [REQUEST]: .nx/cache/project-graph.json~195a05f9,.nx/cache/file-map.json~195a05f9
+[NX Daemon Server] - 2024-02-09T10:21:52.044Z - Time taken for 'hash changed files from watcher' 13.97349999845028ms
+[NX Daemon Server] - 2024-02-09T10:21:52.104Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:52.105Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:52.235Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:52.235Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:52.235Z - [REQUEST]: .nx/cache/file-map.json~98726547,.nx/cache/project-graph.json~98726547
+[NX Daemon Server] - 2024-02-09T10:21:52.312Z - Time taken for 'hash changed files from watcher' 12.000199995934963ms
+[NX Daemon Server] - 2024-02-09T10:21:52.372Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:52.372Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:52.505Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:52.505Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:52.505Z - [REQUEST]: .nx/cache/project-graph.json~20393142,.nx/cache/file-map.json~20393142
+[NX Daemon Server] - 2024-02-09T10:21:52.595Z - Time taken for 'hash changed files from watcher' 14.556599996984005ms
+[NX Daemon Server] - 2024-02-09T10:21:52.641Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:52.641Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:52.774Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:52.774Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:52.774Z - [REQUEST]: .nx/cache/project-graph.json~571cb1de,.nx/cache/file-map.json~571cb1de
+[NX Daemon Server] - 2024-02-09T10:21:52.853Z - Time taken for 'hash changed files from watcher' 14.179799996316433ms
+[NX Daemon Server] - 2024-02-09T10:21:52.911Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:52.911Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:53.043Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:53.043Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:53.043Z - [REQUEST]: .nx/cache/project-graph.json~c9a1837d,.nx/cache/file-map.json~c9a1837d
+[NX Daemon Server] - 2024-02-09T10:21:53.120Z - Time taken for 'hash changed files from watcher' 12.44310000538826ms
+[NX Daemon Server] - 2024-02-09T10:21:53.171Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:53.171Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:53.303Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:53.303Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:53.303Z - [REQUEST]: .nx/cache/project-graph.json~68f57fec,.nx/cache/file-map.json~68f57fec
+[NX Daemon Server] - 2024-02-09T10:21:53.393Z - Time taken for 'hash changed files from watcher' 14.444199994206429ms
+[NX Daemon Server] - 2024-02-09T10:21:53.439Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:53.440Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:53.567Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:53.567Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:53.567Z - [REQUEST]: .nx/cache/file-map.json~53bc71e5,.nx/cache/project-graph.json~53bc71e5
+[NX Daemon Server] - 2024-02-09T10:21:53.649Z - Time taken for 'hash changed files from watcher' 9.004799999296665ms
+[NX Daemon Server] - 2024-02-09T10:21:53.705Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:53.706Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:53.838Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:53.838Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:53.838Z - [REQUEST]: .nx/cache/project-graph.json~2e89ec2b,.nx/cache/file-map.json~2e89ec2b
+[NX Daemon Server] - 2024-02-09T10:21:53.915Z - Time taken for 'hash changed files from watcher' 12.93640000373125ms
+[NX Daemon Server] - 2024-02-09T10:21:53.957Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:53.958Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:54.088Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:54.088Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:54.088Z - [REQUEST]: .nx/cache/file-map.json~df2c6b44,.nx/cache/project-graph.json~df2c6b44
+[NX Daemon Server] - 2024-02-09T10:21:54.161Z - Time taken for 'hash changed files from watcher' 13.01630000025034ms
+[NX Daemon Server] - 2024-02-09T10:21:54.221Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:54.221Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:54.351Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:54.351Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:54.351Z - [REQUEST]: .nx/cache/project-graph.json~14a8e7ca,.nx/cache/file-map.json~14a8e7ca
+[NX Daemon Server] - 2024-02-09T10:21:54.416Z - Time taken for 'hash changed files from watcher' 12.950000002980232ms
+[NX Daemon Server] - 2024-02-09T10:21:54.473Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:54.474Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:54.606Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:54.606Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:54.606Z - [REQUEST]: .nx/cache/project-graph.json~10bf37b6,.nx/cache/file-map.json~10bf37b6
+[NX Daemon Server] - 2024-02-09T10:21:54.685Z - Time taken for 'hash changed files from watcher' 11.139800004661083ms
+[NX Daemon Server] - 2024-02-09T10:21:54.730Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:54.730Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:54.857Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:54.857Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:54.857Z - [REQUEST]: .nx/cache/file-map.json~6c042ed0,.nx/cache/project-graph.json~6c042ed0
+[NX Daemon Server] - 2024-02-09T10:21:54.941Z - Time taken for 'hash changed files from watcher' 6.633699998259544ms
+[NX Daemon Server] - 2024-02-09T10:21:54.999Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:54.999Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:55.130Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:55.130Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:55.130Z - [REQUEST]: .nx/cache/project-graph.json~37c5c896,.nx/cache/file-map.json~37c5c896
+[NX Daemon Server] - 2024-02-09T10:21:55.202Z - Time taken for 'hash changed files from watcher' 11.787599995732307ms
+[NX Daemon Server] - 2024-02-09T10:21:55.252Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:55.253Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:55.389Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:55.389Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:55.389Z - [REQUEST]: .nx/cache/project-graph.json~f4408b5f,.nx/cache/file-map.json~f4408b5f
+[NX Daemon Server] - 2024-02-09T10:21:55.460Z - Time taken for 'hash changed files from watcher' 13.119800001382828ms
+[NX Daemon Server] - 2024-02-09T10:21:55.508Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:55.508Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:55.637Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:55.637Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:55.637Z - [REQUEST]: .nx/cache/file-map.json~03ff5180,.nx/cache/project-graph.json~03ff5180
+[NX Daemon Server] - 2024-02-09T10:21:55.714Z - Time taken for 'hash changed files from watcher' 8.552100002765656ms
+[NX Daemon Server] - 2024-02-09T10:21:55.763Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:55.763Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:55.895Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:55.895Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:55.895Z - [REQUEST]: .nx/cache/project-graph.json~d5d97844,.nx/cache/file-map.json~d5d97844
+[NX Daemon Server] - 2024-02-09T10:21:55.970Z - Time taken for 'hash changed files from watcher' 6.783500000834465ms
+[NX Daemon Server] - 2024-02-09T10:21:56.016Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:56.017Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:56.146Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:56.146Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:56.146Z - [REQUEST]: .nx/cache/project-graph.json~17ddff83,.nx/cache/file-map.json~17ddff83
+[NX Daemon Server] - 2024-02-09T10:21:56.212Z - Time taken for 'hash changed files from watcher' 12.246799997985363ms
+[NX Daemon Server] - 2024-02-09T10:21:56.269Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:56.269Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:56.390Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:56.390Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:56.390Z - [REQUEST]: .nx/cache/file-map.json~5f78cd3a,.nx/cache/project-graph.json~5f78cd3a
+[NX Daemon Server] - 2024-02-09T10:21:56.458Z - Time taken for 'hash changed files from watcher' 5.981199994683266ms
+[NX Daemon Server] - 2024-02-09T10:21:56.515Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:56.516Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:56.639Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:56.639Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:56.639Z - [REQUEST]: .nx/cache/project-graph.json~238466d6,.nx/cache/file-map.json~238466d6
+[NX Daemon Server] - 2024-02-09T10:21:56.707Z - Time taken for 'hash changed files from watcher' 6.4519999995827675ms
+[NX Daemon Server] - 2024-02-09T10:21:56.758Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:56.758Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:56.892Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:56.892Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:56.892Z - [REQUEST]: .nx/cache/project-graph.json~76936414,.nx/cache/file-map.json~76936414
+[NX Daemon Server] - 2024-02-09T10:21:56.967Z - Time taken for 'hash changed files from watcher' 16.95560000091791ms
+[NX Daemon Server] - 2024-02-09T10:21:57.023Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:57.024Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:57.148Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:57.148Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:57.148Z - [REQUEST]: .nx/cache/project-graph.json~79d91059,.nx/cache/file-map.json~79d91059
+[NX Daemon Server] - 2024-02-09T10:21:57.218Z - Time taken for 'hash changed files from watcher' 6.665899999439716ms
+[NX Daemon Server] - 2024-02-09T10:21:57.276Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:57.277Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:57.403Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:57.403Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:57.403Z - [REQUEST]: .nx/cache/file-map.json~f1afa5fd,.nx/cache/project-graph.json~f1afa5fd
+[NX Daemon Server] - 2024-02-09T10:21:57.475Z - Time taken for 'hash changed files from watcher' 7.919100001454353ms
+[NX Daemon Server] - 2024-02-09T10:21:57.529Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:57.530Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:57.652Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:57.652Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:57.652Z - [REQUEST]: .nx/cache/project-graph.json~6def83cb,.nx/cache/file-map.json~6def83cb
+[NX Daemon Server] - 2024-02-09T10:21:57.719Z - Time taken for 'hash changed files from watcher' 5.993500001728535ms
+[NX Daemon Server] - 2024-02-09T10:21:57.772Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:57.772Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:57.909Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:57.909Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:57.909Z - [REQUEST]: .nx/cache/project-graph.json~21253f7a,.nx/cache/file-map.json~21253f7a
+[NX Daemon Server] - 2024-02-09T10:21:57.983Z - Time taken for 'hash changed files from watcher' 16.32159999758005ms
+[NX Daemon Server] - 2024-02-09T10:21:58.039Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:58.039Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:58.174Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:58.174Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:58.174Z - [REQUEST]: .nx/cache/file-map.json~c5106f13,.nx/cache/project-graph.json~c5106f13
+[NX Daemon Server] - 2024-02-09T10:21:58.244Z - Time taken for 'hash changed files from watcher' 14.049899995326996ms
+[NX Daemon Server] - 2024-02-09T10:21:58.295Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:58.296Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:58.421Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:58.421Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:58.421Z - [REQUEST]: .nx/cache/project-graph.json~3d0e5db2,.nx/cache/file-map.json~3d0e5db2
+[NX Daemon Server] - 2024-02-09T10:21:58.491Z - Time taken for 'hash changed files from watcher' 6.126800000667572ms
+[NX Daemon Server] - 2024-02-09T10:21:58.546Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:58.547Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:58.670Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:58.670Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:58.670Z - [REQUEST]: .nx/cache/project-graph.json~58da2741,.nx/cache/file-map.json~58da2741
+[NX Daemon Server] - 2024-02-09T10:21:58.739Z - Time taken for 'hash changed files from watcher' 5.622500002384186ms
+[NX Daemon Server] - 2024-02-09T10:21:58.794Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:58.795Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:58.916Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:58.916Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:58.916Z - [REQUEST]: .nx/cache/project-graph.json~e3d7190c,.nx/cache/file-map.json~e3d7190c
+[NX Daemon Server] - 2024-02-09T10:21:58.980Z - Time taken for 'hash changed files from watcher' 6.340000003576279ms
+[NX Daemon Server] - 2024-02-09T10:21:59.029Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:59.029Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:59.158Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:59.158Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:59.158Z - [REQUEST]: .nx/cache/project-graph.json~da8344c3,.nx/cache/file-map.json~da8344c3
+[NX Daemon Server] - 2024-02-09T10:21:59.225Z - Time taken for 'hash changed files from watcher' 12.755200006067753ms
+[NX Daemon Server] - 2024-02-09T10:21:59.281Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:59.282Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:59.408Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:59.408Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:59.408Z - [REQUEST]: .nx/cache/project-graph.json~b6644b1e,.nx/cache/file-map.json~b6644b1e
+[NX Daemon Server] - 2024-02-09T10:21:59.485Z - Time taken for 'hash changed files from watcher' 6.094700001180172ms
+[NX Daemon Server] - 2024-02-09T10:21:59.536Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:59.537Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:59.671Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:59.671Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:21:59.671Z - [REQUEST]: .nx/cache/file-map.json~cd1abd43,.nx/cache/project-graph.json~cd1abd43
+[NX Daemon Server] - 2024-02-09T10:21:59.753Z - Time taken for 'hash changed files from watcher' 14.637700006365776ms
+[NX Daemon Server] - 2024-02-09T10:21:59.798Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:21:59.798Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:21:59.930Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:21:59.930Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:21:59.930Z - [REQUEST]: .nx/cache/file-map.json~362a269a,.nx/cache/project-graph.json~362a269a
+[NX Daemon Server] - 2024-02-09T10:22:00.010Z - Time taken for 'hash changed files from watcher' 12.77650000154972ms
+[NX Daemon Server] - 2024-02-09T10:22:00.068Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:00.069Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:00.204Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:00.204Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:00.204Z - [REQUEST]: .nx/cache/file-map.json~e469d83e,.nx/cache/project-graph.json~e469d83e
+[NX Daemon Server] - 2024-02-09T10:22:00.284Z - Time taken for 'hash changed files from watcher' 14.747600004076958ms
+[NX Daemon Server] - 2024-02-09T10:22:00.331Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:00.331Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:00.472Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:00.472Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:00.472Z - [REQUEST]: .nx/cache/file-map.json~8a0810b0,.nx/cache/project-graph.json~8a0810b0
+[NX Daemon Server] - 2024-02-09T10:22:00.564Z - Time taken for 'hash changed files from watcher' 15.312100000679493ms
+[NX Daemon Server] - 2024-02-09T10:22:00.618Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:00.618Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:00.750Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:00.750Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:00.750Z - [REQUEST]: .nx/cache/file-map.json~9f71e3e2,.nx/cache/project-graph.json~9f71e3e2
+[NX Daemon Server] - 2024-02-09T10:22:00.820Z - Time taken for 'hash changed files from watcher' 12.516699999570847ms
+[NX Daemon Server] - 2024-02-09T10:22:00.871Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:00.871Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:01.001Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:01.001Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:01.001Z - [REQUEST]: .nx/cache/project-graph.json~4477aca2,.nx/cache/file-map.json~4477aca2
+[NX Daemon Server] - 2024-02-09T10:22:01.096Z - Time taken for 'hash changed files from watcher' 8.781900003552437ms
+[NX Daemon Server] - 2024-02-09T10:22:01.142Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:01.142Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:01.277Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:01.277Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:01.277Z - [REQUEST]: .nx/cache/project-graph.json~b4c42adf,.nx/cache/file-map.json~b4c42adf
+[NX Daemon Server] - 2024-02-09T10:22:01.367Z - Time taken for 'hash changed files from watcher' 11.91550000011921ms
+[NX Daemon Server] - 2024-02-09T10:22:01.426Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:01.427Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:01.550Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:01.550Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:01.550Z - [REQUEST]: .nx/cache/file-map.json~ca631373,.nx/cache/project-graph.json~ca631373
+[NX Daemon Server] - 2024-02-09T10:22:01.620Z - Time taken for 'hash changed files from watcher' 6.561499997973442ms
+[NX Daemon Server] - 2024-02-09T10:22:01.678Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:01.679Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:01.798Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:01.798Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:01.798Z - [REQUEST]: .nx/cache/project-graph.json~17ab828a,.nx/cache/file-map.json~17ab828a
+[NX Daemon Server] - 2024-02-09T10:22:01.883Z - Time taken for 'hash changed files from watcher' 6.301399998366833ms
+[NX Daemon Server] - 2024-02-09T10:22:01.940Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:01.941Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:02.063Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:02.063Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:02.063Z - [REQUEST]: .nx/cache/file-map.json~91120e99,.nx/cache/project-graph.json~91120e99
+[NX Daemon Server] - 2024-02-09T10:22:02.137Z - Time taken for 'hash changed files from watcher' 6.097699999809265ms
+[NX Daemon Server] - 2024-02-09T10:22:02.192Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:02.193Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:02.316Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:02.316Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:02.316Z - [REQUEST]: .nx/cache/project-graph.json~e56458c7,.nx/cache/file-map.json~e56458c7
+[NX Daemon Server] - 2024-02-09T10:22:02.385Z - Time taken for 'hash changed files from watcher' 5.602500006556511ms
+[NX Daemon Server] - 2024-02-09T10:22:02.430Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:02.447Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:02.576Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:02.576Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:02.576Z - [REQUEST]: .nx/cache/file-map.json~4cf2d671,.nx/cache/project-graph.json~4cf2d671
+[NX Daemon Server] - 2024-02-09T10:22:02.659Z - Time taken for 'hash changed files from watcher' 10.397099994122982ms
+[NX Daemon Server] - 2024-02-09T10:22:02.722Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:02.722Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:02.838Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:02.838Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:02.838Z - [REQUEST]: .nx/cache/project-graph.json~e577b699,.nx/cache/file-map.json~e577b699
+[NX Daemon Server] - 2024-02-09T10:22:02.906Z - Time taken for 'hash changed files from watcher' 5.739599995315075ms
+[NX Daemon Server] - 2024-02-09T10:22:02.966Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:02.966Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:03.089Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:03.089Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:03.089Z - [REQUEST]: .nx/cache/project-graph.json~c532d0d9,.nx/cache/file-map.json~c532d0d9
+[NX Daemon Server] - 2024-02-09T10:22:03.159Z - Time taken for 'hash changed files from watcher' 6.042300000786781ms
+[NX Daemon Server] - 2024-02-09T10:22:03.216Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:03.216Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:03.343Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:03.343Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:03.343Z - [REQUEST]: .nx/cache/file-map.json~718e30a3,.nx/cache/project-graph.json~718e30a3
+[NX Daemon Server] - 2024-02-09T10:22:03.413Z - Time taken for 'hash changed files from watcher' 6.526699997484684ms
+[NX Daemon Server] - 2024-02-09T10:22:03.469Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:03.470Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:03.592Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:03.592Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:03.592Z - [REQUEST]: .nx/cache/project-graph.json~a74b5027,.nx/cache/file-map.json~a74b5027
+[NX Daemon Server] - 2024-02-09T10:22:03.669Z - Time taken for 'hash changed files from watcher' 5.794900000095367ms
+[NX Daemon Server] - 2024-02-09T10:22:03.722Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:03.723Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:03.859Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:03.859Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:03.859Z - [REQUEST]: .nx/cache/project-graph.json~a113beef,.nx/cache/file-map.json~a113beef
+[NX Daemon Server] - 2024-02-09T10:22:03.927Z - Time taken for 'hash changed files from watcher' 18.100599996745586ms
+[NX Daemon Server] - 2024-02-09T10:22:03.971Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:03.972Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:04.099Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:04.099Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:04.099Z - [REQUEST]: .nx/cache/project-graph.json~1f593632,.nx/cache/file-map.json~1f593632
+[NX Daemon Server] - 2024-02-09T10:22:04.164Z - Time taken for 'hash changed files from watcher' 10.252700001001358ms
+[NX Daemon Server] - 2024-02-09T10:22:04.220Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:04.220Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:04.347Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:04.347Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:04.347Z - [REQUEST]: .nx/cache/file-map.json~aff6a023,.nx/cache/project-graph.json~aff6a023
+[NX Daemon Server] - 2024-02-09T10:22:04.415Z - Time taken for 'hash changed files from watcher' 10.391599997878075ms
+[NX Daemon Server] - 2024-02-09T10:22:04.471Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:04.473Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:04.602Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:04.602Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:04.602Z - [REQUEST]: .nx/cache/project-graph.json~391c2d13,.nx/cache/file-map.json~391c2d13
+[NX Daemon Server] - 2024-02-09T10:22:04.669Z - Time taken for 'hash changed files from watcher' 13.11379999667406ms
+[NX Daemon Server] - 2024-02-09T10:22:04.723Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:04.725Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:04.860Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:04.860Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:04.860Z - [REQUEST]: .nx/cache/project-graph.json~54170585,.nx/cache/file-map.json~54170585
+[NX Daemon Server] - 2024-02-09T10:22:04.924Z - Time taken for 'hash changed files from watcher' 17.888700000941753ms
+[NX Daemon Server] - 2024-02-09T10:22:04.986Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:04.987Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:05.117Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:05.117Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:05.117Z - [REQUEST]: .nx/cache/file-map.json~acecdf83,.nx/cache/project-graph.json~acecdf83
+[NX Daemon Server] - 2024-02-09T10:22:05.181Z - Time taken for 'hash changed files from watcher' 15.968600004911423ms
+[NX Daemon Server] - 2024-02-09T10:22:05.236Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:05.237Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:05.363Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:05.363Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:05.363Z - [REQUEST]: .nx/cache/project-graph.json~16a6ebdc,.nx/cache/file-map.json~16a6ebdc
+[NX Daemon Server] - 2024-02-09T10:22:05.428Z - Time taken for 'hash changed files from watcher' 10.36320000141859ms
+[NX Daemon Server] - 2024-02-09T10:22:05.490Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:05.491Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:05.630Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:05.630Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:05.630Z - [REQUEST]: .nx/cache/project-graph.json~41a9a7f7,.nx/cache/file-map.json~41a9a7f7
+[NX Daemon Server] - 2024-02-09T10:22:05.693Z - Time taken for 'hash changed files from watcher' 20.17789999395609ms
+[NX Daemon Server] - 2024-02-09T10:22:05.744Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:05.744Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:05.875Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:05.875Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:05.875Z - [REQUEST]: .nx/cache/project-graph.json~e093ff6f,.nx/cache/file-map.json~e093ff6f
+[NX Daemon Server] - 2024-02-09T10:22:05.940Z - Time taken for 'hash changed files from watcher' 16.55290000140667ms
+[NX Daemon Server] - 2024-02-09T10:22:05.996Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:05.996Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:06.120Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:06.121Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:06.121Z - [REQUEST]: .nx/cache/project-graph.json~df362efc,.nx/cache/file-map.json~df362efc
+[NX Daemon Server] - 2024-02-09T10:22:06.199Z - Time taken for 'hash changed files from watcher' 11.22070000320673ms
+[NX Daemon Server] - 2024-02-09T10:22:06.259Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:06.262Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:06.384Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:06.384Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:06.384Z - [REQUEST]: .nx/cache/project-graph.json~2335e839,.nx/cache/file-map.json~2335e839
+[NX Daemon Server] - 2024-02-09T10:22:06.449Z - Time taken for 'hash changed files from watcher' 9.563799999654293ms
+[NX Daemon Server] - 2024-02-09T10:22:06.509Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:06.510Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:06.639Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:06.639Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:06.639Z - [REQUEST]: .nx/cache/file-map.json~dbd0764f,.nx/cache/project-graph.json~dbd0764f
+[NX Daemon Server] - 2024-02-09T10:22:06.704Z - Time taken for 'hash changed files from watcher' 12.002399995923042ms
+[NX Daemon Server] - 2024-02-09T10:22:06.761Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:06.763Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:06.885Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:06.885Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:06.885Z - [REQUEST]: .nx/cache/project-graph.json~b356c897,.nx/cache/file-map.json~b356c897
+[NX Daemon Server] - 2024-02-09T10:22:06.951Z - Time taken for 'hash changed files from watcher' 9.942099995911121ms
+[NX Daemon Server] - 2024-02-09T10:22:07.010Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:07.011Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:07.137Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:07.137Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:07.137Z - [REQUEST]: .nx/cache/file-map.json~43495a57,.nx/cache/project-graph.json~43495a57
+[NX Daemon Server] - 2024-02-09T10:22:07.201Z - Time taken for 'hash changed files from watcher' 10.964100003242493ms
+[NX Daemon Server] - 2024-02-09T10:22:07.257Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:07.258Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:07.395Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:07.395Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:07.395Z - [REQUEST]: .nx/cache/project-graph.json~e3c5cc27,.nx/cache/file-map.json~e3c5cc27
+[NX Daemon Server] - 2024-02-09T10:22:07.462Z - Time taken for 'hash changed files from watcher' 16.51470000296831ms
+[NX Daemon Server] - 2024-02-09T10:22:07.514Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:07.514Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:07.638Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:07.638Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:07.638Z - [REQUEST]: .nx/cache/project-graph.json~beca4a3c,.nx/cache/file-map.json~beca4a3c
+[NX Daemon Server] - 2024-02-09T10:22:07.702Z - Time taken for 'hash changed files from watcher' 10.632399998605251ms
+[NX Daemon Server] - 2024-02-09T10:22:07.762Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:07.762Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:07.890Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:07.890Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:07.890Z - [REQUEST]: .nx/cache/project-graph.json~a9b467e9,.nx/cache/file-map.json~a9b467e9
+[NX Daemon Server] - 2024-02-09T10:22:07.955Z - Time taken for 'hash changed files from watcher' 8.572300001978874ms
+[NX Daemon Server] - 2024-02-09T10:22:08.014Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:08.016Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:08.144Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:08.144Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:08.144Z - [REQUEST]: .nx/cache/file-map.json~ed32b9f4,.nx/cache/project-graph.json~ed32b9f4
+[NX Daemon Server] - 2024-02-09T10:22:08.212Z - Time taken for 'hash changed files from watcher' 10.517599999904633ms
+[NX Daemon Server] - 2024-02-09T10:22:08.265Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:08.265Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:08.386Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:08.386Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:08.386Z - [REQUEST]: .nx/cache/file-map.json~25bc22c2,.nx/cache/project-graph.json~25bc22c2
+[NX Daemon Server] - 2024-02-09T10:22:08.446Z - Time taken for 'hash changed files from watcher' 5.726000003516674ms
+[NX Daemon Server] - 2024-02-09T10:22:08.501Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:08.501Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:08.628Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:08.628Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:08.628Z - [REQUEST]: .nx/cache/project-graph.json~ce8b640c,.nx/cache/file-map.json~ce8b640c
+[NX Daemon Server] - 2024-02-09T10:22:08.691Z - Time taken for 'hash changed files from watcher' 11.754099994897842ms
+[NX Daemon Server] - 2024-02-09T10:22:08.749Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:08.752Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:08.878Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:08.878Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:08.878Z - [REQUEST]: .nx/cache/file-map.json~39c603a5,.nx/cache/project-graph.json~39c603a5
+[NX Daemon Server] - 2024-02-09T10:22:08.940Z - Time taken for 'hash changed files from watcher' 10.236100003123283ms
+[NX Daemon Server] - 2024-02-09T10:22:08.986Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:08.987Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:09.114Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:09.114Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:09.114Z - [REQUEST]: .nx/cache/project-graph.json~34eaf787,.nx/cache/file-map.json~34eaf787
+[NX Daemon Server] - 2024-02-09T10:22:09.181Z - Time taken for 'hash changed files from watcher' 10.076899997889996ms
+[NX Daemon Server] - 2024-02-09T10:22:09.238Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:09.239Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:09.367Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:09.367Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:09.367Z - [REQUEST]: .nx/cache/file-map.json~b69a9977,.nx/cache/project-graph.json~b69a9977
+[NX Daemon Server] - 2024-02-09T10:22:09.429Z - Time taken for 'hash changed files from watcher' 13.548699997365475ms
+[NX Daemon Server] - 2024-02-09T10:22:09.489Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:09.490Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:09.613Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:09.613Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:09.613Z - [REQUEST]: .nx/cache/file-map.json~71e885e7,.nx/cache/project-graph.json~71e885e7
+[NX Daemon Server] - 2024-02-09T10:22:09.679Z - Time taken for 'hash changed files from watcher' 9.390300005674362ms
+[NX Daemon Server] - 2024-02-09T10:22:09.743Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:09.743Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:09.861Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:09.861Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:09.861Z - [REQUEST]: .nx/cache/project-graph.json~469aa303,.nx/cache/file-map.json~469aa303
+[NX Daemon Server] - 2024-02-09T10:22:09.922Z - Time taken for 'hash changed files from watcher' 6.028300002217293ms
+[NX Daemon Server] - 2024-02-09T10:22:09.973Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:09.973Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:10.107Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:10.107Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:10.107Z - [REQUEST]: .nx/cache/file-map.json~304a4c0e,.nx/cache/project-graph.json~304a4c0e
+[NX Daemon Server] - 2024-02-09T10:22:10.170Z - Time taken for 'hash changed files from watcher' 15.244599997997284ms
+[NX Daemon Server] - 2024-02-09T10:22:10.225Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:10.228Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:10.358Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:10.359Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:10.359Z - [REQUEST]: .nx/cache/file-map.json~03946aea,.nx/cache/project-graph.json~03946aea
+[NX Daemon Server] - 2024-02-09T10:22:10.427Z - Time taken for 'hash changed files from watcher' 17.273299999535084ms
+[NX Daemon Server] - 2024-02-09T10:22:10.474Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:10.476Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:10.604Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:10.604Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:10.604Z - [REQUEST]: .nx/cache/project-graph.json~982b7f57,.nx/cache/file-map.json~982b7f57
+[NX Daemon Server] - 2024-02-09T10:22:10.667Z - Time taken for 'hash changed files from watcher' 13.020199999213219ms
+[NX Daemon Server] - 2024-02-09T10:22:10.722Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:10.723Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:10.846Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:10.846Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:10.846Z - [REQUEST]: .nx/cache/file-map.json~bbdfd840,.nx/cache/project-graph.json~bbdfd840
+[NX Daemon Server] - 2024-02-09T10:22:10.909Z - Time taken for 'hash changed files from watcher' 6.112700000405312ms
+[NX Daemon Server] - 2024-02-09T10:22:10.956Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:10.958Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:11.090Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:11.090Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:11.090Z - [REQUEST]: .nx/cache/project-graph.json~9aaf3d72,.nx/cache/file-map.json~9aaf3d72
+[NX Daemon Server] - 2024-02-09T10:22:11.155Z - Time taken for 'hash changed files from watcher' 16.69080000370741ms
+[NX Daemon Server] - 2024-02-09T10:22:11.208Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:11.209Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:11.341Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:11.341Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:11.341Z - [REQUEST]: .nx/cache/project-graph.json~6e73f29e,.nx/cache/file-map.json~6e73f29e
+[NX Daemon Server] - 2024-02-09T10:22:11.405Z - Time taken for 'hash changed files from watcher' 14.087600000202656ms
+[NX Daemon Server] - 2024-02-09T10:22:11.460Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:11.460Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:11.587Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:11.587Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:11.587Z - [REQUEST]: .nx/cache/project-graph.json~7eaae114,.nx/cache/file-map.json~7eaae114
+[NX Daemon Server] - 2024-02-09T10:22:11.648Z - Time taken for 'hash changed files from watcher' 12.372900001704693ms
+[NX Daemon Server] - 2024-02-09T10:22:11.708Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:11.708Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:11.835Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:11.835Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:11.835Z - [REQUEST]: .nx/cache/project-graph.json~1b502a17,.nx/cache/file-map.json~1b502a17
+[NX Daemon Server] - 2024-02-09T10:22:11.897Z - Time taken for 'hash changed files from watcher' 7.703199997544289ms
+[NX Daemon Server] - 2024-02-09T10:22:11.947Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:11.948Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:12.074Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:12.074Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:12.074Z - [REQUEST]: .nx/cache/project-graph.json~83c567cc,.nx/cache/file-map.json~83c567cc
+[NX Daemon Server] - 2024-02-09T10:22:12.142Z - Time taken for 'hash changed files from watcher' 10.512299999594688ms
+[NX Daemon Server] - 2024-02-09T10:22:12.196Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:12.198Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:12.327Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:12.327Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:12.327Z - [REQUEST]: .nx/cache/file-map.json~f23c2ed5,.nx/cache/project-graph.json~f23c2ed5
+[NX Daemon Server] - 2024-02-09T10:22:12.393Z - Time taken for 'hash changed files from watcher' 15.185100004076958ms
+[NX Daemon Server] - 2024-02-09T10:22:12.444Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:12.445Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:12.573Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:12.573Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:12.573Z - [REQUEST]: .nx/cache/file-map.json~fb427315,.nx/cache/project-graph.json~fb427315
+[NX Daemon Server] - 2024-02-09T10:22:12.636Z - Time taken for 'hash changed files from watcher' 10.886600002646446ms
+[NX Daemon Server] - 2024-02-09T10:22:12.697Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:12.699Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:12.827Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:12.827Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:12.827Z - [REQUEST]: .nx/cache/project-graph.json~77d8eafd,.nx/cache/file-map.json~77d8eafd
+[NX Daemon Server] - 2024-02-09T10:22:12.891Z - Time taken for 'hash changed files from watcher' 15.09069999307394ms
+[NX Daemon Server] - 2024-02-09T10:22:12.947Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:12.949Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:13.073Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:13.073Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:13.073Z - [REQUEST]: .nx/cache/file-map.json~53331dbf,.nx/cache/project-graph.json~53331dbf
+[NX Daemon Server] - 2024-02-09T10:22:13.144Z - Time taken for 'hash changed files from watcher' 9.887800000607967ms
+[NX Daemon Server] - 2024-02-09T10:22:13.196Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:13.198Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:13.346Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:13.346Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:13.346Z - [REQUEST]: .nx/cache/project-graph.json~d72a3fe7,.nx/cache/file-map.json~d72a3fe7
+[NX Daemon Server] - 2024-02-09T10:22:13.416Z - Time taken for 'hash changed files from watcher' 22.992899999022484ms
+[NX Daemon Server] - 2024-02-09T10:22:13.466Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:13.468Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:13.597Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:13.597Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:13.597Z - [REQUEST]: .nx/cache/project-graph.json~1e4ce734,.nx/cache/file-map.json~1e4ce734
+[NX Daemon Server] - 2024-02-09T10:22:13.663Z - Time taken for 'hash changed files from watcher' 15.173799999058247ms
+[NX Daemon Server] - 2024-02-09T10:22:13.717Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:13.719Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:13.844Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:13.844Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:13.844Z - [REQUEST]: .nx/cache/project-graph.json~bdb9a4e9,.nx/cache/file-map.json~bdb9a4e9
+[NX Daemon Server] - 2024-02-09T10:22:13.910Z - Time taken for 'hash changed files from watcher' 11.190700002014637ms
+[NX Daemon Server] - 2024-02-09T10:22:13.968Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:13.968Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:14.104Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:14.104Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:14.104Z - [REQUEST]: .nx/cache/file-map.json~1af0bb72,.nx/cache/project-graph.json~1af0bb72
+[NX Daemon Server] - 2024-02-09T10:22:14.169Z - Time taken for 'hash changed files from watcher' 16.41210000216961ms
+[NX Daemon Server] - 2024-02-09T10:22:14.218Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:14.218Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:14.336Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:14.336Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:14.336Z - [REQUEST]: .nx/cache/file-map.json~c30524c8,.nx/cache/project-graph.json~c30524c8
+[NX Daemon Server] - 2024-02-09T10:22:14.402Z - Time taken for 'hash changed files from watcher' 7.223099999129772ms
+[NX Daemon Server] - 2024-02-09T10:22:14.455Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:14.456Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:14.579Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:14.579Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:14.579Z - [REQUEST]: .nx/cache/project-graph.json~fda0ca48,.nx/cache/file-map.json~fda0ca48
+[NX Daemon Server] - 2024-02-09T10:22:14.655Z - Time taken for 'hash changed files from watcher' 6.515099994838238ms
+[NX Daemon Server] - 2024-02-09T10:22:14.709Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:14.709Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:14.838Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:14.838Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:14.838Z - [REQUEST]: .nx/cache/project-graph.json~3c29c205,.nx/cache/file-map.json~3c29c205
+[NX Daemon Server] - 2024-02-09T10:22:14.904Z - Time taken for 'hash changed files from watcher' 14.317499995231628ms
+[NX Daemon Server] - 2024-02-09T10:22:14.965Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:14.966Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:15.094Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:15.095Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:15.095Z - [REQUEST]: .nx/cache/project-graph.json~0b07bb95,.nx/cache/file-map.json~0b07bb95
+[NX Daemon Server] - 2024-02-09T10:22:15.158Z - Time taken for 'hash changed files from watcher' 13.63629999756813ms
+[NX Daemon Server] - 2024-02-09T10:22:15.213Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:15.215Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:15.336Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:15.336Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:15.336Z - [REQUEST]: .nx/cache/file-map.json~4ff574f1,.nx/cache/project-graph.json~4ff574f1
+[NX Daemon Server] - 2024-02-09T10:22:15.401Z - Time taken for 'hash changed files from watcher' 7.544699996709824ms
+[NX Daemon Server] - 2024-02-09T10:22:15.450Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:15.450Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:15.575Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:15.576Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:15.576Z - [REQUEST]: .nx/cache/project-graph.json~bb5ac5ff,.nx/cache/file-map.json~bb5ac5ff
+[NX Daemon Server] - 2024-02-09T10:22:15.639Z - Time taken for 'hash changed files from watcher' 10.401199996471405ms
+[NX Daemon Server] - 2024-02-09T10:22:15.702Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:15.703Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:15.825Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:15.825Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:15.825Z - [REQUEST]: .nx/cache/project-graph.json~e8873038,.nx/cache/file-map.json~e8873038
+[NX Daemon Server] - 2024-02-09T10:22:15.890Z - Time taken for 'hash changed files from watcher' 9.609400004148483ms
+[NX Daemon Server] - 2024-02-09T10:22:15.950Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:15.953Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:16.081Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:16.081Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:16.081Z - [REQUEST]: .nx/cache/file-map.json~ff09ed59,.nx/cache/project-graph.json~ff09ed59
+[NX Daemon Server] - 2024-02-09T10:22:16.143Z - Time taken for 'hash changed files from watcher' 12.101499997079372ms
+[NX Daemon Server] - 2024-02-09T10:22:16.203Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:16.203Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:16.331Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:16.331Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:16.331Z - [REQUEST]: .nx/cache/project-graph.json~a6590763,.nx/cache/file-map.json~a6590763
+[NX Daemon Server] - 2024-02-09T10:22:16.396Z - Time taken for 'hash changed files from watcher' 15.260600000619888ms
+[NX Daemon Server] - 2024-02-09T10:22:16.452Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:16.452Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:16.579Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:16.579Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:16.579Z - [REQUEST]: .nx/cache/project-graph.json~5484681b,.nx/cache/file-map.json~5484681b
+[NX Daemon Server] - 2024-02-09T10:22:16.651Z - Time taken for 'hash changed files from watcher' 15.036200001835823ms
+[NX Daemon Server] - 2024-02-09T10:22:16.698Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:16.701Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:16.826Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:16.826Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:16.826Z - [REQUEST]: .nx/cache/project-graph.json~aa7f24b1,.nx/cache/file-map.json~aa7f24b1
+[NX Daemon Server] - 2024-02-09T10:22:16.889Z - Time taken for 'hash changed files from watcher' 11.142899997532368ms
+[NX Daemon Server] - 2024-02-09T10:22:16.950Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:16.953Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:17.073Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:17.073Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:17.073Z - [REQUEST]: .nx/cache/file-map.json~ff22b403,.nx/cache/project-graph.json~ff22b403
+[NX Daemon Server] - 2024-02-09T10:22:17.142Z - Time taken for 'hash changed files from watcher' 7.122899994254112ms
+[NX Daemon Server] - 2024-02-09T10:22:17.198Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:17.200Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:17.328Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:17.328Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:17.328Z - [REQUEST]: .nx/cache/file-map.json~de955117,.nx/cache/project-graph.json~de955117
+[NX Daemon Server] - 2024-02-09T10:22:17.394Z - Time taken for 'hash changed files from watcher' 12.47069999575615ms
+[NX Daemon Server] - 2024-02-09T10:22:17.442Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:17.443Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:17.572Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:17.572Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:17.572Z - [REQUEST]: .nx/cache/project-graph.json~d86a5bd9,.nx/cache/file-map.json~d86a5bd9
+[NX Daemon Server] - 2024-02-09T10:22:17.642Z - Time taken for 'hash changed files from watcher' 13.09569999575615ms
+[NX Daemon Server] - 2024-02-09T10:22:17.692Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:17.693Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:17.825Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:17.825Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:17.825Z - [REQUEST]: .nx/cache/project-graph.json~86024fcf,.nx/cache/file-map.json~86024fcf
+[NX Daemon Server] - 2024-02-09T10:22:17.897Z - Time taken for 'hash changed files from watcher' 13.516999997198582ms
+[NX Daemon Server] - 2024-02-09T10:22:17.943Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:17.944Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:18.076Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:18.076Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:18.076Z - [REQUEST]: .nx/cache/project-graph.json~e2d46f79,.nx/cache/file-map.json~e2d46f79
+[NX Daemon Server] - 2024-02-09T10:22:18.146Z - Time taken for 'hash changed files from watcher' 14.725899994373322ms
+[NX Daemon Server] - 2024-02-09T10:22:18.195Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:18.196Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:18.327Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:18.327Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:18.327Z - [REQUEST]: .nx/cache/project-graph.json~40bc5a48,.nx/cache/file-map.json~40bc5a48
+[NX Daemon Server] - 2024-02-09T10:22:18.396Z - Time taken for 'hash changed files from watcher' 12.979999996721745ms
+[NX Daemon Server] - 2024-02-09T10:22:18.449Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:18.450Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:18.579Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:18.579Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:18.579Z - [REQUEST]: .nx/cache/project-graph.json~d1be76e7,.nx/cache/file-map.json~d1be76e7
+[NX Daemon Server] - 2024-02-09T10:22:18.649Z - Time taken for 'hash changed files from watcher' 12.921399995684624ms
+[NX Daemon Server] - 2024-02-09T10:22:18.699Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:18.699Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:18.824Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:18.824Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:18.824Z - [REQUEST]: .nx/cache/project-graph.json~993cf610,.nx/cache/file-map.json~993cf610
+[NX Daemon Server] - 2024-02-09T10:22:18.898Z - Time taken for 'hash changed files from watcher' 8.501400001347065ms
+[NX Daemon Server] - 2024-02-09T10:22:18.952Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:18.952Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:19.081Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:19.081Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:19.081Z - [REQUEST]: .nx/cache/file-map.json~044f5e99,.nx/cache/project-graph.json~044f5e99
+[NX Daemon Server] - 2024-02-09T10:22:19.150Z - Time taken for 'hash changed files from watcher' 12.395199999213219ms
+[NX Daemon Server] - 2024-02-09T10:22:19.203Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:19.203Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:19.334Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:19.334Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:19.334Z - [REQUEST]: .nx/cache/project-graph.json~4d2d69a0,.nx/cache/file-map.json~4d2d69a0
+[NX Daemon Server] - 2024-02-09T10:22:19.402Z - Time taken for 'hash changed files from watcher' 13.731000006198883ms
+[NX Daemon Server] - 2024-02-09T10:22:19.454Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:19.454Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:19.577Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:19.577Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:19.577Z - [REQUEST]: .nx/cache/project-graph.json~be222dee,.nx/cache/file-map.json~be222dee
+[NX Daemon Server] - 2024-02-09T10:22:19.657Z - Time taken for 'hash changed files from watcher' 8.54839999973774ms
+[NX Daemon Server] - 2024-02-09T10:22:19.701Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:19.702Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:19.825Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:19.825Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:19.825Z - [REQUEST]: .nx/cache/file-map.json~e9be7035,.nx/cache/project-graph.json~e9be7035
+[NX Daemon Server] - 2024-02-09T10:22:19.886Z - Time taken for 'hash changed files from watcher' 7.8601000010967255ms
+[NX Daemon Server] - 2024-02-09T10:22:19.947Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:19.947Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:20.075Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:20.075Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:20.075Z - [REQUEST]: .nx/cache/project-graph.json~668a0062,.nx/cache/file-map.json~668a0062
+[NX Daemon Server] - 2024-02-09T10:22:20.149Z - Time taken for 'hash changed files from watcher' 10.326700001955032ms
+[NX Daemon Server] - 2024-02-09T10:22:20.199Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:20.200Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:20.331Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:20.331Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:20.331Z - [REQUEST]: .nx/cache/project-graph.json~32e7797b,.nx/cache/file-map.json~32e7797b
+[NX Daemon Server] - 2024-02-09T10:22:20.404Z - Time taken for 'hash changed files from watcher' 11.935000002384186ms
+[NX Daemon Server] - 2024-02-09T10:22:20.450Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:20.451Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:20.582Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:20.582Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:20.582Z - [REQUEST]: .nx/cache/file-map.json~50384c08,.nx/cache/project-graph.json~50384c08
+[NX Daemon Server] - 2024-02-09T10:22:20.660Z - Time taken for 'hash changed files from watcher' 11.134999997913837ms
+[NX Daemon Server] - 2024-02-09T10:22:20.717Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:20.717Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:20.846Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:20.847Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:20.847Z - [REQUEST]: .nx/cache/project-graph.json~74339e2d,.nx/cache/file-map.json~74339e2d
+[NX Daemon Server] - 2024-02-09T10:22:20.922Z - Time taken for 'hash changed files from watcher' 11.551500000059605ms
+[NX Daemon Server] - 2024-02-09T10:22:20.971Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:20.971Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:21.105Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:21.106Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:21.106Z - [REQUEST]: .nx/cache/project-graph.json~ecd33991,.nx/cache/file-map.json~ecd33991
+[NX Daemon Server] - 2024-02-09T10:22:21.179Z - Time taken for 'hash changed files from watcher' 17.57039999961853ms
+[NX Daemon Server] - 2024-02-09T10:22:21.223Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:21.223Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:21.353Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:21.353Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:21.353Z - [REQUEST]: .nx/cache/project-graph.json~dbea9286,.nx/cache/file-map.json~dbea9286
+[NX Daemon Server] - 2024-02-09T10:22:21.423Z - Time taken for 'hash changed files from watcher' 10.725500002503395ms
+[NX Daemon Server] - 2024-02-09T10:22:21.475Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:21.475Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:21.605Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:21.606Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:21.606Z - [REQUEST]: .nx/cache/project-graph.json~9fedcd51,.nx/cache/file-map.json~9fedcd51
+[NX Daemon Server] - 2024-02-09T10:22:21.680Z - Time taken for 'hash changed files from watcher' 12.303900003433228ms
+[NX Daemon Server] - 2024-02-09T10:22:21.728Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:21.728Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:21.854Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:21.854Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:21.854Z - [REQUEST]: .nx/cache/project-graph.json~59587c3a,.nx/cache/file-map.json~59587c3a
+[NX Daemon Server] - 2024-02-09T10:22:21.925Z - Time taken for 'hash changed files from watcher' 7.6353999972343445ms
+[NX Daemon Server] - 2024-02-09T10:22:21.982Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:21.983Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:22.115Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:22.115Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:22.115Z - [REQUEST]: .nx/cache/project-graph.json~f140286f,.nx/cache/file-map.json~f140286f
+[NX Daemon Server] - 2024-02-09T10:22:22.189Z - Time taken for 'hash changed files from watcher' 9.55409999936819ms
+[NX Daemon Server] - 2024-02-09T10:22:22.234Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:22.235Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:22.362Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:22.362Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:22.363Z - [REQUEST]: .nx/cache/project-graph.json~7c5f67a8,.nx/cache/file-map.json~7c5f67a8
+[NX Daemon Server] - 2024-02-09T10:22:22.433Z - Time taken for 'hash changed files from watcher' 7.740599997341633ms
+[NX Daemon Server] - 2024-02-09T10:22:22.488Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:22.489Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:22.622Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:22.622Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:22.622Z - [REQUEST]: .nx/cache/project-graph.json~60416dda,.nx/cache/file-map.json~60416dda
+[NX Daemon Server] - 2024-02-09T10:22:22.689Z - Time taken for 'hash changed files from watcher' 13.607400000095367ms
+[NX Daemon Server] - 2024-02-09T10:22:22.744Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:22.744Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:22.873Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:22.873Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:22.873Z - [REQUEST]: .nx/cache/project-graph.json~f748f3d6,.nx/cache/file-map.json~f748f3d6
+[NX Daemon Server] - 2024-02-09T10:22:22.943Z - Time taken for 'hash changed files from watcher' 12.706799998879433ms
+[NX Daemon Server] - 2024-02-09T10:22:22.993Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:22.993Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:23.120Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:23.120Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:23.120Z - [REQUEST]: .nx/cache/project-graph.json~4aac75bb,.nx/cache/file-map.json~4aac75bb
+[NX Daemon Server] - 2024-02-09T10:22:23.197Z - Time taken for 'hash changed files from watcher' 10.779700003564358ms
+[NX Daemon Server] - 2024-02-09T10:22:23.245Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:23.246Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:23.384Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:23.384Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:23.384Z - [REQUEST]: .nx/cache/file-map.json~da09a2cf,.nx/cache/project-graph.json~da09a2cf
+[NX Daemon Server] - 2024-02-09T10:22:23.466Z - Time taken for 'hash changed files from watcher' 14.833999998867512ms
+[NX Daemon Server] - 2024-02-09T10:22:23.524Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:23.524Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:23.652Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:23.652Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:23.652Z - [REQUEST]: .nx/cache/file-map.json~09f07532,.nx/cache/project-graph.json~09f07532
+[NX Daemon Server] - 2024-02-09T10:22:23.725Z - Time taken for 'hash changed files from watcher' 11.23250000178814ms
+[NX Daemon Server] - 2024-02-09T10:22:23.776Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:23.776Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:23.900Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:23.900Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:23.900Z - [REQUEST]: .nx/cache/file-map.json~cb3be031,.nx/cache/project-graph.json~cb3be031
+[NX Daemon Server] - 2024-02-09T10:22:23.973Z - Time taken for 'hash changed files from watcher' 7.068300001323223ms
+[NX Daemon Server] - 2024-02-09T10:22:24.032Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:24.033Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:24.166Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:24.166Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:24.166Z - [REQUEST]: .nx/cache/file-map.json~60b9a944,.nx/cache/project-graph.json~60b9a944
+[NX Daemon Server] - 2024-02-09T10:22:24.236Z - Time taken for 'hash changed files from watcher' 15.38629999756813ms
+[NX Daemon Server] - 2024-02-09T10:22:24.286Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:24.287Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:24.418Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:24.418Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:24.418Z - [REQUEST]: .nx/cache/project-graph.json~70bfc1b6,.nx/cache/file-map.json~70bfc1b6
+[NX Daemon Server] - 2024-02-09T10:22:24.492Z - Time taken for 'hash changed files from watcher' 11.85020000487566ms
+[NX Daemon Server] - 2024-02-09T10:22:24.541Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:24.541Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:24.672Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:24.672Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:24.672Z - [REQUEST]: .nx/cache/project-graph.json~c8d323b1,.nx/cache/file-map.json~c8d323b1
+[NX Daemon Server] - 2024-02-09T10:22:24.754Z - Time taken for 'hash changed files from watcher' 11.197700001299381ms
+[NX Daemon Server] - 2024-02-09T10:22:24.811Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:24.812Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:24.939Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:24.939Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:24.939Z - [REQUEST]: .nx/cache/file-map.json~d6fd04dd,.nx/cache/project-graph.json~d6fd04dd
+[NX Daemon Server] - 2024-02-09T10:22:25.005Z - Time taken for 'hash changed files from watcher' 8.664200000464916ms
+[NX Daemon Server] - 2024-02-09T10:22:25.055Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:25.055Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:25.187Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:25.187Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:25.187Z - [REQUEST]: .nx/cache/project-graph.json~71e622df,.nx/cache/file-map.json~71e622df
+[NX Daemon Server] - 2024-02-09T10:22:25.263Z - Time taken for 'hash changed files from watcher' 13.049400001764297ms
+[NX Daemon Server] - 2024-02-09T10:22:25.309Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:25.309Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:25.440Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:25.440Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:25.440Z - [REQUEST]: .nx/cache/file-map.json~0acbe55b,.nx/cache/project-graph.json~0acbe55b
+[NX Daemon Server] - 2024-02-09T10:22:25.527Z - Time taken for 'hash changed files from watcher' 15.237199999392033ms
+[NX Daemon Server] - 2024-02-09T10:22:25.576Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:25.576Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:25.704Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:25.704Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:25.704Z - [REQUEST]: .nx/cache/file-map.json~05c1d8fd,.nx/cache/project-graph.json~05c1d8fd
+[NX Daemon Server] - 2024-02-09T10:22:25.826Z - Time taken for 'hash changed files from watcher' 9.57429999858141ms
+[NX Daemon Server] - 2024-02-09T10:22:25.874Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:25.875Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:26.007Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:26.007Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:26.007Z - [REQUEST]: .nx/cache/file-map.json~c1e63b9d,.nx/cache/project-graph.json~c1e63b9d
+[NX Daemon Server] - 2024-02-09T10:22:26.101Z - Time taken for 'hash changed files from watcher' 12.845000006258488ms
+[NX Daemon Server] - 2024-02-09T10:22:26.158Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:26.159Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:26.291Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:26.291Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:26.291Z - [REQUEST]: .nx/cache/file-map.json~023ef58c,.nx/cache/project-graph.json~023ef58c
+[NX Daemon Server] - 2024-02-09T10:22:26.404Z - Time taken for 'hash changed files from watcher' 6.860700003802776ms
+[NX Daemon Server] - 2024-02-09T10:22:26.459Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:26.460Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:26.589Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:26.589Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:26.589Z - [REQUEST]: .nx/cache/project-graph.json~7bf43b70,.nx/cache/file-map.json~7bf43b70
+[NX Daemon Server] - 2024-02-09T10:22:26.672Z - Time taken for 'hash changed files from watcher' 7.940200001001358ms
+[NX Daemon Server] - 2024-02-09T10:22:26.729Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:26.729Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:26.872Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:26.872Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:26.872Z - [REQUEST]: .nx/cache/project-graph.json~11b114d0,.nx/cache/file-map.json~11b114d0
+[NX Daemon Server] - 2024-02-09T10:22:26.951Z - Time taken for 'hash changed files from watcher' 18.60649999976158ms
+[NX Daemon Server] - 2024-02-09T10:22:26.993Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:26.994Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:27.122Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:27.122Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:27.122Z - [REQUEST]: .nx/cache/project-graph.json~80a82bd5,.nx/cache/file-map.json~80a82bd5
+[NX Daemon Server] - 2024-02-09T10:22:27.196Z - Time taken for 'hash changed files from watcher' 12.425499998033047ms
+[NX Daemon Server] - 2024-02-09T10:22:27.256Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:27.258Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:27.387Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:27.387Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:27.387Z - [REQUEST]: .nx/cache/file-map.json~0d520f38,.nx/cache/project-graph.json~0d520f38
+[NX Daemon Server] - 2024-02-09T10:22:27.465Z - Time taken for 'hash changed files from watcher' 11.200000002980232ms
+[NX Daemon Server] - 2024-02-09T10:22:27.518Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:27.519Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:27.647Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:27.647Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:27.647Z - [REQUEST]: .nx/cache/project-graph.json~f39b2efc,.nx/cache/file-map.json~f39b2efc
+[NX Daemon Server] - 2024-02-09T10:22:27.731Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:27.731Z - Time taken for 'hash changed files from watcher' 12.728299997746944ms
+[NX Daemon Server] - 2024-02-09T10:22:27.782Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:27.783Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:27.906Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:27.906Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:27.906Z - [REQUEST]: .nx/cache/file-map.json~e3d6a83a,.nx/cache/project-graph.json~e3d6a83a
+[NX Daemon Server] - 2024-02-09T10:22:27.968Z - Time taken for 'hash changed files from watcher' 6.052299998700619ms
+[NX Daemon Server] - 2024-02-09T10:22:28.020Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:28.020Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:28.152Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:28.152Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:28.152Z - [REQUEST]: .nx/cache/file-map.json~c29b17a5,.nx/cache/project-graph.json~c29b17a5
+[NX Daemon Server] - 2024-02-09T10:22:28.224Z - Time taken for 'hash changed files from watcher' 14.53550000488758ms
+[NX Daemon Server] - 2024-02-09T10:22:28.270Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:28.270Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:28.401Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:28.401Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:28.401Z - [REQUEST]: .nx/cache/file-map.json~0e35205e,.nx/cache/project-graph.json~0e35205e
+[NX Daemon Server] - 2024-02-09T10:22:28.479Z - Time taken for 'hash changed files from watcher' 14.279899999499321ms
+[NX Daemon Server] - 2024-02-09T10:22:28.543Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:28.546Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:28.665Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:28.665Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:28.665Z - [REQUEST]: .nx/cache/file-map.json~f4b3c870,.nx/cache/project-graph.json~f4b3c870
+[NX Daemon Server] - 2024-02-09T10:22:28.733Z - Time taken for 'hash changed files from watcher' 6.084899999201298ms
+[NX Daemon Server] - 2024-02-09T10:22:28.792Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:28.793Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:28.917Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:28.917Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:28.917Z - [REQUEST]: .nx/cache/project-graph.json~8435eefd,.nx/cache/file-map.json~8435eefd
+[NX Daemon Server] - 2024-02-09T10:22:28.977Z - Time taken for 'hash changed files from watcher' 9.256000004708767ms
+[NX Daemon Server] - 2024-02-09T10:22:29.027Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:29.030Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:29.153Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:29.153Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:29.153Z - [REQUEST]: .nx/cache/file-map.json~3a02ba95,.nx/cache/project-graph.json~3a02ba95
+[NX Daemon Server] - 2024-02-09T10:22:29.224Z - Time taken for 'hash changed files from watcher' 5.893299996852875ms
+[NX Daemon Server] - 2024-02-09T10:22:29.280Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:29.281Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:29.402Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:29.402Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:29.402Z - [REQUEST]: .nx/cache/project-graph.json~ef491ca2,.nx/cache/file-map.json~ef491ca2
+[NX Daemon Server] - 2024-02-09T10:22:29.468Z - Time taken for 'hash changed files from watcher' 5.5397999957203865ms
+[NX Daemon Server] - 2024-02-09T10:22:29.517Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:29.518Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:29.640Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:29.640Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:29.640Z - [REQUEST]: .nx/cache/project-graph.json~a14a36e8,.nx/cache/file-map.json~a14a36e8
+[NX Daemon Server] - 2024-02-09T10:22:29.725Z - Time taken for 'hash changed files from watcher' 14.908700004220009ms
+[NX Daemon Server] - 2024-02-09T10:22:29.775Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:29.776Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:29.905Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:29.906Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:29.906Z - [REQUEST]: .nx/cache/project-graph.json~3b403eea,.nx/cache/file-map.json~3b403eea
+[NX Daemon Server] - 2024-02-09T10:22:29.977Z - Time taken for 'hash changed files from watcher' 12.585299998521805ms
+[NX Daemon Server] - 2024-02-09T10:22:30.024Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:30.025Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:30.153Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:30.153Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:30.153Z - [REQUEST]: .nx/cache/project-graph.json~3acd0941,.nx/cache/file-map.json~3acd0941
+[NX Daemon Server] - 2024-02-09T10:22:30.221Z - Time taken for 'hash changed files from watcher' 5.302799999713898ms
+[NX Daemon Server] - 2024-02-09T10:22:30.280Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:30.281Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:30.403Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:30.403Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:30.403Z - [REQUEST]: .nx/cache/project-graph.json~a0ae7142,.nx/cache/file-map.json~a0ae7142
+[NX Daemon Server] - 2024-02-09T10:22:30.469Z - Time taken for 'hash changed files from watcher' 6.530000001192093ms
+[NX Daemon Server] - 2024-02-09T10:22:30.515Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:30.516Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:30.647Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:30.647Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:30.647Z - [REQUEST]: .nx/cache/file-map.json~7894f7c5,.nx/cache/project-graph.json~7894f7c5
+[NX Daemon Server] - 2024-02-09T10:22:30.712Z - Time taken for 'hash changed files from watcher' 9.218899995088577ms
+[NX Daemon Server] - 2024-02-09T10:22:30.771Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:30.774Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:30.903Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:30.903Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:30.903Z - [REQUEST]: .nx/cache/project-graph.json~064e51bc,.nx/cache/file-map.json~064e51bc
+[NX Daemon Server] - 2024-02-09T10:22:30.984Z - Time taken for 'hash changed files from watcher' 11.985700003802776ms
+[NX Daemon Server] - 2024-02-09T10:22:31.034Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:31.035Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:31.170Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:31.170Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:31.170Z - [REQUEST]: .nx/cache/project-graph.json~a7062fb3,.nx/cache/file-map.json~a7062fb3
+[NX Daemon Server] - 2024-02-09T10:22:31.239Z - Time taken for 'hash changed files from watcher' 16.759900003671646ms
+[NX Daemon Server] - 2024-02-09T10:22:31.283Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:31.283Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:31.419Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:31.419Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:31.419Z - [REQUEST]: .nx/cache/file-map.json~84d2864b,.nx/cache/project-graph.json~84d2864b
+[NX Daemon Server] - 2024-02-09T10:22:31.489Z - Time taken for 'hash changed files from watcher' 17.125299997627735ms
+[NX Daemon Server] - 2024-02-09T10:22:31.538Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:31.538Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:31.663Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:31.663Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:31.663Z - [REQUEST]: .nx/cache/project-graph.json~15ecba6c,.nx/cache/file-map.json~15ecba6c
+[NX Daemon Server] - 2024-02-09T10:22:31.732Z - Time taken for 'hash changed files from watcher' 11.786399997770786ms
+[NX Daemon Server] - 2024-02-09T10:22:31.781Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:31.781Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:31.904Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:31.904Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:31.904Z - [REQUEST]: .nx/cache/project-graph.json~82ec6627,.nx/cache/file-map.json~82ec6627
+[NX Daemon Server] - 2024-02-09T10:22:31.991Z - Time taken for 'hash changed files from watcher' 6.507799997925758ms
+[NX Daemon Server] - 2024-02-09T10:22:32.047Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:32.048Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:32.185Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:32.185Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:32.185Z - [REQUEST]: .nx/cache/project-graph.json~06eb7123,.nx/cache/file-map.json~06eb7123
+[NX Daemon Server] - 2024-02-09T10:22:32.247Z - Time taken for 'hash changed files from watcher' 13.229000002145767ms
+[NX Daemon Server] - 2024-02-09T10:22:32.305Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:32.306Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:32.433Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:32.433Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:32.433Z - [REQUEST]: .nx/cache/file-map.json~f0548ee8,.nx/cache/project-graph.json~f0548ee8
+[NX Daemon Server] - 2024-02-09T10:22:32.494Z - Time taken for 'hash changed files from watcher' 11.772199995815754ms
+[NX Daemon Server] - 2024-02-09T10:22:32.555Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:32.558Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:32.693Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:32.693Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:32.693Z - [REQUEST]: .nx/cache/project-graph.json~cb9c427a,.nx/cache/file-map.json~cb9c427a
+[NX Daemon Server] - 2024-02-09T10:22:32.759Z - Time taken for 'hash changed files from watcher' 11.499499998986721ms
+[NX Daemon Server] - 2024-02-09T10:22:32.813Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:32.816Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:32.955Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:32.955Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:32.955Z - [REQUEST]: .nx/cache/file-map.json~adb8152c,.nx/cache/project-graph.json~adb8152c
+[NX Daemon Server] - 2024-02-09T10:22:33.025Z - Time taken for 'hash changed files from watcher' 21.634700000286102ms
+[NX Daemon Server] - 2024-02-09T10:22:33.076Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:33.078Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:33.202Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:33.202Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:33.202Z - [REQUEST]: .nx/cache/project-graph.json~a166ff8e,.nx/cache/file-map.json~a166ff8e
+[NX Daemon Server] - 2024-02-09T10:22:33.276Z - Time taken for 'hash changed files from watcher' 9.088600002229214ms
+[NX Daemon Server] - 2024-02-09T10:22:33.326Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:33.327Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:33.450Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:33.451Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:33.451Z - [REQUEST]: .nx/cache/project-graph.json~eb05d5cf,.nx/cache/file-map.json~eb05d5cf
+[NX Daemon Server] - 2024-02-09T10:22:33.558Z - Time taken for 'hash changed files from watcher' 7.503200002014637ms
+[NX Daemon Server] - 2024-02-09T10:22:33.611Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:33.612Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:33.746Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:33.746Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:33.746Z - [REQUEST]: .nx/cache/file-map.json~98d105a5,.nx/cache/project-graph.json~98d105a5
+[NX Daemon Server] - 2024-02-09T10:22:33.813Z - Time taken for 'hash changed files from watcher' 16.114700004458427ms
+[NX Daemon Server] - 2024-02-09T10:22:33.864Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:33.864Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:33.996Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:33.996Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:33.996Z - [REQUEST]: .nx/cache/project-graph.json~3af81f8d,.nx/cache/file-map.json~3af81f8d
+[NX Daemon Server] - 2024-02-09T10:22:34.092Z - Time taken for 'hash changed files from watcher' 13.619999997317791ms
+[NX Daemon Server] - 2024-02-09T10:22:34.144Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:34.144Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:34.271Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:34.272Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:34.272Z - [REQUEST]: .nx/cache/project-graph.json~9db66402,.nx/cache/file-map.json~9db66402
+[NX Daemon Server] - 2024-02-09T10:22:34.364Z - Time taken for 'hash changed files from watcher' 11.721400000154972ms
+[NX Daemon Server] - 2024-02-09T10:22:34.412Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:34.412Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:34.541Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:34.541Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:34.541Z - [REQUEST]: .nx/cache/file-map.json~2cf27f17,.nx/cache/project-graph.json~2cf27f17
+[NX Daemon Server] - 2024-02-09T10:22:34.611Z - Time taken for 'hash changed files from watcher' 10.129799999296665ms
+[NX Daemon Server] - 2024-02-09T10:22:34.667Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:34.667Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:34.799Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:34.799Z - [REQUEST]: .nx/cache/file-map.json,.nx/cache/project-graph.json
+[NX Daemon Server] - 2024-02-09T10:22:34.799Z - [REQUEST]: .nx/cache/project-graph.json~134a8344,.nx/cache/file-map.json~134a8344
+[NX Daemon Server] - 2024-02-09T10:22:34.907Z - Time taken for 'hash changed files from watcher' 14.54169999808073ms
+[NX Daemon Server] - 2024-02-09T10:22:34.951Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:34.952Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:35.083Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:35.083Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:35.083Z - [REQUEST]: .nx/cache/project-graph.json~46ee06f2,.nx/cache/file-map.json~46ee06f2
+[NX Daemon Server] - 2024-02-09T10:22:35.154Z - Time taken for 'hash changed files from watcher' 9.130300000309944ms
+[NX Daemon Server] - 2024-02-09T10:22:35.199Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:35.200Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:35.336Z - [REQUEST]: Updated file-hasher based on watched changes, recomputing project graph...
+[NX Daemon Server] - 2024-02-09T10:22:35.336Z - [REQUEST]: .nx/cache/project-graph.json,.nx/cache/file-map.json
+[NX Daemon Server] - 2024-02-09T10:22:35.336Z - [REQUEST]: .nx/cache/project-graph.json~eb2b577d,.nx/cache/file-map.json~eb2b577d
+[NX Daemon Server] - 2024-02-09T10:22:35.430Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:35.431Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 0 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:35.432Z - Time taken for 'hash changed files from watcher' 12.343400001525879ms
+[NX Daemon Server] - 2024-02-09T10:22:35.481Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-09T10:22:35.482Z - [WATCHER]: 2 file(s) created or restored, 0 file(s) modified, 2 file(s) deleted
+[NX Daemon Server] - 2024-02-09T10:22:35.559Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:35.559Z - Time taken for 'hash changed files from watcher' 8.93019999563694ms
+[NX Daemon Server] - 2024-02-09T10:22:36.438Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:36.439Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:22:36.439Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:36.439Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:36.483Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:36.484Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:36.485Z - Time taken for 'hash changed files from watcher' 0.0034999996423721313ms
+[NX Daemon Server] - 2024-02-09T10:22:36.485Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:22:37.716Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:22:37.719Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:22:37.724Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:37.727Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:22:37.728Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:37.730Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:37.811Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:37.811Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:37.813Z - Time taken for 'hash changed files from watcher' 39.206299997866154ms
+[NX Daemon Server] - 2024-02-09T10:22:37.814Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:22:38.062Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:22:38.064Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:22:38.070Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:38.071Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:22:38.071Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:38.073Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:38.141Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:38.141Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:38.141Z - Time taken for 'hash changed files from watcher' 28.619699999690056ms
+[NX Daemon Server] - 2024-02-09T10:22:38.141Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:22:39.347Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:22:39.353Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:22:39.354Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:39.355Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-09T10:22:39.356Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:39.358Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:39.436Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:39.436Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:39.437Z - Time taken for 'hash changed files from watcher' 35.433799996972084ms
+[NX Daemon Server] - 2024-02-09T10:22:39.438Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:22:42.435Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:22:42.437Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:22:42.440Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:42.441Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:22:42.442Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:42.443Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:42.512Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:42.513Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:42.513Z - Time taken for 'hash changed files from watcher' 29.68419999629259ms
+[NX Daemon Server] - 2024-02-09T10:22:42.513Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:22:43.692Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:22:43.696Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:22:43.697Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:43.698Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-09T10:22:43.700Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:43.701Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:43.766Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:43.766Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:43.768Z - Time taken for 'hash changed files from watcher' 24.80629999935627ms
+[NX Daemon Server] - 2024-02-09T10:22:43.769Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:22:51.782Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:22:51.784Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:22:51.796Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:51.797Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:22:51.797Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:51.798Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:51.851Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:51.851Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:51.851Z - Time taken for 'hash changed files from watcher' 15.92629999667406ms
+[NX Daemon Server] - 2024-02-09T10:22:51.852Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:22:52.966Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:22:52.968Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:22:52.981Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:52.984Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:22:52.984Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:22:52.985Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:22:53.063Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:22:53.064Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:22:53.065Z - Time taken for 'hash changed files from watcher' 42.018800005316734ms
+[NX Daemon Server] - 2024-02-09T10:22:53.066Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:23:08.131Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:23:08.132Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:23:08.136Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:08.137Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:23:08.137Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:08.139Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:23:08.192Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:23:08.192Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:23:08.192Z - Time taken for 'hash changed files from watcher' 15.064000003039837ms
+[NX Daemon Server] - 2024-02-09T10:23:08.192Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:23:09.327Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:23:09.329Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:23:09.339Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:09.341Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:23:09.341Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:09.343Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:23:09.408Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:23:09.408Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:23:09.409Z - Time taken for 'hash changed files from watcher' 27.179800003767014ms
+[NX Daemon Server] - 2024-02-09T10:23:09.410Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:23:33.514Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:23:33.516Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:23:33.520Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:33.521Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:23:33.521Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:33.522Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:23:33.597Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:23:33.597Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:23:33.597Z - Time taken for 'hash changed files from watcher' 37.33220000565052ms
+[NX Daemon Server] - 2024-02-09T10:23:33.598Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-09T10:23:34.802Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-09T10:23:34.805Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-09T10:23:34.817Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:34.820Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-09T10:23:34.820Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-09T10:23:34.821Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-09T10:23:34.887Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-09T10:23:34.887Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-09T10:23:34.889Z - Time taken for 'hash changed files from watcher' 25.116800002753735ms
+[NX Daemon Server] - 2024-02-09T10:23:34.890Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-10T14:46:32.707Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-10T14:46:32.710Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-10T14:46:32.714Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-10T14:46:32.715Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-10T14:46:32.715Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-10T14:46:32.718Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-10T14:46:34.025Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-10T14:46:34.025Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-10T14:46:34.026Z - Time taken for 'hash changed files from watcher' 402.97260001301765ms
+[NX Daemon Server] - 2024-02-10T14:46:34.026Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-10T15:48:51.059Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-10T15:48:51.064Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-10T15:48:51.070Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-10T15:48:51.070Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-10T15:48:51.071Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-10T15:48:51.073Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-10T15:48:51.175Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-10T15:48:51.175Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-10T15:48:51.176Z - Time taken for 'hash changed files from watcher' 45.212000012397766ms
+[NX Daemon Server] - 2024-02-10T15:48:51.176Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-11T09:01:43.066Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-11T09:01:43.071Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-11T09:01:43.081Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-11T09:01:43.082Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-11T09:01:43.082Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-11T09:01:43.084Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-11T09:01:43.192Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-11T09:01:43.192Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-11T09:01:43.193Z - Time taken for 'hash changed files from watcher' 31.82649999856949ms
+[NX Daemon Server] - 2024-02-11T09:01:43.193Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-11T18:59:55.433Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-11T18:59:55.435Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-11T18:59:55.448Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-11T18:59:55.449Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-11T18:59:55.449Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-11T18:59:55.451Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-11T18:59:56.508Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-11T18:59:56.509Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-11T18:59:56.509Z - Time taken for 'hash changed files from watcher' 379.8712999820709ms
+[NX Daemon Server] - 2024-02-11T18:59:56.509Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-12T16:32:22.402Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-12T16:32:22.404Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-12T16:32:22.409Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-12T16:32:22.410Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-12T16:32:22.410Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-12T16:32:22.416Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-12T16:32:23.464Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-12T16:32:23.464Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-12T16:32:23.465Z - Time taken for 'hash changed files from watcher' 330.7449999451637ms
+[NX Daemon Server] - 2024-02-12T16:32:23.465Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-12T17:20:12.543Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-12T17:20:12.546Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-12T17:20:12.557Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-12T17:20:12.558Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-12T17:20:12.559Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-12T17:20:12.561Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-12T17:20:12.642Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-12T17:20:12.643Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-12T17:20:12.643Z - Time taken for 'hash changed files from watcher' 27.236500024795532ms
+[NX Daemon Server] - 2024-02-12T17:20:12.643Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-13T06:38:43.989Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-13T06:38:43.992Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-13T06:38:44.001Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-13T06:38:44.002Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-13T06:38:44.015Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-13T06:38:44.017Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-13T06:38:45.073Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-13T06:38:45.073Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-13T06:38:45.073Z - Time taken for 'hash changed files from watcher' 313.7829999923706ms
+[NX Daemon Server] - 2024-02-13T06:38:45.073Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-13T06:38:54.832Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-13T06:38:54.835Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-13T06:38:54.836Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-13T06:38:54.837Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-13T06:38:54.837Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-13T06:38:54.841Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-13T06:38:54.929Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-13T06:38:54.929Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-13T06:38:54.930Z - Time taken for 'hash changed files from watcher' 44.179800033569336ms
+[NX Daemon Server] - 2024-02-13T06:38:54.930Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-13T10:42:10.357Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-13T10:42:10.362Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-13T10:42:10.363Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-13T10:42:10.364Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-13T10:42:10.364Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-13T10:42:10.367Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-13T10:42:10.453Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-13T10:42:10.453Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-13T10:42:10.453Z - Time taken for 'hash changed files from watcher' 28.785999953746796ms
+[NX Daemon Server] - 2024-02-13T10:42:10.454Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-14T08:34:46.415Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-14T08:34:46.417Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-14T08:34:46.429Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T08:34:46.430Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-14T08:34:46.430Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T08:34:46.434Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-14T08:34:47.971Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-14T08:34:47.972Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-14T08:34:47.972Z - Time taken for 'hash changed files from watcher' 520.9082000255585ms
+[NX Daemon Server] - 2024-02-14T08:34:47.972Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-14T08:35:23.416Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-14T08:35:23.418Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-14T08:35:23.426Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T08:35:23.427Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-14T08:35:23.427Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T08:35:23.428Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-14T08:35:23.503Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-14T08:35:23.503Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-14T08:35:23.504Z - Time taken for 'hash changed files from watcher' 31.13840001821518ms
+[NX Daemon Server] - 2024-02-14T08:35:23.504Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-14T09:52:22.208Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-14T09:52:22.212Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-14T09:52:22.223Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T09:52:22.224Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-14T09:52:22.224Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T09:52:22.228Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-14T09:52:22.334Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-14T09:52:22.334Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-14T09:52:22.334Z - Time taken for 'hash changed files from watcher' 28.218699991703033ms
+[NX Daemon Server] - 2024-02-14T09:52:22.335Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-14T14:37:09.282Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-14T14:37:09.285Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-14T14:37:09.288Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T14:37:09.289Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-14T14:37:09.289Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-14T14:37:09.291Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-14T14:37:10.689Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-14T14:37:10.689Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-14T14:37:10.689Z - Time taken for 'hash changed files from watcher' 424.6177000403404ms
+[NX Daemon Server] - 2024-02-14T14:37:10.690Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-15T16:12:32.778Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-15T16:12:32.787Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-15T16:12:32.789Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-15T16:12:32.789Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-15T16:12:32.790Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-15T16:12:32.794Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-15T16:12:34.972Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-15T16:12:34.972Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-15T16:12:34.973Z - Time taken for 'hash changed files from watcher' 598.3834999999963ms
+[NX Daemon Server] - 2024-02-15T16:12:34.974Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-15T17:16:46.920Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-15T17:16:46.926Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-15T17:16:46.927Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-15T17:16:46.927Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-15T17:16:46.928Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-15T17:16:46.930Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-15T17:16:47.043Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-15T17:16:47.043Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-15T17:16:47.043Z - Time taken for 'hash changed files from watcher' 45.21750000026077ms
+[NX Daemon Server] - 2024-02-15T17:16:47.043Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-16T07:05:12.711Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-16T07:05:12.713Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-16T07:05:12.724Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T07:05:12.725Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-16T07:05:12.725Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T07:05:12.728Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-16T07:05:13.825Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-16T07:05:13.825Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-16T07:05:13.826Z - Time taken for 'hash changed files from watcher' 369.80250000208616ms
+[NX Daemon Server] - 2024-02-16T07:05:13.826Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-16T07:05:13.826Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-16T07:05:26.430Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-16T07:05:26.432Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-16T07:05:26.441Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T07:05:26.441Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-16T07:05:26.441Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T07:05:26.443Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-16T07:05:26.518Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-16T07:05:26.518Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-16T07:05:26.518Z - Time taken for 'hash changed files from watcher' 29.85249999910593ms
+[NX Daemon Server] - 2024-02-16T07:05:26.519Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-16T09:47:11.495Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-16T09:47:11.497Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-16T09:47:11.500Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:11.501Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-16T09:47:11.501Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:11.503Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-16T09:47:11.571Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-16T09:47:11.571Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-16T09:47:11.571Z - Time taken for 'hash changed files from watcher' 30.21500000357628ms
+[NX Daemon Server] - 2024-02-16T09:47:11.572Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-16T09:47:12.760Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-16T09:47:12.762Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-16T09:47:12.768Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:12.770Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-16T09:47:12.770Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:12.772Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-16T09:47:12.835Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-16T09:47:12.836Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-16T09:47:12.837Z - Time taken for 'hash changed files from watcher' 24.9679000005126ms
+[NX Daemon Server] - 2024-02-16T09:47:12.838Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-16T09:47:36.866Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-16T09:47:36.868Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-16T09:47:36.877Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:36.877Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-16T09:47:36.877Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:36.878Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-16T09:47:36.946Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-16T09:47:36.946Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-16T09:47:36.947Z - Time taken for 'hash changed files from watcher' 30.441100001335144ms
+[NX Daemon Server] - 2024-02-16T09:47:36.947Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-16T09:47:38.139Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-16T09:47:38.142Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-16T09:47:38.154Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:38.157Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-16T09:47:38.157Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-16T09:47:38.158Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-16T09:47:38.223Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-16T09:47:38.223Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-16T09:47:38.224Z - Time taken for 'hash changed files from watcher' 26.615199998021126ms
+[NX Daemon Server] - 2024-02-16T09:47:38.225Z - Done responding to the client null

+ 1 - 1
.nx/cache/d/server-process.json

@@ -1 +1 @@
-{"processId":10992}
+{"processId":1936}

+ 342 - 165
.nx/cache/file-map.json

@@ -17,6 +17,7 @@
     "bootstrap": "^5.2.3",
     "localbase": "^0.7.5",
     "marked": "^9.0.0",
+    "ngx-editor": "^16.0.1",
     "ngx-markdown": "^17.1.1",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",
@@ -52,23 +53,61 @@
         },
         {
           "file": ".gitignore",
-          "hash": "14403612913854412132"
+          "hash": "1797387279637198493"
         },
         {
           "file": ".nx/cache/file-map.json",
-          "hash": "12374468785195283946"
+          "hash": "6101741595380537162"
         },
         {
           "file": ".nx/cache/lockfile.hash",
-          "hash": "1131812260226647771"
+          "hash": "1807725105127397911"
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/3rdpartylicenses.txt",
+          "hash": "12697586560952242144"
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/environment.js",
+          "hash": "12720306338338068063"
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/favicon.ico",
+          "hash": "9303420814833116677"
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/main.js",
+          "hash": "7728609541428413042",
+          "deps": [
+            [
+              "npm:util",
+              "dynamic"
+            ]
+          ]
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/polyfills.js",
+          "hash": "13485831370010545069"
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/runtime.js",
+          "hash": "8062122689220335238"
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/styles.css",
+          "hash": "5562174198026097626"
+        },
+        {
+          "file": ".nx/cache/nx-console-project-graph/static/styles.js",
+          "hash": "6967509609777074983"
         },
         {
           "file": ".nx/cache/parsed-lock-file.json",
-          "hash": "9686269968212919820"
+          "hash": "2008921783949884943"
         },
         {
           "file": ".nx/cache/project-graph.json",
-          "hash": "5627068651760096262"
+          "hash": "7945988795607389713"
         },
         {
           "file": ".nx/cache/run.json",
@@ -108,11 +147,11 @@
         },
         {
           "file": "package-lock.json",
-          "hash": "15154945580376548321"
+          "hash": "17932886160708320101"
         },
         {
           "file": "package.json",
-          "hash": "14649899353226545183",
+          "hash": "1873079537144545368",
           "deps": [
             "npm:@angular/animations",
             "npm:@angular/cdk",
@@ -129,6 +168,7 @@
             "npm:bootstrap",
             "npm:localbase",
             "npm:marked",
+            "npm:ngx-editor",
             "npm:ngx-markdown",
             "npm:rxjs",
             "npm:tslib",
@@ -155,7 +195,7 @@
         },
         {
           "file": "project.json",
-          "hash": "4754753638184257481"
+          "hash": "17652802537377509773"
         },
         {
           "file": "src/app/app-routing.module.ts",
@@ -215,7 +255,7 @@
         },
         {
           "file": "src/app/character/character-creator/character-creator.component.ts",
-          "hash": "5994528503661264661",
+          "hash": "6154428168808432270",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/router"
@@ -223,7 +263,7 @@
         },
         {
           "file": "src/app/character/character-picker/character-card/character-card.component.html",
-          "hash": "10966515801970178610"
+          "hash": "7876704394505920188"
         },
         {
           "file": "src/app/character/character-picker/character-card/character-card.component.scss",
@@ -238,18 +278,18 @@
         },
         {
           "file": "src/app/character/character-picker/character-card/character-card.component.ts",
-          "hash": "1867558953397105054",
+          "hash": "8185763687494061389",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/character/character-picker/character-picker.component.html",
-          "hash": "2803762663272688402"
+          "hash": "15978945758181411122"
         },
         {
           "file": "src/app/character/character-picker/character-picker.component.scss",
-          "hash": "5027378200482917054"
+          "hash": "1048462220482138431"
         },
         {
           "file": "src/app/character/character-picker/character-picker.component.spec.ts",
@@ -260,7 +300,7 @@
         },
         {
           "file": "src/app/character/character-picker/character-picker.component.ts",
-          "hash": "4146840337148799073",
+          "hash": "3287843810667246833",
           "deps": [
             "npm:@angular/core",
             "npm:@ng-bootstrap/ng-bootstrap",
@@ -353,11 +393,11 @@
         },
         {
           "file": "src/app/journal/journal-character/class/class.component.html",
-          "hash": "9938681331437246068"
+          "hash": "15445640973904387676"
         },
         {
           "file": "src/app/journal/journal-character/class/class.component.scss",
-          "hash": "5745131116807917954"
+          "hash": "18252750401704688947"
         },
         {
           "file": "src/app/journal/journal-character/class/class.component.spec.ts",
@@ -379,7 +419,7 @@
         },
         {
           "file": "src/app/journal/journal-character/general/general.component.scss",
-          "hash": "4528829735759374345"
+          "hash": "8129094922836603485"
         },
         {
           "file": "src/app/journal/journal-character/general/general.component.spec.ts",
@@ -397,11 +437,11 @@
         },
         {
           "file": "src/app/journal/journal-character/journal-character.component.html",
-          "hash": "13997073716730116390"
+          "hash": "16930769555395221067"
         },
         {
           "file": "src/app/journal/journal-character/journal-character.component.scss",
-          "hash": "7830617728949456477"
+          "hash": "14294664936320761538"
         },
         {
           "file": "src/app/journal/journal-character/journal-character.component.spec.ts",
@@ -419,11 +459,11 @@
         },
         {
           "file": "src/app/journal/journal-character/species/species.component.html",
-          "hash": "18227917082634053917"
+          "hash": "7156914167829430260"
         },
         {
           "file": "src/app/journal/journal-character/species/species.component.scss",
-          "hash": "14598570090646711395"
+          "hash": "5870761987262111706"
         },
         {
           "file": "src/app/journal/journal-character/species/species.component.spec.ts",
@@ -463,11 +503,11 @@
         },
         {
           "file": "src/app/journal/journal-character/subclass/subclass.component.html",
-          "hash": "4781398737346943412"
+          "hash": "56414902506354574"
         },
         {
           "file": "src/app/journal/journal-character/subclass/subclass.component.scss",
-          "hash": "7825753966458440769"
+          "hash": "767497274132892755"
         },
         {
           "file": "src/app/journal/journal-character/subclass/subclass.component.spec.ts",
@@ -478,7 +518,7 @@
         },
         {
           "file": "src/app/journal/journal-character/subclass/subclass.component.ts",
-          "hash": "14630075694002945060",
+          "hash": "16982055744804823585",
           "deps": [
             "npm:@angular/core"
           ]
@@ -489,7 +529,7 @@
         },
         {
           "file": "src/app/journal/journal-home/details-panel/details-panel.component.scss",
-          "hash": "2109794499383080781"
+          "hash": "8210640053281129085"
         },
         {
           "file": "src/app/journal/journal-home/details-panel/details-panel.component.spec.ts",
@@ -500,18 +540,18 @@
         },
         {
           "file": "src/app/journal/journal-home/details-panel/details-panel.component.ts",
-          "hash": "1145027531543304849",
+          "hash": "1121839598978250298",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/journal/journal-home/journal-home.component.html",
-          "hash": "576742735253818865"
+          "hash": "13563809568463883191"
         },
         {
           "file": "src/app/journal/journal-home/journal-home.component.scss",
-          "hash": "4106896734373488111"
+          "hash": "3797310615571780184"
         },
         {
           "file": "src/app/journal/journal-home/journal-home.component.spec.ts",
@@ -522,10 +562,9 @@
         },
         {
           "file": "src/app/journal/journal-home/journal-home.component.ts",
-          "hash": "9809844559358035469",
+          "hash": "8447817032077225134",
           "deps": [
-            "npm:@angular/core",
-            "npm:@angular/router"
+            "npm:@angular/core"
           ]
         },
         {
@@ -552,11 +591,11 @@
         },
         {
           "file": "src/app/journal/journal-home/navigation-panel/navigation-panel.component.html",
-          "hash": "14885849127765204370"
+          "hash": "16446591340569287889"
         },
         {
           "file": "src/app/journal/journal-home/navigation-panel/navigation-panel.component.scss",
-          "hash": "1674413794949952307"
+          "hash": "12732517500670369180"
         },
         {
           "file": "src/app/journal/journal-home/navigation-panel/navigation-panel.component.spec.ts",
@@ -567,36 +606,15 @@
         },
         {
           "file": "src/app/journal/journal-home/navigation-panel/navigation-panel.component.ts",
-          "hash": "6039405701194205862",
-          "deps": [
-            "npm:@angular/core"
-          ]
-        },
-        {
-          "file": "src/app/journal/journal-home/tab-bar/tab-bar.component.html",
-          "hash": "17134251081963410820"
-        },
-        {
-          "file": "src/app/journal/journal-home/tab-bar/tab-bar.component.scss",
-          "hash": "15445784631807002834"
-        },
-        {
-          "file": "src/app/journal/journal-home/tab-bar/tab-bar.component.spec.ts",
-          "hash": "16762715795682817534",
+          "hash": "9502551384454131102",
           "deps": [
-            "npm:@angular/core"
-          ]
-        },
-        {
-          "file": "src/app/journal/journal-home/tab-bar/tab-bar.component.ts",
-          "hash": "10246921457507452135",
-          "deps": [
-            "npm:@angular/core"
+            "npm:@angular/core",
+            "npm:@angular/router"
           ]
         },
         {
           "file": "src/app/journal/journal-inventory/food-details/food-details.component.html",
-          "hash": "7131346425940899974"
+          "hash": "11297556013205135106"
         },
         {
           "file": "src/app/journal/journal-inventory/food-details/food-details.component.scss",
@@ -618,11 +636,11 @@
         },
         {
           "file": "src/app/journal/journal-inventory/journal-inventory.component.html",
-          "hash": "10094938839773974616"
+          "hash": "15528063357390158626"
         },
         {
           "file": "src/app/journal/journal-inventory/journal-inventory.component.scss",
-          "hash": "12310154514401291247"
+          "hash": "10907696495234903745"
         },
         {
           "file": "src/app/journal/journal-inventory/journal-inventory.component.spec.ts",
@@ -633,7 +651,7 @@
         },
         {
           "file": "src/app/journal/journal-inventory/journal-inventory.component.ts",
-          "hash": "8244155848410476652",
+          "hash": "11039000484085723222",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/cdk"
@@ -641,7 +659,7 @@
         },
         {
           "file": "src/app/journal/journal-inventory/simple-item-details/simple-item-details.component.html",
-          "hash": "721511383023821869"
+          "hash": "10256642800727730184"
         },
         {
           "file": "src/app/journal/journal-inventory/simple-item-details/simple-item-details.component.scss",
@@ -663,7 +681,7 @@
         },
         {
           "file": "src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.html",
-          "hash": "3232762221410711974"
+          "hash": "14452806108168695271"
         },
         {
           "file": "src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.scss",
@@ -707,7 +725,7 @@
         },
         {
           "file": "src/app/journal/journal-notes/journal-notes.component.html",
-          "hash": "15554834932136730464"
+          "hash": "5539690364354675273"
         },
         {
           "file": "src/app/journal/journal-notes/journal-notes.component.scss",
@@ -722,9 +740,10 @@
         },
         {
           "file": "src/app/journal/journal-notes/journal-notes.component.ts",
-          "hash": "13213990038708680132",
+          "hash": "11809242175108057048",
           "deps": [
-            "npm:@angular/core"
+            "npm:@angular/core",
+            "npm:ngx-editor"
           ]
         },
         {
@@ -869,11 +888,11 @@
         },
         {
           "file": "src/app/journal/journal-spellcards/add-card/add-card.component.html",
-          "hash": "5958455445440197181"
+          "hash": "13277240141458735194"
         },
         {
           "file": "src/app/journal/journal-spellcards/add-card/add-card.component.scss",
-          "hash": "11368184998023456841"
+          "hash": "1018115927160730231"
         },
         {
           "file": "src/app/journal/journal-spellcards/add-card/add-card.component.spec.ts",
@@ -884,22 +903,18 @@
         },
         {
           "file": "src/app/journal/journal-spellcards/add-card/add-card.component.ts",
-          "hash": "11672358141719177555",
+          "hash": "1576655820857607100",
           "deps": [
-            "npm:@angular/core",
-            "npm:@ng-bootstrap/ng-bootstrap",
-            "npm:rxjs",
-            "npm:@angular/forms",
-            "npm:@angular/common"
+            "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/journal/journal-spellcards/journal-spellcards.component.html",
-          "hash": "1861843770838091226"
+          "hash": "16705774493625299250"
         },
         {
           "file": "src/app/journal/journal-spellcards/journal-spellcards.component.scss",
-          "hash": "3148016139857090476"
+          "hash": "1810608647454911461"
         },
         {
           "file": "src/app/journal/journal-spellcards/journal-spellcards.component.spec.ts",
@@ -910,7 +925,7 @@
         },
         {
           "file": "src/app/journal/journal-spellcards/journal-spellcards.component.ts",
-          "hash": "2096330495844364937",
+          "hash": "234461017117653634",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/cdk",
@@ -922,11 +937,11 @@
         },
         {
           "file": "src/app/journal/journal-spellcards/spellcard/spellcard.component.html",
-          "hash": "14490667732893781366"
+          "hash": "17429955398527438252"
         },
         {
           "file": "src/app/journal/journal-spellcards/spellcard/spellcard.component.scss",
-          "hash": "2341565299332183763"
+          "hash": "16354829995593429210"
         },
         {
           "file": "src/app/journal/journal-spellcards/spellcard/spellcard.component.spec.ts",
@@ -937,18 +952,18 @@
         },
         {
           "file": "src/app/journal/journal-spellcards/spellcard/spellcard.component.ts",
-          "hash": "2784640616266709300",
+          "hash": "11476657601674328655",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-panel.component.html",
-          "hash": "17721744619350367362"
+          "hash": "14871474952704779844"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-panel.component.scss",
-          "hash": "455467645376363991"
+          "hash": "148137600209479912"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-panel.component.spec.ts",
@@ -959,18 +974,18 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-panel.component.ts",
-          "hash": "12478068570522137998",
+          "hash": "16800562043156800998",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.html",
-          "hash": "126750911949442815"
+          "hash": "2462108755749033032"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.scss",
-          "hash": "6337111260854357286"
+          "hash": "13597223705162668751"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.spec.ts",
@@ -988,7 +1003,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.html",
-          "hash": "14986829517773126447"
+          "hash": "8407772437833729352"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.scss",
@@ -1010,11 +1025,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.html",
-          "hash": "3253958236359807999"
+          "hash": "5346627656442739476"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.scss",
-          "hash": "8194280375264267732"
+          "hash": "6602228984379868552"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.spec.ts",
@@ -1025,7 +1040,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.ts",
-          "hash": "3636360207671598919",
+          "hash": "9818572179522773160",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/cdk"
@@ -1033,11 +1048,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.html",
-          "hash": "10309436752125703954"
+          "hash": "4512105920522730639"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.scss",
-          "hash": "8753021903660156971"
+          "hash": "1435851063900719499"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.spec.ts",
@@ -1048,15 +1063,16 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.ts",
-          "hash": "17326211961836881953",
+          "hash": "400213183339518480",
           "deps": [
             "npm:@angular/core",
-            "npm:@angular/cdk"
+            "npm:@angular/cdk",
+            "npm:@angular/forms"
           ]
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/proficiencies-table/tools-modal/tools-modal.component.html",
-          "hash": "11525668667959350308"
+          "hash": "12402503305235818446"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/proficiencies-table/tools-modal/tools-modal.component.scss",
@@ -1079,7 +1095,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/spellslots/spellslots-modal/spellslots-modal.component.html",
-          "hash": "5884279295643548107"
+          "hash": "17634621144187558444"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/spellslots/spellslots-modal/spellslots-modal.component.scss",
@@ -1094,7 +1110,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/spellslots/spellslots-modal/spellslots-modal.component.ts",
-          "hash": "17868204254204749127",
+          "hash": "16539174903974729080",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/material"
@@ -1102,11 +1118,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.html",
-          "hash": "12016345537709085417"
+          "hash": "7841932132607734399"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.scss",
-          "hash": "3244421341483603138"
+          "hash": "9918960102951357807"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.spec.ts",
@@ -1117,14 +1133,14 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.ts",
-          "hash": "11925132212088196044",
+          "hash": "596607303863005315",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/trait-table/trait-details/trait-details.component.html",
-          "hash": "4652499072754391906"
+          "hash": "294701579094612205"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/trait-table/trait-details/trait-details.component.scss",
@@ -1146,7 +1162,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.html",
-          "hash": "13557368157550747361"
+          "hash": "4481795737110422987"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.scss",
@@ -1168,11 +1184,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/trait-table/trait-table.component.html",
-          "hash": "8110523843217938095"
+          "hash": "6997564590065615875"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/trait-table/trait-table.component.scss",
-          "hash": "2989971625866387457"
+          "hash": "4241627494436966263"
         },
         {
           "file": "src/app/journal/journal-stats/ability-panel/trait-table/trait-table.component.spec.ts",
@@ -1191,11 +1207,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-details/attribute-details.component.html",
-          "hash": "3590782012596856607"
+          "hash": "14172142032278930409"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-details/attribute-details.component.scss",
-          "hash": "1954289146060476760"
+          "hash": "9562625032911217692"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-details/attribute-details.component.spec.ts",
@@ -1217,7 +1233,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-field.component.scss",
-          "hash": "13876928189848073637"
+          "hash": "7117566822838934027"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-field.component.spec.ts",
@@ -1240,7 +1256,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-panel.component.scss",
-          "hash": "14744739853762780934"
+          "hash": "13332142503216140528"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-panel.component.spec.ts",
@@ -1262,7 +1278,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-skill-container.component.scss",
-          "hash": "7899562468707616243"
+          "hash": "17808662152454659884"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/attribute-skill-container.component.spec.ts",
@@ -1306,7 +1322,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-field/save-throw-field.component.scss",
-          "hash": "11010953887616457890"
+          "hash": "2224385643993579548"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-field/save-throw-field.component.spec.ts",
@@ -1325,11 +1341,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-panel.component.html",
-          "hash": "8187196879057483096"
+          "hash": "7532511571509681585"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-panel.component.scss",
-          "hash": "9923923586961425716"
+          "hash": "7927331304895523904"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-panel.component.spec.ts",
@@ -1373,7 +1389,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/skill-panel/skill-field/skill-field.component.scss",
-          "hash": "11172333824504721010"
+          "hash": "18143975070286541085"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/skill-panel/skill-field/skill-field.component.spec.ts",
@@ -1396,7 +1412,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/skill-panel/skill-panel.component.scss",
-          "hash": "13220365849139558442"
+          "hash": "5554874385540223425"
         },
         {
           "file": "src/app/journal/journal-stats/attribute-skill-container/skill-panel/skill-panel.component.spec.ts",
@@ -1436,7 +1452,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/info-row/armor-class/armor-class.component.html",
-          "hash": "4763470974280894712"
+          "hash": "11936047710912601666"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/armor-class/armor-class.component.scss",
@@ -1458,11 +1474,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.html",
-          "hash": "16929634595112339043"
+          "hash": "17099855344676139224"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.scss",
-          "hash": "10480794981390259546"
+          "hash": "15743275895339943337"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.spec.ts",
@@ -1473,18 +1489,18 @@
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.ts",
-          "hash": "10686860647824907433",
+          "hash": "14664930422676426525",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions.component.html",
-          "hash": "14042032959182941971"
+          "hash": "1667203616008355068"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions.component.scss",
-          "hash": "8654269607946834625"
+          "hash": "12723360180491153664"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions.component.spec.ts",
@@ -1495,7 +1511,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/info-row/conditions/conditions.component.ts",
-          "hash": "17020385116140445820",
+          "hash": "2960833353754814634",
           "deps": [
             "npm:@angular/core"
           ]
@@ -1546,11 +1562,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/info-row/death-save/death-save.component.html",
-          "hash": "15595583804597565136"
+          "hash": "4425344129029749188"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/death-save/death-save.component.scss",
-          "hash": "10264763637747897561"
+          "hash": "13188105794861205198"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/death-save/death-save.component.spec.ts",
@@ -1634,11 +1650,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.html",
-          "hash": "11844530622802917428"
+          "hash": "4782895441389174375"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.scss",
-          "hash": "3431348137727250673"
+          "hash": "17394857383921549076"
         },
         {
           "file": "src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.spec.ts",
@@ -1649,7 +1665,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.ts",
-          "hash": "4435075109929197278",
+          "hash": "10722326079585323632",
           "deps": [
             "npm:@angular/core"
           ]
@@ -1726,7 +1742,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/journal-stats.component.scss",
-          "hash": "13676539549309887105"
+          "hash": "12614957761902021899"
         },
         {
           "file": "src/app/journal/journal-stats/journal-stats.component.spec.ts",
@@ -1744,11 +1760,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.html",
-          "hash": "4911456992984928515"
+          "hash": "799506515174059956"
         },
         {
           "file": "src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.scss",
-          "hash": "3244421341483603138"
+          "hash": "14829833057356034881"
         },
         {
           "file": "src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.spec.ts",
@@ -1759,18 +1775,18 @@
         },
         {
           "file": "src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.ts",
-          "hash": "17608544211922449875",
+          "hash": "4989255857400513688",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/journal/journal-stats/life-container/life/life-details/life-details.component.html",
-          "hash": "16458143023292356857"
+          "hash": "4533402330326753517"
         },
         {
           "file": "src/app/journal/journal-stats/life-container/life/life-details/life-details.component.scss",
-          "hash": "11611399988309774121"
+          "hash": "8678182857855060589"
         },
         {
           "file": "src/app/journal/journal-stats/life-container/life/life-details/life-details.component.spec.ts",
@@ -1781,7 +1797,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/life-container/life/life-details/life-details.component.ts",
-          "hash": "16254878421692116176",
+          "hash": "493123454343809706",
           "deps": [
             "npm:@angular/core"
           ]
@@ -1792,7 +1808,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/life-container/life/life.component.scss",
-          "hash": "14064145672273204703"
+          "hash": "11371299048669470089"
         },
         {
           "file": "src/app/journal/journal-stats/life-container/life/life.component.spec.ts",
@@ -1803,7 +1819,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/life-container/life/life.component.ts",
-          "hash": "17995429144266847318",
+          "hash": "17280648720895794189",
           "deps": [
             "npm:@angular/core"
           ]
@@ -1832,7 +1848,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/spell-table/spell-details/spell-details.component.html",
-          "hash": "15806155190344699137"
+          "hash": "15948072258286914151"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/spell-table/spell-details/spell-details.component.scss",
@@ -1854,11 +1870,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.html",
-          "hash": "8565094470395094104"
+          "hash": "6611979695417732375"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.scss",
-          "hash": "8051264160861102436"
+          "hash": "7814296366472717913"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.spec.ts",
@@ -1869,7 +1885,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.ts",
-          "hash": "13851653962102017844",
+          "hash": "8919299233305438402",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/cdk",
@@ -1878,7 +1894,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.html",
-          "hash": "14880700246985961947"
+          "hash": "8298229300270143725"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.scss",
@@ -1900,7 +1916,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.html",
-          "hash": "16735514046307769188"
+          "hash": "6387152006811749329"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.scss",
@@ -1922,11 +1938,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.html",
-          "hash": "13232541461390655588"
+          "hash": "9704421788104879995"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.scss",
-          "hash": "2465093060247648523"
+          "hash": "15761241443199301153"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.spec.ts",
@@ -1937,7 +1953,7 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.ts",
-          "hash": "11204156714285347083",
+          "hash": "14831755448874944092",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/cdk"
@@ -1945,11 +1961,11 @@
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapons-container.component.html",
-          "hash": "7197296292059133954"
+          "hash": "6099037823273634358"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapons-container.component.scss",
-          "hash": "9857511810767207764"
+          "hash": "16275028003856093875"
         },
         {
           "file": "src/app/journal/journal-stats/weapons-container/weapons-container.component.spec.ts",
@@ -1967,7 +1983,7 @@
         },
         {
           "file": "src/app/journal/journal.module.ts",
-          "hash": "16613617666017623117",
+          "hash": "7433157348197343716",
           "deps": [
             "npm:@angular/core",
             "npm:@angular/common",
@@ -1975,12 +1991,13 @@
             "npm:@angular/forms",
             "npm:@angular/cdk",
             "npm:ngx-markdown",
+            "npm:ngx-editor",
             "npm:@angular/material"
           ]
         },
         {
           "file": "src/app/journal/spell-modal/spell-modal.component.html",
-          "hash": "11659561320403079943"
+          "hash": "9226230268686213154"
         },
         {
           "file": "src/app/journal/spell-modal/spell-modal.component.scss",
@@ -1995,14 +2012,14 @@
         },
         {
           "file": "src/app/journal/spell-modal/spell-modal.component.ts",
-          "hash": "10568811362457336803",
+          "hash": "609351583599693850",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/app/shared-components/full-spellcard/full-spellcard.component.html",
-          "hash": "3281101629712103969"
+          "hash": "1359206402591108879"
         },
         {
           "file": "src/app/shared-components/full-spellcard/full-spellcard.component.scss",
@@ -2017,7 +2034,7 @@
         },
         {
           "file": "src/app/shared-components/full-spellcard/full-spellcard.component.ts",
-          "hash": "12499468643121724220",
+          "hash": "13380647552574312116",
           "deps": [
             "npm:@angular/core"
           ]
@@ -2069,7 +2086,7 @@
         },
         {
           "file": "src/app/shared-components/ui-button/ui-button.component.ts",
-          "hash": "18023208087926665902",
+          "hash": "2163472741293223327",
           "deps": [
             "npm:@angular/core"
           ]
@@ -2080,7 +2097,7 @@
         },
         {
           "file": "src/assets/icons/UIIcons/add.svg",
-          "hash": "4793527292248594292"
+          "hash": "5217729023230382578"
         },
         {
           "file": "src/assets/icons/UIIcons/characters.svg",
@@ -2090,6 +2107,10 @@
           "file": "src/assets/icons/UIIcons/check.svg",
           "hash": "15766203028016260170"
         },
+        {
+          "file": "src/assets/icons/UIIcons/copper.svg",
+          "hash": "12362662117878453728"
+        },
         {
           "file": "src/assets/icons/UIIcons/cross.svg",
           "hash": "9566050001797331764"
@@ -2104,7 +2125,11 @@
         },
         {
           "file": "src/assets/icons/UIIcons/edit.svg",
-          "hash": "8976534568013160133"
+          "hash": "9841708718436361098"
+        },
+        {
+          "file": "src/assets/icons/UIIcons/gold.svg",
+          "hash": "1376090274867220394"
         },
         {
           "file": "src/assets/icons/UIIcons/heal.svg",
@@ -2118,6 +2143,14 @@
           "file": "src/assets/icons/UIIcons/image.svg",
           "hash": "12673954762301828058"
         },
+        {
+          "file": "src/assets/icons/UIIcons/lock.svg",
+          "hash": "3014710103470955495"
+        },
+        {
+          "file": "src/assets/icons/UIIcons/platinum.svg",
+          "hash": "5939107707110168050"
+        },
         {
           "file": "src/assets/icons/UIIcons/remove.svg",
           "hash": "9563570443501120055"
@@ -2126,6 +2159,10 @@
           "file": "src/assets/icons/UIIcons/settings.svg",
           "hash": "8461039177870308980"
         },
+        {
+          "file": "src/assets/icons/UIIcons/silver.svg",
+          "hash": "419095611245850640"
+        },
         {
           "file": "src/assets/icons/UIIcons/temporary.svg",
           "hash": "12322101341939558369"
@@ -2299,16 +2336,156 @@
           "hash": "16942137309756514135"
         },
         {
-          "file": "src/assets/images/spellcards_coming_soon.jpeg",
-          "hash": "2199813753978771041"
+          "file": "src/assets/images/spells/background.jpg",
+          "hash": "7981821004801038486"
+        },
+        {
+          "file": "src/assets/images/spells/backup.jpg",
+          "hash": "17039210611672330267"
+        },
+        {
+          "file": "src/assets/images/spells/bladeWard.jpg",
+          "hash": "9090936996942285377"
+        },
+        {
+          "file": "src/assets/images/spells/bless.jpg",
+          "hash": "4264445950962428871"
+        },
+        {
+          "file": "src/assets/images/spells/boomingBlade.jpg",
+          "hash": "2908450634780442196"
+        },
+        {
+          "file": "src/assets/images/spells/chillTouch.jpg",
+          "hash": "9846283257149109416"
+        },
+        {
+          "file": "src/assets/images/spells/controlFlames.jpg",
+          "hash": "6487670528670160173"
+        },
+        {
+          "file": "src/assets/images/spells/createBonfire.jpg",
+          "hash": "4018313904789180263"
+        },
+        {
+          "file": "src/assets/images/spells/cureWounds.jpg",
+          "hash": "5535215296760622657"
+        },
+        {
+          "file": "src/assets/images/spells/detectMagic.jpg",
+          "hash": "9538748972207485064"
+        },
+        {
+          "file": "src/assets/images/spells/detectPoisonAndDisease.jpg",
+          "hash": "5731384168991637442"
+        },
+        {
+          "file": "src/assets/images/spells/druidCraft.jpg",
+          "hash": "2332165545400349378"
         },
         {
-          "file": "src/assets/images/spells/add-spell.jpg",
-          "hash": "16499998547404226965"
+          "file": "src/assets/images/spells/friends.jpg",
+          "hash": "14457317615043467045"
+        },
+        {
+          "file": "src/assets/images/spells/frostbite.jpg",
+          "hash": "4192270120577833635"
+        },
+        {
+          "file": "src/assets/images/spells/greenFlameBlade.jpg",
+          "hash": "7575697061051288752"
         },
         {
           "file": "src/assets/images/spells/guidance.jpg",
-          "hash": "16201351759585211938"
+          "hash": "16292029675155274495"
+        },
+        {
+          "file": "src/assets/images/spells/guidingBolt.jpg",
+          "hash": "16847990704821257672"
+        },
+        {
+          "file": "src/assets/images/spells/healingWord.jpg",
+          "hash": "3920642805749614926"
+        },
+        {
+          "file": "src/assets/images/spells/infestation.jpg",
+          "hash": "7108955662284502813"
+        },
+        {
+          "file": "src/assets/images/spells/inflictWounds.jpg",
+          "hash": "15889135368700766867"
+        },
+        {
+          "file": "src/assets/images/spells/light.jpg",
+          "hash": "18071429473352017300"
+        },
+        {
+          "file": "src/assets/images/spells/lightningLure.jpg",
+          "hash": "10697266277582752618"
+        },
+        {
+          "file": "src/assets/images/spells/magicStone.jpg",
+          "hash": "14564591811443268920"
+        },
+        {
+          "file": "src/assets/images/spells/mending.jpg",
+          "hash": "11211711667760796054"
+        },
+        {
+          "file": "src/assets/images/spells/message.jpg",
+          "hash": "5095809265580844998"
+        },
+        {
+          "file": "src/assets/images/spells/mindSilver.jpg",
+          "hash": "11529268558612993118"
+        },
+        {
+          "file": "src/assets/images/spells/minorIllusion.jpg",
+          "hash": "8350307727051330734"
+        },
+        {
+          "file": "src/assets/images/spells/moldEarth.jpg",
+          "hash": "11141157531480090122"
+        },
+        {
+          "file": "src/assets/images/spells/poisonSpray.jpg",
+          "hash": "8974800770349396077"
+        },
+        {
+          "file": "src/assets/images/spells/produceFlame.jpg",
+          "hash": "5841154817241443139"
+        },
+        {
+          "file": "src/assets/images/spells/rayOfFrost.jpg",
+          "hash": "9573664216989733150"
+        },
+        {
+          "file": "src/assets/images/spells/sacredFlame.jpg",
+          "hash": "32674127158058877"
+        },
+        {
+          "file": "src/assets/images/spells/sanctuary.jpg",
+          "hash": "18172046501496752482"
+        },
+        {
+          "file": "src/assets/images/spells/thaumaturgy.jpg",
+          "hash": "836108849693276639"
+        },
+        {
+          "file": "src/assets/images/spells/thornWhip.jpg",
+          "hash": "5890904569499607251"
+        },
+        {
+          "file": "src/assets/images/spells/thunderClap.jpg",
+          "hash": "1065046161704570774"
+        },
+        {
+          "file": "src/assets/images/spells/tollTheDead.jpg",
+          "hash": "6818224660916039979"
+        },
+        {
+          "file": "src/assets/images/spells/viciousMockery.jpg",
+          "hash": "7367801005221087106"
         },
         {
           "file": "src/assets/images/tel.jpg",
@@ -2376,7 +2553,7 @@
         },
         {
           "file": "src/interfaces/spell.ts",
-          "hash": "14221858145648595513"
+          "hash": "14966879007929632152"
         },
         {
           "file": "src/interfaces/traits.ts",
@@ -2420,7 +2597,7 @@
         },
         {
           "file": "src/services/data/data.service.ts",
-          "hash": "3440890869843908116",
+          "hash": "7977856499512334554",
           "deps": [
             "npm:@angular/core",
             "npm:localbase",
@@ -2511,7 +2688,7 @@
         },
         {
           "file": "src/services/species/species.service.ts",
-          "hash": "12955138722513059799",
+          "hash": "152651428716590215",
           "deps": [
             "npm:@angular/core"
           ]
@@ -2525,7 +2702,7 @@
         },
         {
           "file": "src/services/spells/spells.service.ts",
-          "hash": "746749889167364299",
+          "hash": "1396570184032651740",
           "deps": [
             "npm:@angular/core",
             "npm:rxjs"
@@ -2540,7 +2717,7 @@
         },
         {
           "file": "src/services/subclass/subclass.service.ts",
-          "hash": "12369284019095919422",
+          "hash": "4743796725115870621",
           "deps": [
             "npm:@angular/core"
           ]
@@ -2554,14 +2731,14 @@
         },
         {
           "file": "src/services/translator/translator.service.ts",
-          "hash": "17648182695944496687",
+          "hash": "6180793701803209436",
           "deps": [
             "npm:@angular/core"
           ]
         },
         {
           "file": "src/styles.scss",
-          "hash": "1619829628988232765"
+          "hash": "14913437143963434829"
         },
         {
           "file": "tsconfig.app.json",

+ 1 - 1
.nx/cache/lockfile.hash

@@ -1 +1 @@
-11481524850069584439
+4941688487183821274

+ 363 - 0
.nx/cache/parsed-lock-file.json

@@ -1962,6 +1962,33 @@
         "hash": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA=="
       }
     },
+    "npm:@floating-ui/core": {
+      "type": "npm",
+      "name": "npm:@floating-ui/core",
+      "data": {
+        "version": "1.4.1",
+        "packageName": "@floating-ui/core",
+        "hash": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ=="
+      }
+    },
+    "npm:@floating-ui/dom": {
+      "type": "npm",
+      "name": "npm:@floating-ui/dom",
+      "data": {
+        "version": "1.5.1",
+        "packageName": "@floating-ui/dom",
+        "hash": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw=="
+      }
+    },
+    "npm:@floating-ui/utils": {
+      "type": "npm",
+      "name": "npm:@floating-ui/utils",
+      "data": {
+        "version": "0.1.6",
+        "packageName": "@floating-ui/utils",
+        "hash": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+      }
+    },
     "npm:@humanwhocodes/config-array": {
       "type": "npm",
       "name": "npm:@humanwhocodes/config-array",
@@ -4725,6 +4752,15 @@
         "hash": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="
       }
     },
+    "npm:@types/trusted-types": {
+      "type": "npm",
+      "name": "npm:@types/trusted-types",
+      "data": {
+        "version": "2.0.7",
+        "packageName": "@types/trusted-types",
+        "hash": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
+      }
+    },
     "npm:@types/unist": {
       "type": "npm",
       "name": "npm:@types/unist",
@@ -10251,6 +10287,15 @@
         "hash": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
       }
     },
+    "npm:ngx-editor": {
+      "type": "npm",
+      "name": "npm:ngx-editor",
+      "data": {
+        "version": "16.0.1",
+        "packageName": "ngx-editor",
+        "hash": "sha512-O6PTwDb/zc363cTtrNl9GKh8nvV40yN2rVSFO3rP1xPY8Iuy9EfDQ3NYFBO+j2YPeKcbya8mHHk9KdVjJ+TraQ=="
+      }
+    },
     "npm:ngx-markdown": {
       "type": "npm",
       "name": "npm:ngx-markdown",
@@ -10575,6 +10620,15 @@
         "hash": "sha512-pcbQ+w/1DIOFYsZRsjkNgxWRvLecCjpbVadcP9SQ/9oHSQr7VXS9+t5/FiPkqFvQGn3a4Hj0YL7R8q7cIgGXBA=="
       }
     },
+    "npm:orderedmap": {
+      "type": "npm",
+      "name": "npm:orderedmap",
+      "data": {
+        "version": "2.1.1",
+        "packageName": "orderedmap",
+        "hash": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="
+      }
+    },
     "npm:os-tmpdir": {
       "type": "npm",
       "name": "npm:os-tmpdir",
@@ -11223,6 +11277,87 @@
         "hash": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g=="
       }
     },
+    "npm:prosemirror-commands": {
+      "type": "npm",
+      "name": "npm:prosemirror-commands",
+      "data": {
+        "version": "1.5.2",
+        "packageName": "prosemirror-commands",
+        "hash": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ=="
+      }
+    },
+    "npm:prosemirror-history": {
+      "type": "npm",
+      "name": "npm:prosemirror-history",
+      "data": {
+        "version": "1.3.2",
+        "packageName": "prosemirror-history",
+        "hash": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g=="
+      }
+    },
+    "npm:prosemirror-inputrules": {
+      "type": "npm",
+      "name": "npm:prosemirror-inputrules",
+      "data": {
+        "version": "1.2.1",
+        "packageName": "prosemirror-inputrules",
+        "hash": "sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ=="
+      }
+    },
+    "npm:prosemirror-keymap": {
+      "type": "npm",
+      "name": "npm:prosemirror-keymap",
+      "data": {
+        "version": "1.2.2",
+        "packageName": "prosemirror-keymap",
+        "hash": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ=="
+      }
+    },
+    "npm:prosemirror-model": {
+      "type": "npm",
+      "name": "npm:prosemirror-model",
+      "data": {
+        "version": "1.19.3",
+        "packageName": "prosemirror-model",
+        "hash": "sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ=="
+      }
+    },
+    "npm:prosemirror-schema-list": {
+      "type": "npm",
+      "name": "npm:prosemirror-schema-list",
+      "data": {
+        "version": "1.3.0",
+        "packageName": "prosemirror-schema-list",
+        "hash": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A=="
+      }
+    },
+    "npm:prosemirror-state": {
+      "type": "npm",
+      "name": "npm:prosemirror-state",
+      "data": {
+        "version": "1.4.3",
+        "packageName": "prosemirror-state",
+        "hash": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q=="
+      }
+    },
+    "npm:prosemirror-transform": {
+      "type": "npm",
+      "name": "npm:prosemirror-transform",
+      "data": {
+        "version": "1.8.0",
+        "packageName": "prosemirror-transform",
+        "hash": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A=="
+      }
+    },
+    "npm:prosemirror-view": {
+      "type": "npm",
+      "name": "npm:prosemirror-view",
+      "data": {
+        "version": "1.31.7",
+        "packageName": "prosemirror-view",
+        "hash": "sha512-Pr7w93yOYmxQwzGIRSaNLZ/1uM6YjnenASzN2H6fO6kGekuzRbgZ/4bHbBTd1u4sIQmL33/TcGmzxxidyPwCjg=="
+      }
+    },
     "npm:proxy-addr": {
       "type": "npm",
       "name": "npm:proxy-addr",
@@ -11538,6 +11673,15 @@
         "hash": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw=="
       }
     },
+    "npm:rope-sequence": {
+      "type": "npm",
+      "name": "npm:rope-sequence",
+      "data": {
+        "version": "1.3.4",
+        "packageName": "rope-sequence",
+        "hash": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="
+      }
+    },
     "npm:run-async": {
       "type": "npm",
       "name": "npm:run-async",
@@ -12564,6 +12708,15 @@
         "hash": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung=="
       }
     },
+    "npm:w3c-keyname": {
+      "type": "npm",
+      "name": "npm:w3c-keyname",
+      "data": {
+        "version": "2.2.8",
+        "packageName": "w3c-keyname",
+        "hash": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+      }
+    },
     "npm:walker": {
       "type": "npm",
       "name": "npm:walker",
@@ -16019,6 +16172,21 @@
       "target": "npm:argparse@2.0.1",
       "type": "static"
     },
+    {
+      "source": "npm:@floating-ui/core",
+      "target": "npm:@floating-ui/utils",
+      "type": "static"
+    },
+    {
+      "source": "npm:@floating-ui/dom",
+      "target": "npm:@floating-ui/core",
+      "type": "static"
+    },
+    {
+      "source": "npm:@floating-ui/dom",
+      "target": "npm:@floating-ui/utils",
+      "type": "static"
+    },
     {
       "source": "npm:@humanwhocodes/config-array",
       "target": "npm:@humanwhocodes/object-schema",
@@ -29199,6 +29367,91 @@
       "target": "npm:safer-buffer",
       "type": "static"
     },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:@angular/common",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:@angular/core",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:@angular/forms",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:@angular/platform-browser",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:rxjs",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:@floating-ui/core",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:@floating-ui/dom",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:@types/trusted-types",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-commands",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-history",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-inputrules",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-keymap",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-model",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-schema-list",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-state",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:prosemirror-view",
+      "type": "static"
+    },
+    {
+      "source": "npm:ngx-editor",
+      "target": "npm:tslib",
+      "type": "static"
+    },
     {
       "source": "npm:ngx-markdown",
       "target": "npm:@angular/common",
@@ -30699,6 +30952,116 @@
       "target": "npm:retry",
       "type": "static"
     },
+    {
+      "source": "npm:prosemirror-commands",
+      "target": "npm:prosemirror-model",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-commands",
+      "target": "npm:prosemirror-state",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-commands",
+      "target": "npm:prosemirror-transform",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-history",
+      "target": "npm:prosemirror-state",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-history",
+      "target": "npm:prosemirror-transform",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-history",
+      "target": "npm:prosemirror-view",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-history",
+      "target": "npm:rope-sequence",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-inputrules",
+      "target": "npm:prosemirror-state",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-inputrules",
+      "target": "npm:prosemirror-transform",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-keymap",
+      "target": "npm:prosemirror-state",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-keymap",
+      "target": "npm:w3c-keyname",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-model",
+      "target": "npm:orderedmap",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-schema-list",
+      "target": "npm:prosemirror-model",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-schema-list",
+      "target": "npm:prosemirror-state",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-schema-list",
+      "target": "npm:prosemirror-transform",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-state",
+      "target": "npm:prosemirror-model",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-state",
+      "target": "npm:prosemirror-transform",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-state",
+      "target": "npm:prosemirror-view",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-transform",
+      "target": "npm:prosemirror-model",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-view",
+      "target": "npm:prosemirror-model",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-view",
+      "target": "npm:prosemirror-state",
+      "type": "static"
+    },
+    {
+      "source": "npm:prosemirror-view",
+      "target": "npm:prosemirror-transform",
+      "type": "static"
+    },
     {
       "source": "npm:proxy-addr",
       "target": "npm:forwarded",

+ 7547 - 7155
.nx/cache/project-graph.json

@@ -1,35 +1,19 @@
 {
   "nodes": {
-    "DnDTools2": {
-      "name": "DnDTools2",
+    "DnDTools": {
+      "name": "DnDTools",
       "type": "app",
       "data": {
-        "name": "DnDTools2",
-        "root": ".",
-        "$schema": "node_modules/nx/schemas/project-schema.json",
         "projectType": "application",
         "generators": {
           "@schematics/angular:component": {
             "style": "scss"
           }
         },
+        "root": "",
         "sourceRoot": "src",
-        "prefix": "",
+        "prefix": "app",
         "targets": {
-          "ng": {
-            "executor": "nx:run-script",
-            "options": {
-              "script": "ng"
-            },
-            "configurations": {}
-          },
-          "start": {
-            "executor": "nx:run-script",
-            "options": {
-              "script": "start"
-            },
-            "configurations": {}
-          },
           "build": {
             "cache": true,
             "dependsOn": [
@@ -54,6 +38,7 @@
                 "src/assets"
               ],
               "styles": [
+                "@angular/material/prebuilt-themes/deeppurple-amber.css",
                 "src/styles.scss"
               ],
               "scripts": []
@@ -83,15 +68,25 @@
                 "namedChunks": true
               }
             },
-            "defaultConfiguration": "production",
-            "outputs": [
-              "{options.outputPath}"
-            ]
+            "defaultConfiguration": "production"
           },
-          "watch": {
-            "executor": "nx:run-script",
+          "serve": {
+            "executor": "@angular-devkit/build-angular:dev-server",
+            "configurations": {
+              "production": {
+                "buildTarget": "DnDTools:build:production"
+              },
+              "development": {
+                "buildTarget": "DnDTools:build:development"
+              }
+            },
+            "defaultConfiguration": "development",
+            "options": {}
+          },
+          "extract-i18n": {
+            "executor": "@angular-devkit/build-angular:extract-i18n",
             "options": {
-              "script": "watch"
+              "buildTarget": "DnDTools:build"
             },
             "configurations": {}
           },
@@ -114,66 +109,49 @@
                 "src/assets"
               ],
               "styles": [
+                "@angular/material/prebuilt-themes/deeppurple-amber.css",
                 "src/styles.scss"
               ],
               "scripts": []
             },
             "configurations": {}
-          },
-          "network": {
-            "executor": "nx:run-script",
-            "options": {
-              "script": "network"
-            },
-            "configurations": {}
-          },
-          "nx-release-publish": {
-            "dependsOn": [
-              "^nx-release-publish"
-            ],
-            "executor": "@nx/js:release-publish",
-            "options": {},
-            "configurations": {}
-          },
-          "serve": {
-            "executor": "@angular-devkit/build-angular:dev-server",
-            "configurations": {
-              "production": {
-                "browserTarget": "DnDTools:build:production"
-              },
-              "development": {
-                "browserTarget": "DnDTools:build:development"
-              }
-            },
-            "defaultConfiguration": "development",
-            "options": {}
-          },
-          "extract-i18n": {
-            "executor": "@angular-devkit/build-angular:extract-i18n",
-            "options": {
-              "browserTarget": "DnDTools:build"
-            },
-            "configurations": {}
           }
         },
+        "name": "DnDTools",
         "implicitDependencies": [],
         "tags": []
       }
     },
-    "DnDTools": {
-      "name": "DnDTools",
+    "Hans": {
+      "name": "Hans",
       "type": "app",
       "data": {
+        "name": "Hans",
+        "root": ".",
+        "$schema": "node_modules/nx/schemas/project-schema.json",
         "projectType": "application",
         "generators": {
           "@schematics/angular:component": {
             "style": "scss"
           }
         },
-        "root": "",
         "sourceRoot": "src",
-        "prefix": "app",
+        "prefix": "",
         "targets": {
+          "ng": {
+            "executor": "nx:run-script",
+            "options": {
+              "script": "ng"
+            },
+            "configurations": {}
+          },
+          "start": {
+            "executor": "nx:run-script",
+            "options": {
+              "script": "start"
+            },
+            "configurations": {}
+          },
           "build": {
             "cache": true,
             "dependsOn": [
@@ -198,7 +176,6 @@
                 "src/assets"
               ],
               "styles": [
-                "@angular/material/prebuilt-themes/deeppurple-amber.css",
                 "src/styles.scss"
               ],
               "scripts": []
@@ -228,25 +205,15 @@
                 "namedChunks": true
               }
             },
-            "defaultConfiguration": "production"
-          },
-          "serve": {
-            "executor": "@angular-devkit/build-angular:dev-server",
-            "configurations": {
-              "production": {
-                "buildTarget": "DnDTools:build:production"
-              },
-              "development": {
-                "buildTarget": "DnDTools:build:development"
-              }
-            },
-            "defaultConfiguration": "development",
-            "options": {}
+            "defaultConfiguration": "production",
+            "outputs": [
+              "{options.outputPath}"
+            ]
           },
-          "extract-i18n": {
-            "executor": "@angular-devkit/build-angular:extract-i18n",
+          "watch": {
+            "executor": "nx:run-script",
             "options": {
-              "buildTarget": "DnDTools:build"
+              "script": "watch"
             },
             "configurations": {}
           },
@@ -269,316 +236,340 @@
                 "src/assets"
               ],
               "styles": [
-                "@angular/material/prebuilt-themes/deeppurple-amber.css",
                 "src/styles.scss"
               ],
               "scripts": []
             },
             "configurations": {}
+          },
+          "network": {
+            "executor": "nx:run-script",
+            "options": {
+              "script": "network"
+            },
+            "configurations": {}
+          },
+          "nx-release-publish": {
+            "dependsOn": [
+              "^nx-release-publish"
+            ],
+            "executor": "@nx/js:release-publish",
+            "options": {},
+            "configurations": {}
+          },
+          "serve": {
+            "executor": "@angular-devkit/build-angular:dev-server",
+            "configurations": {
+              "production": {
+                "browserTarget": "DnDTools:build:production"
+              },
+              "development": {
+                "browserTarget": "DnDTools:build:development"
+              }
+            },
+            "defaultConfiguration": "development",
+            "options": {}
+          },
+          "extract-i18n": {
+            "executor": "@angular-devkit/build-angular:extract-i18n",
+            "options": {
+              "browserTarget": "DnDTools:build"
+            },
+            "configurations": {}
           }
         },
-        "name": "DnDTools",
         "implicitDependencies": [],
         "tags": []
       }
     }
   },
   "externalNodes": {
-    "npm:internmap": {
+    "npm:dev-ip": {
       "type": "npm",
-      "name": "npm:internmap",
+      "name": "npm:dev-ip",
       "data": {
-        "version": "2.0.3",
-        "packageName": "internmap",
-        "hash": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="
+        "version": "1.0.1",
+        "packageName": "dev-ip",
+        "hash": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A=="
       }
     },
-    "npm:@babel/plugin-transform-export-namespace-from": {
+    "npm:@material/textfield": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-export-namespace-from",
+      "name": "npm:@material/textfield",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-export-namespace-from",
-        "hash": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/textfield",
+        "hash": "sha512-4BW5bUERPlIeiPnLSby21h1/xDmySuAG9Ucn1LM801a0+5mK3IwWb8031AP3filKZZqTx5JJvOJYZd6/OWBJVA=="
       }
     },
-    "npm:d3-path@1.0.9": {
+    "npm:@babel/compat-data": {
       "type": "npm",
-      "name": "npm:d3-path@1.0.9",
+      "name": "npm:@babel/compat-data",
       "data": {
-        "version": "1.0.9",
-        "packageName": "d3-path",
-        "hash": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
+        "version": "7.23.2",
+        "packageName": "@babel/compat-data",
+        "hash": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ=="
       }
     },
-    "npm:array-union@2.1.0": {
+    "npm:serve-static@1.13.2": {
       "type": "npm",
-      "name": "npm:array-union@2.1.0",
+      "name": "npm:serve-static@1.13.2",
       "data": {
-        "version": "2.1.0",
-        "packageName": "array-union",
-        "hash": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
+        "version": "1.13.2",
+        "packageName": "serve-static",
+        "hash": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw=="
       }
     },
-    "npm:eventemitter3": {
+    "npm:json-parse-even-better-errors": {
       "type": "npm",
-      "name": "npm:eventemitter3",
+      "name": "npm:json-parse-even-better-errors",
       "data": {
-        "version": "4.0.7",
-        "packageName": "eventemitter3",
-        "hash": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+        "version": "2.3.1",
+        "packageName": "json-parse-even-better-errors",
+        "hash": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
       }
     },
-    "npm:proxy-from-env": {
+    "npm:multicast-dns": {
       "type": "npm",
-      "name": "npm:proxy-from-env",
+      "name": "npm:multicast-dns",
       "data": {
-        "version": "1.1.0",
-        "packageName": "proxy-from-env",
-        "hash": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+        "version": "7.2.5",
+        "packageName": "multicast-dns",
+        "hash": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg=="
       }
     },
-    "npm:array-union": {
+    "npm:@nrwl/cypress": {
       "type": "npm",
-      "name": "npm:array-union",
+      "name": "npm:@nrwl/cypress",
       "data": {
-        "version": "3.0.1",
-        "packageName": "array-union",
-        "hash": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/cypress",
+        "hash": "sha512-urFTPQ81ROk56ktkwp3CU7MsIA1zFEYJC4nqrrJxGQm/4GcJ4JvRzjSNmcP6nApaO34in+nwskECBMWs2+6ZPQ=="
       }
     },
-    "npm:serialize-javascript": {
+    "npm:d3-scale-chromatic": {
       "type": "npm",
-      "name": "npm:serialize-javascript",
+      "name": "npm:d3-scale-chromatic",
       "data": {
-        "version": "6.0.1",
-        "packageName": "serialize-javascript",
-        "hash": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w=="
+        "version": "3.0.0",
+        "packageName": "d3-scale-chromatic",
+        "hash": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g=="
       }
     },
-    "npm:symbol-observable": {
+    "npm:react-is": {
       "type": "npm",
-      "name": "npm:symbol-observable",
+      "name": "npm:react-is",
       "data": {
-        "version": "4.0.0",
-        "packageName": "symbol-observable",
-        "hash": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ=="
+        "version": "18.2.0",
+        "packageName": "react-is",
+        "hash": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
       }
     },
-    "npm:uuid": {
+    "npm:nx": {
       "type": "npm",
-      "name": "npm:uuid",
+      "name": "npm:nx",
       "data": {
-        "version": "8.3.2",
-        "packageName": "uuid",
-        "hash": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+        "version": "17.0.2",
+        "packageName": "nx",
+        "hash": "sha512-utk9ufxLlRd210nEV6cKjMLVK0gup2ZMlNT41lLgUX/gp3Q59G1NkyLo3o29DxBh3AhNJ9q5MKgybmzDNdpudA=="
       }
     },
-    "npm:schema-utils": {
+    "npm:require-directory": {
       "type": "npm",
-      "name": "npm:schema-utils",
+      "name": "npm:require-directory",
       "data": {
-        "version": "4.2.0",
-        "packageName": "schema-utils",
-        "hash": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw=="
+        "version": "2.1.1",
+        "packageName": "require-directory",
+        "hash": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
       }
     },
-    "npm:doctrine": {
+    "npm:natural-compare": {
       "type": "npm",
-      "name": "npm:doctrine",
+      "name": "npm:natural-compare",
       "data": {
-        "version": "3.0.0",
-        "packageName": "doctrine",
-        "hash": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="
+        "version": "1.4.0",
+        "packageName": "natural-compare",
+        "hash": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
       }
     },
-    "npm:micromark-util-types": {
+    "npm:serialize-javascript": {
       "type": "npm",
-      "name": "npm:micromark-util-types",
+      "name": "npm:serialize-javascript",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-types",
-        "hash": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg=="
+        "version": "6.0.1",
+        "packageName": "serialize-javascript",
+        "hash": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w=="
       }
     },
-    "npm:@sinonjs/commons": {
+    "npm:figures@5.0.0": {
       "type": "npm",
-      "name": "npm:@sinonjs/commons",
+      "name": "npm:figures@5.0.0",
       "data": {
-        "version": "3.0.0",
-        "packageName": "@sinonjs/commons",
-        "hash": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA=="
+        "version": "5.0.0",
+        "packageName": "figures",
+        "hash": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg=="
       }
     },
-    "npm:emittery": {
+    "npm:postcss-loader": {
       "type": "npm",
-      "name": "npm:emittery",
+      "name": "npm:postcss-loader",
       "data": {
-        "version": "0.13.1",
-        "packageName": "emittery",
-        "hash": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ=="
+        "version": "7.3.3",
+        "packageName": "postcss-loader",
+        "hash": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA=="
       }
     },
-    "npm:type-fest": {
+    "npm:@babel/plugin-transform-export-namespace-from": {
       "type": "npm",
-      "name": "npm:type-fest",
+      "name": "npm:@babel/plugin-transform-export-namespace-from",
       "data": {
-        "version": "0.21.3",
-        "packageName": "type-fest",
-        "hash": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-export-namespace-from",
+        "hash": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw=="
       }
     },
-    "npm:@nx/nx-darwin-arm64": {
+    "npm:css-tree": {
       "type": "npm",
-      "name": "npm:@nx/nx-darwin-arm64",
+      "name": "npm:css-tree",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-darwin-arm64",
-        "hash": "sha512-OSZLRfV8VplYPEqMcIg3mbAsJXlXEHKrdlJ0KUTk8Hih2+wl7cxuSEwG7X7qfBUOz+ognxaqicL+hueNrgwjlQ=="
+        "version": "2.3.1",
+        "packageName": "css-tree",
+        "hash": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="
       }
     },
-    "npm:has-flag@4.0.0": {
+    "npm:micromark-util-types": {
       "type": "npm",
-      "name": "npm:has-flag@4.0.0",
+      "name": "npm:micromark-util-types",
       "data": {
-        "version": "4.0.0",
-        "packageName": "has-flag",
-        "hash": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-types",
+        "hash": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg=="
       }
     },
-    "npm:@babel/plugin-transform-property-literals": {
+    "npm:@babel/plugin-transform-sticky-regex": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-property-literals",
+      "name": "npm:@babel/plugin-transform-sticky-regex",
       "data": {
         "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-property-literals",
-        "hash": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ=="
-      }
-    },
-    "npm:nx@17.1.2": {
-      "type": "npm",
-      "name": "npm:nx@17.1.2",
-      "data": {
-        "version": "17.1.2",
-        "packageName": "nx",
-        "hash": "sha512-pf94ri36cAiSzbYcPTJwQzttgAsHSjCLEni0Ilw6aVdjpoV2l6cggYxwddX7pgtCWuokVp/6KhAxVkbzvH65wg=="
+        "packageName": "@babel/plugin-transform-sticky-regex",
+        "hash": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw=="
       }
     },
-    "npm:mini-css-extract-plugin@2.4.7": {
+    "npm:@babel/plugin-transform-modules-umd": {
       "type": "npm",
-      "name": "npm:mini-css-extract-plugin@2.4.7",
+      "name": "npm:@babel/plugin-transform-modules-umd",
       "data": {
-        "version": "2.4.7",
-        "packageName": "mini-css-extract-plugin",
-        "hash": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-modules-umd",
+        "hash": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ=="
       }
     },
-    "npm:@jridgewell/source-map": {
+    "npm:isbinaryfile": {
       "type": "npm",
-      "name": "npm:@jridgewell/source-map",
+      "name": "npm:isbinaryfile",
       "data": {
-        "version": "0.3.5",
-        "packageName": "@jridgewell/source-map",
-        "hash": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ=="
+        "version": "4.0.10",
+        "packageName": "isbinaryfile",
+        "hash": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw=="
       }
     },
-    "npm:cli-spinners@2.6.1": {
+    "npm:fast-glob@3.2.7": {
       "type": "npm",
-      "name": "npm:cli-spinners@2.6.1",
+      "name": "npm:fast-glob@3.2.7",
       "data": {
-        "version": "2.6.1",
-        "packageName": "cli-spinners",
-        "hash": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g=="
+        "version": "3.2.7",
+        "packageName": "fast-glob",
+        "hash": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q=="
       }
     },
-    "npm:@types/istanbul-reports": {
+    "npm:jest-validate": {
       "type": "npm",
-      "name": "npm:@types/istanbul-reports",
+      "name": "npm:jest-validate",
       "data": {
-        "version": "3.0.4",
-        "packageName": "@types/istanbul-reports",
-        "hash": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ=="
+        "version": "29.7.0",
+        "packageName": "jest-validate",
+        "hash": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw=="
       }
     },
-    "npm:engine.io-client": {
+    "npm:@babel/plugin-proposal-decorators": {
       "type": "npm",
-      "name": "npm:engine.io-client",
+      "name": "npm:@babel/plugin-proposal-decorators",
       "data": {
-        "version": "6.5.3",
-        "packageName": "engine.io-client",
-        "hash": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q=="
+        "version": "7.23.3",
+        "packageName": "@babel/plugin-proposal-decorators",
+        "hash": "sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ=="
       }
     },
-    "npm:string-width@5.1.2": {
+    "npm:jsonfile": {
       "type": "npm",
-      "name": "npm:string-width@5.1.2",
+      "name": "npm:jsonfile",
       "data": {
-        "version": "5.1.2",
-        "packageName": "string-width",
-        "hash": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="
+        "version": "4.0.0",
+        "packageName": "jsonfile",
+        "hash": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="
       }
     },
-    "npm:jest-runtime": {
+    "npm:@nrwl/jest": {
       "type": "npm",
-      "name": "npm:jest-runtime",
+      "name": "npm:@nrwl/jest",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-runtime",
-        "hash": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/jest",
+        "hash": "sha512-FUZcjZQaPg6ImzoK6es5KpyZGNSj6vG7AKzgAmVHzLelnSgP/0hVEZevotRKwFVWS1AmP2LLyguzpIRjtDAX0g=="
       }
     },
-    "npm:ws@8.14.2": {
+    "npm:@nx/nx-linux-arm-gnueabihf@17.1.2": {
       "type": "npm",
-      "name": "npm:ws@8.14.2",
+      "name": "npm:@nx/nx-linux-arm-gnueabihf@17.1.2",
       "data": {
-        "version": "8.14.2",
-        "packageName": "ws",
-        "hash": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-linux-arm-gnueabihf",
+        "hash": "sha512-4FwqUX7NxVfJ0v7frBKNbjENz6pvp3slDfoG2/WmnAj5a6TCu7magwlg1qLQaHYJ1m/i8u7RrG0Uz4SYHWzkVw=="
       }
     },
-    "npm:@esbuild/linux-arm": {
+    "npm:body-parser@1.20.1": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-arm",
+      "name": "npm:body-parser@1.20.1",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-arm",
-        "hash": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ=="
+        "version": "1.20.1",
+        "packageName": "body-parser",
+        "hash": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw=="
       }
     },
-    "npm:d3-drag": {
+    "npm:@bcoe/v8-coverage": {
       "type": "npm",
-      "name": "npm:d3-drag",
+      "name": "npm:@bcoe/v8-coverage",
       "data": {
-        "version": "3.0.0",
-        "packageName": "d3-drag",
-        "hash": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="
+        "version": "0.2.3",
+        "packageName": "@bcoe/v8-coverage",
+        "hash": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
       }
     },
-    "npm:@jest/source-map": {
+    "npm:indent-string": {
       "type": "npm",
-      "name": "npm:@jest/source-map",
+      "name": "npm:indent-string",
       "data": {
-        "version": "29.6.3",
-        "packageName": "@jest/source-map",
-        "hash": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw=="
+        "version": "4.0.0",
+        "packageName": "indent-string",
+        "hash": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
       }
     },
-    "npm:get-intrinsic": {
+    "npm:spdx-expression-parse": {
       "type": "npm",
-      "name": "npm:get-intrinsic",
+      "name": "npm:spdx-expression-parse",
       "data": {
-        "version": "1.2.2",
-        "packageName": "get-intrinsic",
-        "hash": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA=="
+        "version": "3.0.1",
+        "packageName": "spdx-expression-parse",
+        "hash": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="
       }
     },
-    "npm:is-plain-object": {
+    "npm:is-unicode-supported@1.3.0": {
       "type": "npm",
-      "name": "npm:is-plain-object",
+      "name": "npm:is-unicode-supported@1.3.0",
       "data": {
-        "version": "2.0.4",
-        "packageName": "is-plain-object",
-        "hash": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="
+        "version": "1.3.0",
+        "packageName": "is-unicode-supported",
+        "hash": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="
       }
     },
     "npm:undici": {
@@ -590,202 +581,265 @@
         "hash": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ=="
       }
     },
-    "npm:is-docker": {
+    "npm:debug": {
       "type": "npm",
-      "name": "npm:is-docker",
+      "name": "npm:debug",
       "data": {
-        "version": "2.2.1",
-        "packageName": "is-docker",
-        "hash": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
+        "version": "4.3.4",
+        "packageName": "debug",
+        "hash": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
       }
     },
-    "npm:slash": {
+    "npm:fill-range": {
       "type": "npm",
-      "name": "npm:slash",
+      "name": "npm:fill-range",
       "data": {
-        "version": "4.0.0",
-        "packageName": "slash",
-        "hash": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew=="
-      }
-    },
-    "npm:d3-polygon": {
+        "version": "7.0.1",
+        "packageName": "fill-range",
+        "hash": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
+      }
+    },
+    "npm:@sinonjs/commons": {
       "type": "npm",
-      "name": "npm:d3-polygon",
+      "name": "npm:@sinonjs/commons",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-polygon",
-        "hash": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="
+        "version": "3.0.0",
+        "packageName": "@sinonjs/commons",
+        "hash": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA=="
       }
     },
-    "npm:delaunator": {
+    "npm:ansi-escapes": {
       "type": "npm",
-      "name": "npm:delaunator",
+      "name": "npm:ansi-escapes",
       "data": {
-        "version": "5.0.0",
-        "packageName": "delaunator",
-        "hash": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw=="
+        "version": "4.3.2",
+        "packageName": "ansi-escapes",
+        "hash": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="
       }
     },
-    "npm:ws": {
+    "npm:object-assign": {
       "type": "npm",
-      "name": "npm:ws",
+      "name": "npm:object-assign",
       "data": {
-        "version": "8.11.0",
-        "packageName": "ws",
-        "hash": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg=="
+        "version": "4.1.1",
+        "packageName": "object-assign",
+        "hash": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
       }
     },
-    "npm:@babel/plugin-transform-private-methods": {
+    "npm:@nx/workspace@17.1.2": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-private-methods",
+      "name": "npm:@nx/workspace@17.1.2",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-private-methods",
-        "hash": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA=="
+        "version": "17.1.2",
+        "packageName": "@nx/workspace",
+        "hash": "sha512-lmdfWyspRgk7XewKU/5bjr6PieShJemDJpaSI+/H5utOeT8QeXVmNj+DDizig4eobwK0b6OXb0Vgnc7osbgjlw=="
       }
     },
-    "npm:open": {
+    "npm:postcss-reduce-initial": {
       "type": "npm",
-      "name": "npm:open",
+      "name": "npm:postcss-reduce-initial",
       "data": {
-        "version": "8.4.2",
-        "packageName": "open",
-        "hash": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="
+        "version": "6.0.0",
+        "packageName": "postcss-reduce-initial",
+        "hash": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA=="
       }
     },
-    "npm:@babel/plugin-transform-json-strings": {
+    "npm:@babel/plugin-syntax-dynamic-import": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-json-strings",
+      "name": "npm:@babel/plugin-syntax-dynamic-import",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-json-strings",
-        "hash": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw=="
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-dynamic-import",
+        "hash": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ=="
       }
     },
-    "npm:levn": {
+    "npm:@material/icon-button": {
       "type": "npm",
-      "name": "npm:levn",
+      "name": "npm:@material/icon-button",
       "data": {
-        "version": "0.4.1",
-        "packageName": "levn",
-        "hash": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/icon-button",
+        "hash": "sha512-Igyo94rkIlqC91BR1Tv+WLTz1ZWcZZjl1xU7Vsx8mbWA1PnaRDUTNVV5LFi4e0ORp6GSblFTImpHngEy4agMEg=="
       }
     },
-    "npm:spdx-expression-parse": {
+    "npm:postcss-modules-local-by-default": {
       "type": "npm",
-      "name": "npm:spdx-expression-parse",
+      "name": "npm:postcss-modules-local-by-default",
       "data": {
-        "version": "3.0.1",
-        "packageName": "spdx-expression-parse",
-        "hash": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="
+        "version": "4.0.3",
+        "packageName": "postcss-modules-local-by-default",
+        "hash": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA=="
       }
     },
-    "npm:object-assign": {
+    "npm:zone.js": {
       "type": "npm",
-      "name": "npm:object-assign",
+      "name": "npm:zone.js",
       "data": {
-        "version": "4.1.1",
-        "packageName": "object-assign",
-        "hash": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
+        "version": "0.14.2",
+        "packageName": "zone.js",
+        "hash": "sha512-X4U7J1isDhoOmHmFWiLhloWc2lzMkdnumtfQ1LXzf/IOZp5NQYuMUTaviVzG/q1ugMBIXzin2AqeVJUoSEkNyQ=="
       }
     },
-    "npm:fs-minipass@2.1.0": {
+    "npm:@eslint/js": {
       "type": "npm",
-      "name": "npm:fs-minipass@2.1.0",
+      "name": "npm:@eslint/js",
       "data": {
-        "version": "2.1.0",
-        "packageName": "fs-minipass",
-        "hash": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="
+        "version": "8.53.0",
+        "packageName": "@eslint/js",
+        "hash": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w=="
       }
     },
-    "npm:lilconfig": {
+    "npm:combined-stream": {
       "type": "npm",
-      "name": "npm:lilconfig",
+      "name": "npm:combined-stream",
       "data": {
-        "version": "2.1.0",
-        "packageName": "lilconfig",
-        "hash": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="
+        "version": "1.0.8",
+        "packageName": "combined-stream",
+        "hash": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
       }
     },
-    "npm:@material/textfield": {
+    "npm:node-gyp-build": {
       "type": "npm",
-      "name": "npm:@material/textfield",
+      "name": "npm:node-gyp-build",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/textfield",
-        "hash": "sha512-4BW5bUERPlIeiPnLSby21h1/xDmySuAG9Ucn1LM801a0+5mK3IwWb8031AP3filKZZqTx5JJvOJYZd6/OWBJVA=="
+        "version": "4.6.1",
+        "packageName": "node-gyp-build",
+        "hash": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ=="
       }
     },
-    "npm:@angular-devkit/build-angular": {
+    "npm:base64id": {
       "type": "npm",
-      "name": "npm:@angular-devkit/build-angular",
+      "name": "npm:base64id",
       "data": {
-        "version": "17.0.1",
-        "packageName": "@angular-devkit/build-angular",
-        "hash": "sha512-OomGAeBg/OOxzPpoU7EkdD3WwhKip+0Giy/cGtkalSgQ5vWTuZhf8UnxwTf7xEXW5LtvfoTtv7sKmb1dJT7FzA=="
+        "version": "2.0.0",
+        "packageName": "base64id",
+        "hash": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
       }
     },
-    "npm:picomatch@3.0.1": {
+    "npm:wrap-ansi-cjs": {
       "type": "npm",
-      "name": "npm:picomatch@3.0.1",
+      "name": "npm:wrap-ansi-cjs",
       "data": {
-        "version": "3.0.1",
-        "packageName": "picomatch",
-        "hash": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag=="
+        "version": "npm:wrap-ansi@7.0.0",
+        "packageName": "wrap-ansi-cjs",
+        "hash": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
       }
     },
-    "npm:void-elements": {
+    "npm:copy-webpack-plugin": {
       "type": "npm",
-      "name": "npm:void-elements",
+      "name": "npm:copy-webpack-plugin",
       "data": {
-        "version": "2.0.1",
-        "packageName": "void-elements",
-        "hash": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung=="
+        "version": "11.0.0",
+        "packageName": "copy-webpack-plugin",
+        "hash": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ=="
       }
     },
-    "npm:@esbuild/linux-ppc64@0.18.20": {
+    "npm:@eslint-community/regexpp": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-ppc64@0.18.20",
+      "name": "npm:@eslint-community/regexpp",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-ppc64",
-        "hash": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="
+        "version": "4.10.0",
+        "packageName": "@eslint-community/regexpp",
+        "hash": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA=="
       }
     },
-    "npm:caniuse-api": {
+    "npm:d3-path@1.0.9": {
       "type": "npm",
-      "name": "npm:caniuse-api",
+      "name": "npm:d3-path@1.0.9",
       "data": {
-        "version": "3.0.0",
-        "packageName": "caniuse-api",
-        "hash": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw=="
+        "version": "1.0.9",
+        "packageName": "d3-path",
+        "hash": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
       }
     },
-    "npm:jest-validate": {
+    "npm:immutable@3.8.2": {
       "type": "npm",
-      "name": "npm:jest-validate",
+      "name": "npm:immutable@3.8.2",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-validate",
-        "hash": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw=="
+        "version": "3.8.2",
+        "packageName": "immutable",
+        "hash": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg=="
       }
     },
-    "npm:postcss-normalize-charset": {
+    "npm:fast-glob": {
       "type": "npm",
-      "name": "npm:postcss-normalize-charset",
+      "name": "npm:fast-glob",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-charset",
-        "hash": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ=="
+        "version": "3.3.1",
+        "packageName": "fast-glob",
+        "hash": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="
       }
     },
-    "npm:reusify": {
+    "npm:parse5": {
       "type": "npm",
-      "name": "npm:reusify",
+      "name": "npm:parse5",
       "data": {
-        "version": "1.0.4",
-        "packageName": "reusify",
-        "hash": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+        "version": "4.0.0",
+        "packageName": "parse5",
+        "hash": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA=="
+      }
+    },
+    "npm:@ljharb/through": {
+      "type": "npm",
+      "name": "npm:@ljharb/through",
+      "data": {
+        "version": "2.3.11",
+        "packageName": "@ljharb/through",
+        "hash": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w=="
+      }
+    },
+    "npm:source-map": {
+      "type": "npm",
+      "name": "npm:source-map",
+      "data": {
+        "version": "0.7.4",
+        "packageName": "source-map",
+        "hash": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
+      }
+    },
+    "npm:@material/base": {
+      "type": "npm",
+      "name": "npm:@material/base",
+      "data": {
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/base",
+        "hash": "sha512-/ob3v3IFU8q2gGdVNWw5kNPjW2mRTeBIz1YdhGWUmRxKn2Kl8bdLOvrAmZtQMmPn/4cGXvinxpec/zVBWQKDkA=="
+      }
+    },
+    "npm:source-map-support": {
+      "type": "npm",
+      "name": "npm:source-map-support",
+      "data": {
+        "version": "0.5.21",
+        "packageName": "source-map-support",
+        "hash": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="
+      }
+    },
+    "npm:@esbuild/sunos-x64": {
+      "type": "npm",
+      "name": "npm:@esbuild/sunos-x64",
+      "data": {
+        "version": "0.19.5",
+        "packageName": "@esbuild/sunos-x64",
+        "hash": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg=="
+      }
+    },
+    "npm:@types/node": {
+      "type": "npm",
+      "name": "npm:@types/node",
+      "data": {
+        "version": "20.8.8",
+        "packageName": "@types/node",
+        "hash": "sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ=="
+      }
+    },
+    "npm:@webassemblyjs/helper-api-error": {
+      "type": "npm",
+      "name": "npm:@webassemblyjs/helper-api-error",
+      "data": {
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/helper-api-error",
+        "hash": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q=="
       }
     },
     "npm:finalhandler": {
@@ -797,2605 +851,2614 @@
         "hash": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA=="
       }
     },
-    "npm:@babel/plugin-transform-modules-amd": {
-      "type": "npm",
-      "name": "npm:@babel/plugin-transform-modules-amd",
-      "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/plugin-transform-modules-amd",
-        "hash": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw=="
-      }
-    },
-    "npm:cytoscape-fcose": {
+    "npm:d3-force": {
       "type": "npm",
-      "name": "npm:cytoscape-fcose",
+      "name": "npm:d3-force",
       "data": {
-        "version": "2.2.0",
-        "packageName": "cytoscape-fcose",
-        "hash": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="
+        "version": "3.0.0",
+        "packageName": "d3-force",
+        "hash": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="
       }
     },
-    "npm:is-glob": {
+    "npm:resolve-from@4.0.0": {
       "type": "npm",
-      "name": "npm:is-glob",
+      "name": "npm:resolve-from@4.0.0",
       "data": {
-        "version": "4.0.3",
-        "packageName": "is-glob",
-        "hash": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="
+        "version": "4.0.0",
+        "packageName": "resolve-from",
+        "hash": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
       }
     },
-    "npm:postcss-normalize-timing-functions": {
+    "npm:is-core-module": {
       "type": "npm",
-      "name": "npm:postcss-normalize-timing-functions",
+      "name": "npm:is-core-module",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-timing-functions",
-        "hash": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg=="
+        "version": "2.13.1",
+        "packageName": "is-core-module",
+        "hash": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw=="
       }
     },
-    "npm:@babel/helper-validator-identifier": {
+    "npm:@npmcli/node-gyp": {
       "type": "npm",
-      "name": "npm:@babel/helper-validator-identifier",
+      "name": "npm:@npmcli/node-gyp",
       "data": {
-        "version": "7.22.20",
-        "packageName": "@babel/helper-validator-identifier",
-        "hash": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
+        "version": "3.0.0",
+        "packageName": "@npmcli/node-gyp",
+        "hash": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA=="
       }
     },
-    "npm:makeerror": {
+    "npm:source-map-loader@3.0.2": {
       "type": "npm",
-      "name": "npm:makeerror",
+      "name": "npm:source-map-loader@3.0.2",
       "data": {
-        "version": "1.0.12",
-        "packageName": "makeerror",
-        "hash": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg=="
+        "version": "3.0.2",
+        "packageName": "source-map-loader",
+        "hash": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg=="
       }
     },
-    "npm:@discoveryjs/json-ext": {
+    "npm:acorn": {
       "type": "npm",
-      "name": "npm:@discoveryjs/json-ext",
+      "name": "npm:acorn",
       "data": {
-        "version": "0.5.7",
-        "packageName": "@discoveryjs/json-ext",
-        "hash": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="
+        "version": "8.10.0",
+        "packageName": "acorn",
+        "hash": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw=="
       }
     },
-    "npm:@jest/test-result": {
+    "npm:@npmcli/installed-package-contents": {
       "type": "npm",
-      "name": "npm:@jest/test-result",
+      "name": "npm:@npmcli/installed-package-contents",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/test-result",
-        "hash": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA=="
+        "version": "2.0.2",
+        "packageName": "@npmcli/installed-package-contents",
+        "hash": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ=="
       }
     },
-    "npm:@material/image-list": {
+    "npm:is-number-like": {
       "type": "npm",
-      "name": "npm:@material/image-list",
+      "name": "npm:is-number-like",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/image-list",
-        "hash": "sha512-Rcj3q7Tp7Nwbe5ht6ptTc3zqK8TSDJHaPDBf+kzi0kkh6MAB4qoHPgn+HnA+zIZ79CScU56bN7zjA6XYaZvsLw=="
+        "version": "1.0.8",
+        "packageName": "is-number-like",
+        "hash": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA=="
       }
     },
-    "npm:@babel/plugin-transform-object-super": {
+    "npm:micromark-util-normalize-identifier": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-object-super",
+      "name": "npm:micromark-util-normalize-identifier",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-object-super",
-        "hash": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-normalize-identifier",
+        "hash": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q=="
       }
     },
-    "npm:source-map-support@0.5.13": {
+    "npm:d3-shape": {
       "type": "npm",
-      "name": "npm:source-map-support@0.5.13",
+      "name": "npm:d3-shape",
       "data": {
-        "version": "0.5.13",
-        "packageName": "source-map-support",
-        "hash": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w=="
+        "version": "3.2.0",
+        "packageName": "d3-shape",
+        "hash": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="
       }
     },
-    "npm:clone-deep": {
+    "npm:opn": {
       "type": "npm",
-      "name": "npm:clone-deep",
+      "name": "npm:opn",
       "data": {
-        "version": "4.0.1",
-        "packageName": "clone-deep",
-        "hash": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ=="
+        "version": "5.3.0",
+        "packageName": "opn",
+        "hash": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g=="
       }
     },
-    "npm:cose-base": {
+    "npm:picocolors": {
       "type": "npm",
-      "name": "npm:cose-base",
+      "name": "npm:picocolors",
       "data": {
-        "version": "1.0.3",
-        "packageName": "cose-base",
-        "hash": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="
+        "version": "1.0.0",
+        "packageName": "picocolors",
+        "hash": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
       }
     },
-    "npm:@nx/nx-linux-arm64-musl": {
+    "npm:lines-and-columns@2.0.4": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-arm64-musl",
+      "name": "npm:lines-and-columns@2.0.4",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-linux-arm64-musl",
-        "hash": "sha512-f8pUFoZHBFQtHnopHgTEuwIiu0Rzem0dD7iK8SyyBy/lRAADtHCAHxaPAG+iatHAJ9h4DFIB50k9ybYxDtH2mg=="
+        "version": "2.0.4",
+        "packageName": "lines-and-columns",
+        "hash": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A=="
       }
     },
-    "npm:eslint-scope": {
+    "npm:elkjs": {
       "type": "npm",
-      "name": "npm:eslint-scope",
+      "name": "npm:elkjs",
       "data": {
-        "version": "5.1.1",
-        "packageName": "eslint-scope",
-        "hash": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="
+        "version": "0.8.2",
+        "packageName": "elkjs",
+        "hash": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ=="
       }
     },
-    "npm:@babel/plugin-transform-literals": {
+    "npm:@material/list": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-literals",
+      "name": "npm:@material/list",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-literals",
-        "hash": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/list",
+        "hash": "sha512-4H5dKIjCUGIPmKjfcegV0SBybD5NNdHp26OU6sovvWIvxSGQtDJr6z9I7i+0vF/HIS5ScbHD2+9/txtL80iqCA=="
       }
     },
-    "npm:jest-environment-node": {
+    "npm:portfinder": {
       "type": "npm",
-      "name": "npm:jest-environment-node",
+      "name": "npm:portfinder",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-environment-node",
-        "hash": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw=="
+        "version": "1.0.32",
+        "packageName": "portfinder",
+        "hash": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg=="
       }
     },
-    "npm:jest-haste-map": {
+    "npm:postcss-normalize-positions": {
       "type": "npm",
-      "name": "npm:jest-haste-map",
+      "name": "npm:postcss-normalize-positions",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-haste-map",
-        "hash": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA=="
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-positions",
+        "hash": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg=="
       }
     },
-    "npm:@jridgewell/set-array": {
+    "npm:camelcase@6.3.0": {
       "type": "npm",
-      "name": "npm:@jridgewell/set-array",
+      "name": "npm:camelcase@6.3.0",
       "data": {
-        "version": "1.1.2",
-        "packageName": "@jridgewell/set-array",
-        "hash": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+        "version": "6.3.0",
+        "packageName": "camelcase",
+        "hash": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
       }
     },
-    "npm:http-parser-js": {
+    "npm:promise-retry": {
       "type": "npm",
-      "name": "npm:http-parser-js",
+      "name": "npm:promise-retry",
       "data": {
-        "version": "0.5.8",
-        "packageName": "http-parser-js",
-        "hash": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
+        "version": "2.0.1",
+        "packageName": "promise-retry",
+        "hash": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g=="
       }
     },
-    "npm:mermaid": {
+    "npm:run-parallel": {
       "type": "npm",
-      "name": "npm:mermaid",
+      "name": "npm:run-parallel",
       "data": {
-        "version": "10.6.1",
-        "packageName": "mermaid",
-        "hash": "sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A=="
+        "version": "1.2.0",
+        "packageName": "run-parallel",
+        "hash": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="
       }
     },
-    "npm:emoji-regex@9.2.2": {
+    "npm:ssri": {
       "type": "npm",
-      "name": "npm:emoji-regex@9.2.2",
+      "name": "npm:ssri",
       "data": {
-        "version": "9.2.2",
-        "packageName": "emoji-regex",
-        "hash": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+        "version": "10.0.5",
+        "packageName": "ssri",
+        "hash": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A=="
       }
     },
-    "npm:depd": {
+    "npm:internmap": {
       "type": "npm",
-      "name": "npm:depd",
+      "name": "npm:internmap",
       "data": {
-        "version": "2.0.0",
-        "packageName": "depd",
-        "hash": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+        "version": "2.0.3",
+        "packageName": "internmap",
+        "hash": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="
       }
     },
-    "npm:commondir": {
+    "npm:strip-bom": {
       "type": "npm",
-      "name": "npm:commondir",
+      "name": "npm:strip-bom",
       "data": {
-        "version": "1.0.1",
-        "packageName": "commondir",
-        "hash": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+        "version": "4.0.0",
+        "packageName": "strip-bom",
+        "hash": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w=="
       }
     },
-    "npm:sigstore": {
+    "npm:tar": {
       "type": "npm",
-      "name": "npm:sigstore",
+      "name": "npm:tar",
       "data": {
-        "version": "2.1.0",
-        "packageName": "sigstore",
-        "hash": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw=="
+        "version": "6.2.0",
+        "packageName": "tar",
+        "hash": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ=="
       }
     },
-    "npm:strip-bom@3.0.0": {
+    "npm:@schematics/angular@17.0.1": {
       "type": "npm",
-      "name": "npm:strip-bom@3.0.0",
+      "name": "npm:@schematics/angular@17.0.1",
       "data": {
-        "version": "3.0.0",
-        "packageName": "strip-bom",
-        "hash": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="
+        "version": "17.0.1",
+        "packageName": "@schematics/angular",
+        "hash": "sha512-BacI1fQsEXNYkfJzDJn3CsUSc9A4M7nhXtvt3XjceUhOqUp2AR4uIeUwDOrpLnkRwv5+rZLafUnRN3k01WUJOw=="
       }
     },
-    "npm:webpack-subresource-integrity": {
+    "npm:abbrev": {
       "type": "npm",
-      "name": "npm:webpack-subresource-integrity",
+      "name": "npm:abbrev",
       "data": {
-        "version": "5.1.0",
-        "packageName": "webpack-subresource-integrity",
-        "hash": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q=="
+        "version": "2.0.0",
+        "packageName": "abbrev",
+        "hash": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="
       }
     },
-    "npm:@babel/runtime": {
+    "npm:@nx/nx-win32-x64-msvc": {
       "type": "npm",
-      "name": "npm:@babel/runtime",
+      "name": "npm:@nx/nx-win32-x64-msvc",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/runtime",
-        "hash": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-win32-x64-msvc",
+        "hash": "sha512-XhET0BDk6fbvTBCs7m5gZii8+2WhLpiC1sZchJw4LAJN2VJBiy3I3xnvpQYGFOAWaCb/iUGpuN/qP/NlQ+LNgA=="
       }
     },
-    "npm:postcss-normalize-string": {
+    "npm:has-flag@4.0.0": {
       "type": "npm",
-      "name": "npm:postcss-normalize-string",
+      "name": "npm:has-flag@4.0.0",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-string",
-        "hash": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w=="
+        "version": "4.0.0",
+        "packageName": "has-flag",
+        "hash": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
       }
     },
-    "npm:@esbuild/linux-arm@0.18.20": {
+    "npm:resolve-from": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-arm@0.18.20",
+      "name": "npm:resolve-from",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-arm",
-        "hash": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="
+        "version": "5.0.0",
+        "packageName": "resolve-from",
+        "hash": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
       }
     },
-    "npm:aggregate-error": {
+    "npm:@nx/js": {
       "type": "npm",
-      "name": "npm:aggregate-error",
+      "name": "npm:@nx/js",
       "data": {
-        "version": "3.1.0",
-        "packageName": "aggregate-error",
-        "hash": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="
+        "version": "17.1.2",
+        "packageName": "@nx/js",
+        "hash": "sha512-3fPiOEw+iD1Bc+AvfdGgMSCYDYxAGmZ01lHp/RERTyCHroEoMiq8yiTBbET6TPOvKOBMXA+pR2Ux04QA3S4N6Q=="
       }
     },
-    "npm:select-hose": {
+    "npm:nice-napi": {
       "type": "npm",
-      "name": "npm:select-hose",
+      "name": "npm:nice-napi",
       "data": {
-        "version": "2.0.0",
-        "packageName": "select-hose",
-        "hash": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="
+        "version": "1.0.2",
+        "packageName": "nice-napi",
+        "hash": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA=="
       }
     },
-    "npm:mri": {
+    "npm:ts-dedent": {
       "type": "npm",
-      "name": "npm:mri",
+      "name": "npm:ts-dedent",
       "data": {
-        "version": "1.2.0",
-        "packageName": "mri",
-        "hash": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="
+        "version": "2.2.0",
+        "packageName": "ts-dedent",
+        "hash": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="
       }
     },
-    "npm:shell-quote": {
+    "npm:fraction.js": {
       "type": "npm",
-      "name": "npm:shell-quote",
+      "name": "npm:fraction.js",
       "data": {
-        "version": "1.8.1",
-        "packageName": "shell-quote",
-        "hash": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA=="
+        "version": "4.3.7",
+        "packageName": "fraction.js",
+        "hash": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="
       }
     },
-    "npm:@jest/fake-timers": {
+    "npm:is-wsl@1.1.0": {
       "type": "npm",
-      "name": "npm:@jest/fake-timers",
+      "name": "npm:is-wsl@1.1.0",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/fake-timers",
-        "hash": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ=="
+        "version": "1.1.0",
+        "packageName": "is-wsl",
+        "hash": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw=="
       }
     },
-    "npm:postcss-discard-duplicates": {
+    "npm:@babel/plugin-syntax-import-attributes": {
       "type": "npm",
-      "name": "npm:postcss-discard-duplicates",
+      "name": "npm:@babel/plugin-syntax-import-attributes",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-discard-duplicates",
-        "hash": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-syntax-import-attributes",
+        "hash": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg=="
       }
     },
-    "npm:@types/jasmine": {
+    "npm:@babel/plugin-transform-modules-amd": {
       "type": "npm",
-      "name": "npm:@types/jasmine",
+      "name": "npm:@babel/plugin-transform-modules-amd",
       "data": {
-        "version": "4.3.6",
-        "packageName": "@types/jasmine",
-        "hash": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g=="
+        "version": "7.23.0",
+        "packageName": "@babel/plugin-transform-modules-amd",
+        "hash": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw=="
       }
     },
-    "npm:safe-buffer@5.1.2": {
+    "npm:@types/eslint": {
       "type": "npm",
-      "name": "npm:safe-buffer@5.1.2",
+      "name": "npm:@types/eslint",
       "data": {
-        "version": "5.1.2",
-        "packageName": "safe-buffer",
-        "hash": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+        "version": "8.44.6",
+        "packageName": "@types/eslint",
+        "hash": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw=="
       }
     },
-    "npm:cosmiconfig@6.0.0": {
+    "npm:@babel/helper-validator-option": {
       "type": "npm",
-      "name": "npm:cosmiconfig@6.0.0",
+      "name": "npm:@babel/helper-validator-option",
       "data": {
-        "version": "6.0.0",
-        "packageName": "cosmiconfig",
-        "hash": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg=="
+        "version": "7.22.15",
+        "packageName": "@babel/helper-validator-option",
+        "hash": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA=="
       }
     },
-    "npm:chardet": {
+    "npm:ms@2.0.0": {
       "type": "npm",
-      "name": "npm:chardet",
+      "name": "npm:ms@2.0.0",
       "data": {
-        "version": "0.7.0",
-        "packageName": "chardet",
-        "hash": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
+        "version": "2.0.0",
+        "packageName": "ms",
+        "hash": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
       }
     },
-    "npm:d3-shape": {
+    "npm:loader-runner": {
       "type": "npm",
-      "name": "npm:d3-shape",
+      "name": "npm:loader-runner",
       "data": {
-        "version": "3.2.0",
-        "packageName": "d3-shape",
-        "hash": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="
+        "version": "4.3.0",
+        "packageName": "loader-runner",
+        "hash": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="
       }
     },
-    "npm:@nrwl/cypress": {
+    "npm:d3-polygon": {
       "type": "npm",
-      "name": "npm:@nrwl/cypress",
+      "name": "npm:d3-polygon",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/cypress",
-        "hash": "sha512-urFTPQ81ROk56ktkwp3CU7MsIA1zFEYJC4nqrrJxGQm/4GcJ4JvRzjSNmcP6nApaO34in+nwskECBMWs2+6ZPQ=="
+        "version": "3.0.1",
+        "packageName": "d3-polygon",
+        "hash": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="
       }
     },
-    "npm:is-core-module": {
+    "npm:bl": {
       "type": "npm",
-      "name": "npm:is-core-module",
+      "name": "npm:bl",
       "data": {
-        "version": "2.13.1",
-        "packageName": "is-core-module",
-        "hash": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw=="
+        "version": "4.1.0",
+        "packageName": "bl",
+        "hash": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="
       }
     },
-    "npm:micromark-util-chunked": {
+    "npm:ip": {
       "type": "npm",
-      "name": "npm:micromark-util-chunked",
+      "name": "npm:ip",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-chunked",
-        "hash": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ=="
+        "version": "2.0.0",
+        "packageName": "ip",
+        "hash": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
       }
     },
-    "npm:get-stream": {
+    "npm:tuf-js": {
       "type": "npm",
-      "name": "npm:get-stream",
+      "name": "npm:tuf-js",
       "data": {
-        "version": "6.0.1",
-        "packageName": "get-stream",
-        "hash": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
+        "version": "2.1.0",
+        "packageName": "tuf-js",
+        "hash": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA=="
       }
     },
-    "npm:node-machine-id": {
+    "npm:js-tokens": {
       "type": "npm",
-      "name": "npm:node-machine-id",
+      "name": "npm:js-tokens",
       "data": {
-        "version": "1.1.12",
-        "packageName": "node-machine-id",
-        "hash": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ=="
+        "version": "4.0.0",
+        "packageName": "js-tokens",
+        "hash": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
       }
     },
-    "npm:ejs": {
+    "npm:@esbuild/android-arm64@0.18.20": {
       "type": "npm",
-      "name": "npm:ejs",
+      "name": "npm:@esbuild/android-arm64@0.18.20",
       "data": {
-        "version": "3.1.9",
-        "packageName": "ejs",
-        "hash": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/android-arm64",
+        "hash": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="
       }
     },
-    "npm:@nx/nx-win32-x64-msvc@17.1.2": {
+    "npm:@esbuild/linux-ia32@0.18.20": {
       "type": "npm",
-      "name": "npm:@nx/nx-win32-x64-msvc@17.1.2",
+      "name": "npm:@esbuild/linux-ia32@0.18.20",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-win32-x64-msvc",
-        "hash": "sha512-oxKCKunuo4wRusMlNu7PlhBijhtNy7eBZPAWyqUsdfnb+CjY2QncjCguW3fnsG9gHQFCa+y0b1WkSkvJ5G1DiQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-ia32",
+        "hash": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="
       }
     },
-    "npm:p-limit@4.0.0": {
+    "npm:@material/button": {
       "type": "npm",
-      "name": "npm:p-limit@4.0.0",
+      "name": "npm:@material/button",
       "data": {
-        "version": "4.0.0",
-        "packageName": "p-limit",
-        "hash": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/button",
+        "hash": "sha512-rGpVRde0Aqhv2t9QvT8Zl3HvG89BeUNPOpgfpaLBZ4SGGAO4rIrckl/eCENibKgmmdCKcYZlG9gc5abQVPfUvw=="
       }
     },
-    "npm:@webassemblyjs/helper-numbers": {
+    "npm:klona": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/helper-numbers",
+      "name": "npm:klona",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/helper-numbers",
-        "hash": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g=="
+        "version": "2.0.6",
+        "packageName": "klona",
+        "hash": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="
       }
     },
-    "npm:mdast-util-from-markdown": {
+    "npm:he": {
       "type": "npm",
-      "name": "npm:mdast-util-from-markdown",
+      "name": "npm:he",
       "data": {
-        "version": "1.3.1",
-        "packageName": "mdast-util-from-markdown",
-        "hash": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww=="
+        "version": "1.2.0",
+        "packageName": "he",
+        "hash": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
       }
     },
-    "npm:mini-css-extract-plugin": {
+    "npm:write-file-atomic": {
       "type": "npm",
-      "name": "npm:mini-css-extract-plugin",
+      "name": "npm:write-file-atomic",
       "data": {
-        "version": "2.7.6",
-        "packageName": "mini-css-extract-plugin",
-        "hash": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw=="
+        "version": "4.0.2",
+        "packageName": "write-file-atomic",
+        "hash": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg=="
       }
     },
-    "npm:socks": {
+    "npm:type-detect": {
       "type": "npm",
-      "name": "npm:socks",
+      "name": "npm:type-detect",
       "data": {
-        "version": "2.7.1",
-        "packageName": "socks",
-        "hash": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ=="
+        "version": "4.0.8",
+        "packageName": "type-detect",
+        "hash": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
       }
     },
-    "npm:@istanbuljs/load-nyc-config": {
+    "npm:@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
       "type": "npm",
-      "name": "npm:@istanbuljs/load-nyc-config",
+      "name": "npm:@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
       "data": {
-        "version": "1.1.0",
-        "packageName": "@istanbuljs/load-nyc-config",
-        "hash": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ=="
+        "version": "7.22.15",
+        "packageName": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
+        "hash": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg=="
       }
     },
-    "npm:micromark-util-classify-character": {
+    "npm:ansi-styles": {
       "type": "npm",
-      "name": "npm:micromark-util-classify-character",
+      "name": "npm:ansi-styles",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-classify-character",
-        "hash": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw=="
+        "version": "3.2.1",
+        "packageName": "ansi-styles",
+        "hash": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
       }
     },
-    "npm:is-stream": {
+    "npm:@esbuild/win32-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:is-stream",
+      "name": "npm:@esbuild/win32-x64@0.18.20",
       "data": {
-        "version": "2.0.1",
-        "packageName": "is-stream",
-        "hash": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/win32-x64",
+        "hash": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="
       }
     },
-    "npm:run-async": {
+    "npm:loader-utils@2.0.4": {
       "type": "npm",
-      "name": "npm:run-async",
+      "name": "npm:loader-utils@2.0.4",
       "data": {
-        "version": "3.0.0",
-        "packageName": "run-async",
-        "hash": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q=="
+        "version": "2.0.4",
+        "packageName": "loader-utils",
+        "hash": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="
       }
     },
-    "npm:@babel/helper-builder-binary-assignment-operator-visitor": {
+    "npm:get-intrinsic": {
       "type": "npm",
-      "name": "npm:@babel/helper-builder-binary-assignment-operator-visitor",
+      "name": "npm:get-intrinsic",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/helper-builder-binary-assignment-operator-visitor",
-        "hash": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw=="
+        "version": "1.2.2",
+        "packageName": "get-intrinsic",
+        "hash": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA=="
       }
     },
-    "npm:normalize-range": {
+    "npm:postcss-calc": {
       "type": "npm",
-      "name": "npm:normalize-range",
+      "name": "npm:postcss-calc",
       "data": {
-        "version": "0.1.2",
-        "packageName": "normalize-range",
-        "hash": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="
+        "version": "9.0.1",
+        "packageName": "postcss-calc",
+        "hash": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ=="
       }
     },
-    "npm:@esbuild/linux-arm64@0.18.20": {
+    "npm:walker": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-arm64@0.18.20",
+      "name": "npm:walker",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-arm64",
-        "hash": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="
+        "version": "1.0.8",
+        "packageName": "walker",
+        "hash": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ=="
       }
     },
-    "npm:commander@7.2.0": {
+    "npm:jake": {
       "type": "npm",
-      "name": "npm:commander@7.2.0",
+      "name": "npm:jake",
       "data": {
-        "version": "7.2.0",
-        "packageName": "commander",
-        "hash": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+        "version": "10.8.7",
+        "packageName": "jake",
+        "hash": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w=="
       }
     },
-    "npm:@esbuild/sunos-x64@0.18.20": {
+    "npm:glob-to-regexp": {
       "type": "npm",
-      "name": "npm:@esbuild/sunos-x64@0.18.20",
+      "name": "npm:glob-to-regexp",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/sunos-x64",
-        "hash": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="
+        "version": "0.4.1",
+        "packageName": "glob-to-regexp",
+        "hash": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
       }
     },
-    "npm:@babel/types": {
+    "npm:agent-base": {
       "type": "npm",
-      "name": "npm:@babel/types",
+      "name": "npm:agent-base",
       "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/types",
-        "hash": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg=="
+        "version": "7.1.0",
+        "packageName": "agent-base",
+        "hash": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg=="
       }
     },
-    "npm:@babel/helper-create-regexp-features-plugin": {
+    "npm:postcss-modules-values": {
       "type": "npm",
-      "name": "npm:@babel/helper-create-regexp-features-plugin",
+      "name": "npm:postcss-modules-values",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/helper-create-regexp-features-plugin",
-        "hash": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w=="
+        "version": "4.0.0",
+        "packageName": "postcss-modules-values",
+        "hash": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ=="
       }
     },
-    "npm:semver@5.7.2": {
+    "npm:prosemirror-inputrules": {
       "type": "npm",
-      "name": "npm:semver@5.7.2",
+      "name": "npm:prosemirror-inputrules",
       "data": {
-        "version": "5.7.2",
-        "packageName": "semver",
-        "hash": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+        "version": "1.2.1",
+        "packageName": "prosemirror-inputrules",
+        "hash": "sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ=="
       }
     },
-    "npm:d3-quadtree": {
+    "npm:regenerator-runtime": {
       "type": "npm",
-      "name": "npm:d3-quadtree",
+      "name": "npm:regenerator-runtime",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-quadtree",
-        "hash": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="
+        "version": "0.14.0",
+        "packageName": "regenerator-runtime",
+        "hash": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
       }
     },
-    "npm:ignore": {
+    "npm:@types/semver": {
       "type": "npm",
-      "name": "npm:ignore",
+      "name": "npm:@types/semver",
       "data": {
-        "version": "5.2.4",
-        "packageName": "ignore",
-        "hash": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
+        "version": "7.5.5",
+        "packageName": "@types/semver",
+        "hash": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg=="
       }
     },
-    "npm:leven": {
+    "npm:@material/tab-indicator": {
       "type": "npm",
-      "name": "npm:leven",
+      "name": "npm:@material/tab-indicator",
       "data": {
-        "version": "3.1.0",
-        "packageName": "leven",
-        "hash": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/tab-indicator",
+        "hash": "sha512-gG2BgHT+ggKnUOaT8LjmH/+9nknRLh8v9qemrhUkDuCtZ8inlaC33OVbbxfrpQW3J+UzBh5YCUSC+2KrN39uUA=="
       }
     },
-    "npm:micromark-util-subtokenize": {
+    "npm:@webassemblyjs/utf8": {
       "type": "npm",
-      "name": "npm:micromark-util-subtokenize",
+      "name": "npm:@webassemblyjs/utf8",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-subtokenize",
-        "hash": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/utf8",
+        "hash": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA=="
       }
     },
-    "npm:@npmcli/git": {
+    "npm:@babel/plugin-syntax-object-rest-spread": {
       "type": "npm",
-      "name": "npm:@npmcli/git",
+      "name": "npm:@babel/plugin-syntax-object-rest-spread",
       "data": {
-        "version": "5.0.3",
-        "packageName": "@npmcli/git",
-        "hash": "sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw=="
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-object-rest-spread",
+        "hash": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA=="
       }
     },
-    "npm:@istanbuljs/schema": {
+    "npm:minimatch": {
       "type": "npm",
-      "name": "npm:@istanbuljs/schema",
+      "name": "npm:minimatch",
       "data": {
-        "version": "0.1.3",
-        "packageName": "@istanbuljs/schema",
-        "hash": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA=="
+        "version": "3.1.2",
+        "packageName": "minimatch",
+        "hash": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
       }
     },
-    "npm:jest-snapshot": {
+    "npm:tmp@0.2.1": {
       "type": "npm",
-      "name": "npm:jest-snapshot",
+      "name": "npm:tmp@0.2.1",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-snapshot",
-        "hash": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw=="
+        "version": "0.2.1",
+        "packageName": "tmp",
+        "hash": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ=="
       }
     },
-    "npm:@types/ws": {
+    "npm:@babel/plugin-transform-classes": {
       "type": "npm",
-      "name": "npm:@types/ws",
+      "name": "npm:@babel/plugin-transform-classes",
       "data": {
-        "version": "8.5.8",
-        "packageName": "@types/ws",
-        "hash": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg=="
+        "version": "7.22.15",
+        "packageName": "@babel/plugin-transform-classes",
+        "hash": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw=="
       }
     },
-    "npm:fsevents": {
+    "npm:@babel/plugin-syntax-bigint": {
       "type": "npm",
-      "name": "npm:fsevents",
+      "name": "npm:@babel/plugin-syntax-bigint",
       "data": {
-        "version": "2.3.3",
-        "packageName": "fsevents",
-        "hash": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-bigint",
+        "hash": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg=="
       }
     },
-    "npm:@fastify/busboy": {
+    "npm:@discoveryjs/json-ext": {
       "type": "npm",
-      "name": "npm:@fastify/busboy",
+      "name": "npm:@discoveryjs/json-ext",
       "data": {
-        "version": "2.1.0",
-        "packageName": "@fastify/busboy",
-        "hash": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA=="
+        "version": "0.5.7",
+        "packageName": "@discoveryjs/json-ext",
+        "hash": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="
       }
     },
-    "npm:@material/dialog": {
+    "npm:@types/d3-scale": {
       "type": "npm",
-      "name": "npm:@material/dialog",
+      "name": "npm:@types/d3-scale",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/dialog",
-        "hash": "sha512-4lyxd+5ccOEMUGKzZcssaYyzkCsYTpYCSQSANR0toQPLv3voDwKMfA709uZI6+nL7Re6Xdf7jx8qe+QpTTjVcw=="
+        "version": "4.0.8",
+        "packageName": "@types/d3-scale",
+        "hash": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ=="
       }
     },
-    "npm:node-gyp-build": {
+    "npm:corser": {
       "type": "npm",
-      "name": "npm:node-gyp-build",
+      "name": "npm:corser",
       "data": {
-        "version": "4.6.1",
-        "packageName": "node-gyp-build",
-        "hash": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ=="
+        "version": "2.0.1",
+        "packageName": "corser",
+        "hash": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ=="
       }
     },
-    "npm:path-key": {
+    "npm:css-loader": {
       "type": "npm",
-      "name": "npm:path-key",
+      "name": "npm:css-loader",
       "data": {
-        "version": "3.1.1",
-        "packageName": "path-key",
-        "hash": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+        "version": "6.8.1",
+        "packageName": "css-loader",
+        "hash": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g=="
       }
     },
-    "npm:readdirp": {
+    "npm:slash": {
       "type": "npm",
-      "name": "npm:readdirp",
+      "name": "npm:slash",
       "data": {
-        "version": "3.6.0",
-        "packageName": "readdirp",
-        "hash": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="
+        "version": "4.0.0",
+        "packageName": "slash",
+        "hash": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew=="
       }
     },
-    "npm:tree-kill": {
+    "npm:@babel/helper-module-imports": {
       "type": "npm",
-      "name": "npm:tree-kill",
+      "name": "npm:@babel/helper-module-imports",
       "data": {
-        "version": "1.2.2",
-        "packageName": "tree-kill",
-        "hash": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="
+        "version": "7.22.15",
+        "packageName": "@babel/helper-module-imports",
+        "hash": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w=="
       }
     },
-    "npm:pretty-format": {
+    "npm:npm-packlist": {
       "type": "npm",
-      "name": "npm:pretty-format",
+      "name": "npm:npm-packlist",
       "data": {
-        "version": "29.7.0",
-        "packageName": "pretty-format",
-        "hash": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="
+        "version": "8.0.0",
+        "packageName": "npm-packlist",
+        "hash": "sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw=="
       }
     },
-    "npm:emoji-regex": {
+    "npm:ua-parser-js@1.0.37": {
       "type": "npm",
-      "name": "npm:emoji-regex",
+      "name": "npm:ua-parser-js@1.0.37",
       "data": {
-        "version": "8.0.0",
-        "packageName": "emoji-regex",
-        "hash": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+        "version": "1.0.37",
+        "packageName": "ua-parser-js",
+        "hash": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ=="
       }
     },
-    "npm:brace-expansion@2.0.1": {
+    "npm:select": {
       "type": "npm",
-      "name": "npm:brace-expansion@2.0.1",
+      "name": "npm:select",
       "data": {
-        "version": "2.0.1",
-        "packageName": "brace-expansion",
-        "hash": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
+        "version": "1.1.2",
+        "packageName": "select",
+        "hash": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
       }
     },
-    "npm:@babel/compat-data": {
+    "npm:@nodelib/fs.scandir": {
       "type": "npm",
-      "name": "npm:@babel/compat-data",
+      "name": "npm:@nodelib/fs.scandir",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/compat-data",
-        "hash": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ=="
+        "version": "2.1.5",
+        "packageName": "@nodelib/fs.scandir",
+        "hash": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="
       }
     },
-    "npm:webpack-dev-middleware@5.3.3": {
+    "npm:globby@12.2.0": {
       "type": "npm",
-      "name": "npm:webpack-dev-middleware@5.3.3",
+      "name": "npm:globby@12.2.0",
       "data": {
-        "version": "5.3.3",
-        "packageName": "webpack-dev-middleware",
-        "hash": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA=="
+        "version": "12.2.0",
+        "packageName": "globby",
+        "hash": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA=="
       }
     },
-    "npm:websocket-extensions": {
+    "npm:babel-plugin-polyfill-regenerator": {
       "type": "npm",
-      "name": "npm:websocket-extensions",
+      "name": "npm:babel-plugin-polyfill-regenerator",
       "data": {
-        "version": "0.1.4",
-        "packageName": "websocket-extensions",
-        "hash": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
+        "version": "0.5.3",
+        "packageName": "babel-plugin-polyfill-regenerator",
+        "hash": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw=="
       }
     },
-    "npm:natural-compare": {
+    "npm:http-parser-js": {
       "type": "npm",
-      "name": "npm:natural-compare",
+      "name": "npm:http-parser-js",
       "data": {
-        "version": "1.4.0",
-        "packageName": "natural-compare",
-        "hash": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
+        "version": "0.5.8",
+        "packageName": "http-parser-js",
+        "hash": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
       }
     },
-    "npm:@babel/helper-plugin-utils": {
+    "npm:jest-config": {
       "type": "npm",
-      "name": "npm:@babel/helper-plugin-utils",
+      "name": "npm:jest-config",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/helper-plugin-utils",
-        "hash": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg=="
+        "version": "29.7.0",
+        "packageName": "jest-config",
+        "hash": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ=="
       }
     },
-    "npm:@material/tab-scroller": {
+    "npm:async": {
       "type": "npm",
-      "name": "npm:@material/tab-scroller",
+      "name": "npm:async",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/tab-scroller",
-        "hash": "sha512-6KvBpalc4SwLbHFm0rnuIE64VffUj7AKhnPc+mqM6VmxOvDzQ/ZSYga0rWlUfM4mCDFX3ZkSxim+iNzVF+Ejaw=="
+        "version": "3.2.4",
+        "packageName": "async",
+        "hash": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
       }
     },
-    "npm:@types/ms": {
+    "npm:process-nextick-args": {
       "type": "npm",
-      "name": "npm:@types/ms",
+      "name": "npm:process-nextick-args",
       "data": {
-        "version": "0.7.34",
-        "packageName": "@types/ms",
-        "hash": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
+        "version": "2.0.1",
+        "packageName": "process-nextick-args",
+        "hash": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
       }
     },
-    "npm:npm-registry-fetch": {
+    "npm:readdirp": {
       "type": "npm",
-      "name": "npm:npm-registry-fetch",
+      "name": "npm:readdirp",
       "data": {
-        "version": "16.1.0",
-        "packageName": "npm-registry-fetch",
-        "hash": "sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw=="
+        "version": "3.6.0",
+        "packageName": "readdirp",
+        "hash": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="
       }
     },
-    "npm:@jest/schemas": {
+    "npm:jest-get-type": {
       "type": "npm",
-      "name": "npm:@jest/schemas",
+      "name": "npm:jest-get-type",
       "data": {
         "version": "29.6.3",
-        "packageName": "@jest/schemas",
-        "hash": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="
+        "packageName": "jest-get-type",
+        "hash": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="
       }
     },
-    "npm:d3-selection": {
+    "npm:@babel/helper-simple-access": {
       "type": "npm",
-      "name": "npm:d3-selection",
+      "name": "npm:@babel/helper-simple-access",
       "data": {
-        "version": "3.0.0",
-        "packageName": "d3-selection",
-        "hash": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="
+        "version": "7.22.5",
+        "packageName": "@babel/helper-simple-access",
+        "hash": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w=="
       }
     },
-    "npm:range-parser": {
+    "npm:@types/http-proxy": {
       "type": "npm",
-      "name": "npm:range-parser",
+      "name": "npm:@types/http-proxy",
       "data": {
-        "version": "1.2.1",
-        "packageName": "range-parser",
-        "hash": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        "version": "1.17.13",
+        "packageName": "@types/http-proxy",
+        "hash": "sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw=="
       }
     },
-    "npm:less": {
+    "npm:d3-axis": {
       "type": "npm",
-      "name": "npm:less",
+      "name": "npm:d3-axis",
       "data": {
-        "version": "4.2.0",
-        "packageName": "less",
-        "hash": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA=="
+        "version": "3.0.0",
+        "packageName": "d3-axis",
+        "hash": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="
+      }
+    },
+    "npm:postcss-svgo": {
+      "type": "npm",
+      "name": "npm:postcss-svgo",
+      "data": {
+        "version": "6.0.0",
+        "packageName": "postcss-svgo",
+        "hash": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw=="
       }
     },
-    "npm:dagre-d3-es": {
+    "npm:unique-slug": {
       "type": "npm",
-      "name": "npm:dagre-d3-es",
+      "name": "npm:unique-slug",
       "data": {
-        "version": "7.0.10",
-        "packageName": "dagre-d3-es",
-        "hash": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A=="
+        "version": "4.0.0",
+        "packageName": "unique-slug",
+        "hash": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ=="
       }
     },
-    "npm:on-headers": {
+    "npm:websocket-driver": {
       "type": "npm",
-      "name": "npm:on-headers",
+      "name": "npm:websocket-driver",
       "data": {
-        "version": "1.0.2",
-        "packageName": "on-headers",
-        "hash": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+        "version": "0.7.4",
+        "packageName": "websocket-driver",
+        "hash": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg=="
       }
     },
-    "npm:robust-predicates": {
+    "npm:path-type": {
       "type": "npm",
-      "name": "npm:robust-predicates",
+      "name": "npm:path-type",
       "data": {
-        "version": "3.0.2",
-        "packageName": "robust-predicates",
-        "hash": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+        "version": "4.0.0",
+        "packageName": "path-type",
+        "hash": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
       }
     },
-    "npm:stack-utils": {
+    "npm:fs.realpath": {
       "type": "npm",
-      "name": "npm:stack-utils",
+      "name": "npm:fs.realpath",
       "data": {
-        "version": "2.0.6",
-        "packageName": "stack-utils",
-        "hash": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="
+        "version": "1.0.0",
+        "packageName": "fs.realpath",
+        "hash": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
       }
     },
-    "npm:ansi-regex": {
+    "npm:ora@5.3.0": {
       "type": "npm",
-      "name": "npm:ansi-regex",
+      "name": "npm:ora@5.3.0",
       "data": {
-        "version": "5.0.1",
-        "packageName": "ansi-regex",
-        "hash": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+        "version": "5.3.0",
+        "packageName": "ora",
+        "hash": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g=="
       }
     },
-    "npm:exponential-backoff": {
+    "npm:@jest/expect": {
       "type": "npm",
-      "name": "npm:exponential-backoff",
+      "name": "npm:@jest/expect",
       "data": {
-        "version": "3.1.1",
-        "packageName": "exponential-backoff",
-        "hash": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw=="
+        "version": "29.7.0",
+        "packageName": "@jest/expect",
+        "hash": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ=="
       }
     },
-    "npm:babel-plugin-polyfill-corejs2": {
+    "npm:ngx-editor": {
       "type": "npm",
-      "name": "npm:babel-plugin-polyfill-corejs2",
+      "name": "npm:ngx-editor",
       "data": {
-        "version": "0.4.6",
-        "packageName": "babel-plugin-polyfill-corejs2",
-        "hash": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q=="
+        "version": "16.0.1",
+        "packageName": "ngx-editor",
+        "hash": "sha512-O6PTwDb/zc363cTtrNl9GKh8nvV40yN2rVSFO3rP1xPY8Iuy9EfDQ3NYFBO+j2YPeKcbya8mHHk9KdVjJ+TraQ=="
       }
     },
-    "npm:fresh": {
+    "npm:@nrwl/workspace": {
       "type": "npm",
-      "name": "npm:fresh",
+      "name": "npm:@nrwl/workspace",
       "data": {
-        "version": "0.5.2",
-        "packageName": "fresh",
-        "hash": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
+        "version": "17.0.2",
+        "packageName": "@nrwl/workspace",
+        "hash": "sha512-ntX+cE6Gs1MOdG027MHkueyEze4yNbRy54uXhWhOCUy5gcP4eNmsrxOOccajP7tVrvAW83wrp9PXJ1wQhNWOYA=="
       }
     },
-    "npm:launch-editor": {
+    "npm:universalify": {
       "type": "npm",
-      "name": "npm:launch-editor",
+      "name": "npm:universalify",
       "data": {
-        "version": "2.6.1",
-        "packageName": "launch-editor",
-        "hash": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw=="
+        "version": "0.1.2",
+        "packageName": "universalify",
+        "hash": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
       }
     },
-    "npm:portfinder": {
+    "npm:@material/animation": {
       "type": "npm",
-      "name": "npm:portfinder",
+      "name": "npm:@material/animation",
       "data": {
-        "version": "1.0.32",
-        "packageName": "portfinder",
-        "hash": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/animation",
+        "hash": "sha512-0eV06UGYeuFwC/4t+yjg3LCRGRLq72ybBtJYzcBDpP4ASTjie0WmpAOFJYXRq2U5X/yxLviDMhpRemoSUjgZ0Q=="
       }
     },
-    "npm:on-finished": {
+    "npm:localtunnel": {
       "type": "npm",
-      "name": "npm:on-finished",
+      "name": "npm:localtunnel",
       "data": {
-        "version": "2.4.1",
-        "packageName": "on-finished",
-        "hash": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="
+        "version": "2.0.2",
+        "packageName": "localtunnel",
+        "hash": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug=="
       }
     },
-    "npm:imurmurhash": {
+    "npm:connect@3.6.6": {
       "type": "npm",
-      "name": "npm:imurmurhash",
+      "name": "npm:connect@3.6.6",
       "data": {
-        "version": "0.1.4",
-        "packageName": "imurmurhash",
-        "hash": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
+        "version": "3.6.6",
+        "packageName": "connect",
+        "hash": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ=="
       }
     },
-    "npm:resolve-url-loader": {
+    "npm:make-dir@2.1.0": {
       "type": "npm",
-      "name": "npm:resolve-url-loader",
+      "name": "npm:make-dir@2.1.0",
       "data": {
-        "version": "5.0.0",
-        "packageName": "resolve-url-loader",
-        "hash": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg=="
+        "version": "2.1.0",
+        "packageName": "make-dir",
+        "hash": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA=="
       }
     },
-    "npm:figures@5.0.0": {
+    "npm:tiny-emitter": {
       "type": "npm",
-      "name": "npm:figures@5.0.0",
+      "name": "npm:tiny-emitter",
       "data": {
-        "version": "5.0.0",
-        "packageName": "figures",
-        "hash": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg=="
+        "version": "2.1.0",
+        "packageName": "tiny-emitter",
+        "hash": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
       }
     },
-    "npm:spdy-transport": {
+    "npm:istanbul-lib-instrument@6.0.1": {
       "type": "npm",
-      "name": "npm:spdy-transport",
+      "name": "npm:istanbul-lib-instrument@6.0.1",
       "data": {
-        "version": "3.0.0",
-        "packageName": "spdy-transport",
-        "hash": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw=="
+        "version": "6.0.1",
+        "packageName": "istanbul-lib-instrument",
+        "hash": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA=="
       }
     },
-    "npm:@angular/compiler": {
+    "npm:d3-interpolate": {
       "type": "npm",
-      "name": "npm:@angular/compiler",
+      "name": "npm:d3-interpolate",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/compiler",
-        "hash": "sha512-ryUcj8Vc+Q4jMrjrmsEIsGLXeWSmNE/KoTyURPCH+NWq9GBMbjv4oe0/oFSBMN2ZtRMVCvqv2Nq+Z2KRDRGB0A=="
+        "version": "3.0.1",
+        "packageName": "d3-interpolate",
+        "hash": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="
       }
     },
-    "npm:reflect-metadata": {
+    "npm:@trysound/sax": {
       "type": "npm",
-      "name": "npm:reflect-metadata",
+      "name": "npm:@trysound/sax",
       "data": {
-        "version": "0.1.13",
-        "packageName": "reflect-metadata",
-        "hash": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+        "version": "0.2.0",
+        "packageName": "@trysound/sax",
+        "hash": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
       }
     },
-    "npm:ora": {
+    "npm:@babel/plugin-transform-regenerator": {
       "type": "npm",
-      "name": "npm:ora",
+      "name": "npm:@babel/plugin-transform-regenerator",
       "data": {
-        "version": "5.4.1",
-        "packageName": "ora",
-        "hash": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="
+        "version": "7.22.10",
+        "packageName": "@babel/plugin-transform-regenerator",
+        "hash": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw=="
       }
     },
-    "npm:batch": {
+    "npm:@types/jasmine": {
       "type": "npm",
-      "name": "npm:batch",
+      "name": "npm:@types/jasmine",
       "data": {
-        "version": "0.6.1",
-        "packageName": "batch",
-        "hash": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="
+        "version": "4.3.6",
+        "packageName": "@types/jasmine",
+        "hash": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g=="
       }
     },
-    "npm:chokidar": {
+    "npm:emojis-list": {
       "type": "npm",
-      "name": "npm:chokidar",
+      "name": "npm:emojis-list",
       "data": {
-        "version": "3.5.3",
-        "packageName": "chokidar",
-        "hash": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
+        "version": "3.0.0",
+        "packageName": "emojis-list",
+        "hash": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
       }
     },
-    "npm:colord": {
+    "npm:url-join": {
       "type": "npm",
-      "name": "npm:colord",
+      "name": "npm:url-join",
       "data": {
-        "version": "2.9.3",
-        "packageName": "colord",
-        "hash": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="
+        "version": "4.0.1",
+        "packageName": "url-join",
+        "hash": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
       }
     },
-    "npm:babel-plugin-macros": {
+    "npm:@esbuild/win32-arm64@0.18.20": {
       "type": "npm",
-      "name": "npm:babel-plugin-macros",
+      "name": "npm:@esbuild/win32-arm64@0.18.20",
       "data": {
-        "version": "2.8.0",
-        "packageName": "babel-plugin-macros",
-        "hash": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/win32-arm64",
+        "hash": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="
       }
     },
-    "npm:ansi-styles@5.2.0": {
+    "npm:iconv-lite": {
       "type": "npm",
-      "name": "npm:ansi-styles@5.2.0",
+      "name": "npm:iconv-lite",
       "data": {
-        "version": "5.2.0",
-        "packageName": "ansi-styles",
-        "hash": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="
+        "version": "0.4.24",
+        "packageName": "iconv-lite",
+        "hash": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="
       }
     },
-    "npm:json5": {
+    "npm:flat": {
       "type": "npm",
-      "name": "npm:json5",
+      "name": "npm:flat",
       "data": {
-        "version": "2.2.3",
-        "packageName": "json5",
-        "hash": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
+        "version": "5.0.2",
+        "packageName": "flat",
+        "hash": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
       }
     },
-    "npm:@types/babel__template": {
+    "npm:@esbuild/linux-loong64": {
       "type": "npm",
-      "name": "npm:@types/babel__template",
+      "name": "npm:@esbuild/linux-loong64",
       "data": {
-        "version": "7.4.4",
-        "packageName": "@types/babel__template",
-        "hash": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-loong64",
+        "hash": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw=="
       }
     },
-    "npm:khroma": {
+    "npm:define-data-property": {
       "type": "npm",
-      "name": "npm:khroma",
+      "name": "npm:define-data-property",
       "data": {
-        "version": "2.1.0",
-        "packageName": "khroma",
-        "hash": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
+        "version": "1.1.1",
+        "packageName": "define-data-property",
+        "hash": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ=="
       }
     },
-    "npm:@babel/helper-annotate-as-pure": {
+    "npm:yargs-parser@20.2.9": {
       "type": "npm",
-      "name": "npm:@babel/helper-annotate-as-pure",
+      "name": "npm:yargs-parser@20.2.9",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/helper-annotate-as-pure",
-        "hash": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg=="
+        "version": "20.2.9",
+        "packageName": "yargs-parser",
+        "hash": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
       }
     },
-    "npm:path-is-absolute": {
+    "npm:@leichtgewicht/ip-codec": {
       "type": "npm",
-      "name": "npm:path-is-absolute",
+      "name": "npm:@leichtgewicht/ip-codec",
       "data": {
-        "version": "1.0.1",
-        "packageName": "path-is-absolute",
-        "hash": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+        "version": "2.0.4",
+        "packageName": "@leichtgewicht/ip-codec",
+        "hash": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
       }
     },
-    "npm:@babel/traverse": {
+    "npm:sprintf-js": {
       "type": "npm",
-      "name": "npm:@babel/traverse",
+      "name": "npm:sprintf-js",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/traverse",
-        "hash": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw=="
+        "version": "1.0.3",
+        "packageName": "sprintf-js",
+        "hash": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
       }
     },
-    "npm:@phenomnomnominal/tsquery": {
+    "npm:@jest/expect-utils": {
       "type": "npm",
-      "name": "npm:@phenomnomnominal/tsquery",
+      "name": "npm:@jest/expect-utils",
       "data": {
-        "version": "5.0.1",
-        "packageName": "@phenomnomnominal/tsquery",
-        "hash": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA=="
+        "version": "29.7.0",
+        "packageName": "@jest/expect-utils",
+        "hash": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA=="
       }
     },
-    "npm:ieee754": {
+    "npm:@esbuild/sunos-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:ieee754",
+      "name": "npm:@esbuild/sunos-x64@0.18.20",
       "data": {
-        "version": "1.2.1",
-        "packageName": "ieee754",
-        "hash": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/sunos-x64",
+        "hash": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="
       }
     },
-    "npm:@esbuild/win32-x64@0.18.20": {
+    "npm:argparse": {
       "type": "npm",
-      "name": "npm:@esbuild/win32-x64@0.18.20",
+      "name": "npm:argparse",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/win32-x64",
-        "hash": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="
+        "version": "1.0.10",
+        "packageName": "argparse",
+        "hash": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="
       }
     },
-    "npm:function-bind": {
+    "npm:@nrwl/tao": {
       "type": "npm",
-      "name": "npm:function-bind",
+      "name": "npm:@nrwl/tao",
       "data": {
-        "version": "1.1.2",
-        "packageName": "function-bind",
-        "hash": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+        "version": "17.0.2",
+        "packageName": "@nrwl/tao",
+        "hash": "sha512-H+htIRzQR6Ibael34rhQkpNkpFFFmaSTsIzdqkBqL4j5+FzSpZh67NJnWSY8vsYQGQL8Ncc+MHvpQC+7pyfgGw=="
       }
     },
-    "npm:path-to-regexp": {
+    "npm:jest-runner": {
       "type": "npm",
-      "name": "npm:path-to-regexp",
+      "name": "npm:jest-runner",
       "data": {
-        "version": "0.1.7",
-        "packageName": "path-to-regexp",
-        "hash": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+        "version": "29.7.0",
+        "packageName": "jest-runner",
+        "hash": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ=="
       }
     },
-    "npm:regex-parser": {
+    "npm:socket.io-client": {
       "type": "npm",
-      "name": "npm:regex-parser",
+      "name": "npm:socket.io-client",
       "data": {
-        "version": "2.2.11",
-        "packageName": "regex-parser",
-        "hash": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q=="
+        "version": "4.7.2",
+        "packageName": "socket.io-client",
+        "hash": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w=="
       }
     },
-    "npm:brace-expansion": {
+    "npm:universalify@2.0.1": {
       "type": "npm",
-      "name": "npm:brace-expansion",
+      "name": "npm:universalify@2.0.1",
       "data": {
-        "version": "1.1.11",
-        "packageName": "brace-expansion",
-        "hash": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
+        "version": "2.0.1",
+        "packageName": "universalify",
+        "hash": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
       }
     },
-    "npm:@webassemblyjs/utf8": {
+    "npm:mdn-data": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/utf8",
+      "name": "npm:mdn-data",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/utf8",
-        "hash": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA=="
+        "version": "2.0.30",
+        "packageName": "mdn-data",
+        "hash": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
       }
     },
-    "npm:@material/theme": {
+    "npm:nopt": {
       "type": "npm",
-      "name": "npm:@material/theme",
+      "name": "npm:nopt",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/theme",
-        "hash": "sha512-HWxC5Nhz8JZKTLTVmAsNxIGB3Kzr53+YFMg327S8/XuEDmI0RFHFvtwM9rADmyrHFBmUaVhV4iELyxFdi67c9w=="
+        "version": "7.2.0",
+        "packageName": "nopt",
+        "hash": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA=="
       }
     },
-    "npm:@tsconfig/node10": {
+    "npm:path-scurry": {
       "type": "npm",
-      "name": "npm:@tsconfig/node10",
+      "name": "npm:path-scurry",
       "data": {
-        "version": "1.0.9",
-        "packageName": "@tsconfig/node10",
-        "hash": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
+        "version": "1.10.1",
+        "packageName": "path-scurry",
+        "hash": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="
       }
     },
-    "npm:@esbuild/darwin-arm64": {
+    "npm:spdy": {
       "type": "npm",
-      "name": "npm:@esbuild/darwin-arm64",
+      "name": "npm:spdy",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/darwin-arm64",
-        "hash": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw=="
+        "version": "4.0.2",
+        "packageName": "spdy",
+        "hash": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA=="
       }
     },
-    "npm:@esbuild/linux-loong64@0.18.20": {
+    "npm:cosmiconfig@6.0.0": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-loong64@0.18.20",
+      "name": "npm:cosmiconfig@6.0.0",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-loong64",
-        "hash": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="
+        "version": "6.0.0",
+        "packageName": "cosmiconfig",
+        "hash": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg=="
       }
     },
-    "npm:regenerate-unicode-properties": {
+    "npm:@babel/plugin-transform-optional-catch-binding": {
       "type": "npm",
-      "name": "npm:regenerate-unicode-properties",
+      "name": "npm:@babel/plugin-transform-optional-catch-binding",
       "data": {
-        "version": "10.1.1",
-        "packageName": "regenerate-unicode-properties",
-        "hash": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-optional-catch-binding",
+        "hash": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ=="
       }
     },
-    "npm:regexpu-core": {
+    "npm:convert-source-map": {
       "type": "npm",
-      "name": "npm:regexpu-core",
+      "name": "npm:convert-source-map",
       "data": {
-        "version": "5.3.2",
-        "packageName": "regexpu-core",
-        "hash": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ=="
+        "version": "1.9.0",
+        "packageName": "convert-source-map",
+        "hash": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
       }
     },
-    "npm:chalk@5.3.0": {
+    "npm:err-code": {
       "type": "npm",
-      "name": "npm:chalk@5.3.0",
+      "name": "npm:err-code",
       "data": {
-        "version": "5.3.0",
-        "packageName": "chalk",
-        "hash": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="
+        "version": "2.0.3",
+        "packageName": "err-code",
+        "hash": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="
       }
     },
-    "npm:form-data@4.0.0": {
+    "npm:non-layered-tidy-tree-layout": {
       "type": "npm",
-      "name": "npm:form-data@4.0.0",
+      "name": "npm:non-layered-tidy-tree-layout",
       "data": {
-        "version": "4.0.0",
-        "packageName": "form-data",
-        "hash": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww=="
+        "version": "2.0.2",
+        "packageName": "non-layered-tidy-tree-layout",
+        "hash": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw=="
       }
     },
-    "npm:unique-slug": {
+    "npm:web-worker": {
       "type": "npm",
-      "name": "npm:unique-slug",
+      "name": "npm:web-worker",
       "data": {
-        "version": "4.0.0",
-        "packageName": "unique-slug",
-        "hash": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ=="
+        "version": "1.2.0",
+        "packageName": "web-worker",
+        "hash": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
       }
     },
-    "npm:cli-spinners": {
+    "npm:prosemirror-history": {
       "type": "npm",
-      "name": "npm:cli-spinners",
+      "name": "npm:prosemirror-history",
       "data": {
-        "version": "2.9.1",
-        "packageName": "cli-spinners",
-        "hash": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ=="
+        "version": "1.3.2",
+        "packageName": "prosemirror-history",
+        "hash": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g=="
       }
     },
-    "npm:clean-stack": {
+    "npm:@babel/helper-define-polyfill-provider": {
       "type": "npm",
-      "name": "npm:clean-stack",
+      "name": "npm:@babel/helper-define-polyfill-provider",
       "data": {
-        "version": "2.2.0",
-        "packageName": "clean-stack",
-        "hash": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
+        "version": "0.4.3",
+        "packageName": "@babel/helper-define-polyfill-provider",
+        "hash": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug=="
       }
     },
-    "npm:jake": {
+    "npm:node-forge": {
       "type": "npm",
-      "name": "npm:jake",
+      "name": "npm:node-forge",
       "data": {
-        "version": "10.8.7",
-        "packageName": "jake",
-        "hash": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w=="
+        "version": "1.3.1",
+        "packageName": "node-forge",
+        "hash": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
       }
     },
-    "npm:mime@1.4.1": {
+    "npm:@nx/nx-linux-x64-musl": {
       "type": "npm",
-      "name": "npm:mime@1.4.1",
+      "name": "npm:@nx/nx-linux-x64-musl",
       "data": {
-        "version": "1.4.1",
-        "packageName": "mime",
-        "hash": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-linux-x64-musl",
+        "hash": "sha512-2wsqyBRjsxmAjxW+0lnGFtJLTk+AxgW7gjMv8NgLK8P1bc/sJYQB+g0o5op2z+szXRG3Noi0RZ9C0fG39EPFZw=="
       }
     },
-    "npm:@popperjs/core": {
+    "npm:@esbuild/netbsd-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:@popperjs/core",
+      "name": "npm:@esbuild/netbsd-x64@0.18.20",
       "data": {
-        "version": "2.11.8",
-        "packageName": "@popperjs/core",
-        "hash": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/netbsd-x64",
+        "hash": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="
       }
     },
-    "npm:@material/button": {
+    "npm:@jest/console": {
       "type": "npm",
-      "name": "npm:@material/button",
+      "name": "npm:@jest/console",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/button",
-        "hash": "sha512-rGpVRde0Aqhv2t9QvT8Zl3HvG89BeUNPOpgfpaLBZ4SGGAO4rIrckl/eCENibKgmmdCKcYZlG9gc5abQVPfUvw=="
+        "version": "29.7.0",
+        "packageName": "@jest/console",
+        "hash": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg=="
       }
     },
-    "npm:delayed-stream": {
+    "npm:selfsigned": {
       "type": "npm",
-      "name": "npm:delayed-stream",
+      "name": "npm:selfsigned",
       "data": {
-        "version": "1.0.0",
-        "packageName": "delayed-stream",
-        "hash": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+        "version": "2.1.1",
+        "packageName": "selfsigned",
+        "hash": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ=="
       }
     },
-    "npm:import-fresh": {
+    "npm:@babel/plugin-transform-named-capturing-groups-regex": {
       "type": "npm",
-      "name": "npm:import-fresh",
+      "name": "npm:@babel/plugin-transform-named-capturing-groups-regex",
       "data": {
-        "version": "3.3.0",
-        "packageName": "import-fresh",
-        "hash": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-named-capturing-groups-regex",
+        "hash": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ=="
       }
     },
-    "npm:color-name": {
+    "npm:@esbuild/darwin-arm64": {
       "type": "npm",
-      "name": "npm:color-name",
+      "name": "npm:@esbuild/darwin-arm64",
       "data": {
-        "version": "1.1.3",
-        "packageName": "color-name",
-        "hash": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/darwin-arm64",
+        "hash": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw=="
       }
     },
-    "npm:d3-sankey": {
+    "npm:@material/shape": {
       "type": "npm",
-      "name": "npm:d3-sankey",
+      "name": "npm:@material/shape",
       "data": {
-        "version": "0.12.3",
-        "packageName": "d3-sankey",
-        "hash": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/shape",
+        "hash": "sha512-rcWPlCoHyP79ozeEKk73KWt9WTWdh6R68+n75l08TSTvnWZB5RRTmsI9BMkz55O9OJD/8H8ZsOxBe4x2QXUT7w=="
       }
     },
-    "npm:@schematics/angular": {
+    "npm:@ngtools/webpack": {
       "type": "npm",
-      "name": "npm:@schematics/angular",
+      "name": "npm:@ngtools/webpack",
       "data": {
-        "version": "16.2.7",
-        "packageName": "@schematics/angular",
-        "hash": "sha512-sL+7vmwYPdo29rp99XYlm8gibqcjjOL5LKEleVQlv63SRES3HLMt7DeYivUfizcMENu/1hDtX41ig4Mu1SpNzg=="
+        "version": "17.0.1",
+        "packageName": "@ngtools/webpack",
+        "hash": "sha512-IfiWIBY1GntfJFV/U1CSOHZ7zF5p0zFMFzux7/iGXUXit299LTdJ5mZTe9++lFcH6dPHgEPWlinuYAfzorY4ng=="
       }
     },
-    "npm:@babel/template": {
+    "npm:@adobe/css-tools": {
       "type": "npm",
-      "name": "npm:@babel/template",
+      "name": "npm:@adobe/css-tools",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/template",
-        "hash": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w=="
+        "version": "4.3.1",
+        "packageName": "@adobe/css-tools",
+        "hash": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg=="
       }
     },
-    "npm:make-error": {
+    "npm:@sinclair/typebox": {
       "type": "npm",
-      "name": "npm:make-error",
+      "name": "npm:@sinclair/typebox",
       "data": {
-        "version": "1.3.6",
-        "packageName": "make-error",
-        "hash": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
+        "version": "0.27.8",
+        "packageName": "@sinclair/typebox",
+        "hash": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="
       }
     },
-    "npm:@jridgewell/sourcemap-codec": {
+    "npm:async@2.6.4": {
       "type": "npm",
-      "name": "npm:@jridgewell/sourcemap-codec",
+      "name": "npm:async@2.6.4",
       "data": {
-        "version": "1.4.15",
-        "packageName": "@jridgewell/sourcemap-codec",
-        "hash": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+        "version": "2.6.4",
+        "packageName": "async",
+        "hash": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA=="
       }
     },
-    "npm:typed-assert": {
+    "npm:@nx/workspace": {
       "type": "npm",
-      "name": "npm:typed-assert",
+      "name": "npm:@nx/workspace",
       "data": {
-        "version": "1.0.9",
-        "packageName": "typed-assert",
-        "hash": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg=="
+        "version": "17.0.2",
+        "packageName": "@nx/workspace",
+        "hash": "sha512-z2xit36dxdJuQmBDadNbbaYCKUYNk6mUWG/GEeBdgGXvFixqAUZ4lbWARlauCQS/+rEjXGOxtvn+u2d8u9mTSA=="
       }
     },
-    "npm:json-schema-traverse@0.4.1": {
+    "npm:send": {
       "type": "npm",
-      "name": "npm:json-schema-traverse@0.4.1",
+      "name": "npm:send",
       "data": {
-        "version": "0.4.1",
-        "packageName": "json-schema-traverse",
-        "hash": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+        "version": "0.18.0",
+        "packageName": "send",
+        "hash": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg=="
       }
     },
-    "npm:@material/dom": {
+    "npm:@colors/colors": {
       "type": "npm",
-      "name": "npm:@material/dom",
+      "name": "npm:@colors/colors",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/dom",
-        "hash": "sha512-AftSOGQoQg/Ys2kOVjZzvqWmsnhg3Kam/2UC4Gj0DMMCu36J4MAoD+3PpnOd1aG3wiJKtUXR2vPIwE8I/PM9yg=="
+        "version": "1.5.0",
+        "packageName": "@colors/colors",
+        "hash": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="
       }
     },
-    "npm:util-deprecate": {
+    "npm:yallist@4.0.0": {
       "type": "npm",
-      "name": "npm:util-deprecate",
+      "name": "npm:yallist@4.0.0",
       "data": {
-        "version": "1.0.2",
-        "packageName": "util-deprecate",
-        "hash": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+        "version": "4.0.0",
+        "packageName": "yallist",
+        "hash": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
       }
     },
-    "npm:diff": {
+    "npm:date-format": {
       "type": "npm",
-      "name": "npm:diff",
+      "name": "npm:date-format",
       "data": {
-        "version": "4.0.2",
-        "packageName": "diff",
-        "hash": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
+        "version": "4.0.14",
+        "packageName": "date-format",
+        "hash": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg=="
       }
     },
-    "npm:http-cache-semantics": {
+    "npm:esbuild@0.18.20": {
       "type": "npm",
-      "name": "npm:http-cache-semantics",
+      "name": "npm:esbuild@0.18.20",
       "data": {
-        "version": "4.1.1",
-        "packageName": "http-cache-semantics",
-        "hash": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+        "version": "0.18.20",
+        "packageName": "esbuild",
+        "hash": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="
       }
     },
-    "npm:@tufjs/models": {
+    "npm:@sinonjs/fake-timers": {
       "type": "npm",
-      "name": "npm:@tufjs/models",
+      "name": "npm:@sinonjs/fake-timers",
       "data": {
-        "version": "2.0.0",
-        "packageName": "@tufjs/models",
-        "hash": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg=="
+        "version": "10.3.0",
+        "packageName": "@sinonjs/fake-timers",
+        "hash": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA=="
       }
     },
-    "npm:retry@0.13.1": {
+    "npm:@babel/helper-string-parser": {
       "type": "npm",
-      "name": "npm:retry@0.13.1",
+      "name": "npm:@babel/helper-string-parser",
       "data": {
-        "version": "0.13.1",
-        "packageName": "retry",
-        "hash": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="
+        "version": "7.22.5",
+        "packageName": "@babel/helper-string-parser",
+        "hash": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw=="
       }
     },
-    "npm:@nx/eslint": {
+    "npm:@nrwl/js": {
       "type": "npm",
-      "name": "npm:@nx/eslint",
+      "name": "npm:@nrwl/js",
       "data": {
         "version": "17.1.2",
-        "packageName": "@nx/eslint",
-        "hash": "sha512-SDwx6P0HMzLURzbmUCPxvvkGBIhBIEujsvTCnaRsWJIKmrYKJjv4ENWqjZZSOMgP5gU2HjQFaWtRicjbdcu9Tg=="
+        "packageName": "@nrwl/js",
+        "hash": "sha512-70Fx//GJdRt2Uo6ft07Up+eeSK2+jqUnkBhvGLauro91g9SVSgbHlhj+D8l86wccyKz/OULod29WEBkA6Z/t3Q=="
       }
     },
-    "npm:@esbuild/android-x64": {
+    "npm:mini-css-extract-plugin": {
       "type": "npm",
-      "name": "npm:@esbuild/android-x64",
+      "name": "npm:mini-css-extract-plugin",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/android-x64",
-        "hash": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA=="
+        "version": "2.7.6",
+        "packageName": "mini-css-extract-plugin",
+        "hash": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw=="
       }
     },
-    "npm:@angular-devkit/core": {
+    "npm:@types/istanbul-reports": {
       "type": "npm",
-      "name": "npm:@angular-devkit/core",
+      "name": "npm:@types/istanbul-reports",
       "data": {
-        "version": "17.0.1",
-        "packageName": "@angular-devkit/core",
-        "hash": "sha512-UjNx9fZW0oU7UaeoB0HblYz/Nm8MWtinAe39XkY+zjECLWqKAcHPotfYjucXiky1UlBUOScIKbwjMDdEY8xkuw=="
+        "version": "3.0.4",
+        "packageName": "@types/istanbul-reports",
+        "hash": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ=="
       }
     },
-    "npm:resolve-from@4.0.0": {
+    "npm:emoji-toolkit": {
       "type": "npm",
-      "name": "npm:resolve-from@4.0.0",
+      "name": "npm:emoji-toolkit",
       "data": {
-        "version": "4.0.0",
-        "packageName": "resolve-from",
-        "hash": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
+        "version": "8.0.0",
+        "packageName": "emoji-toolkit",
+        "hash": "sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg=="
       }
     },
-    "npm:is-unicode-supported": {
+    "npm:parse5-sax-parser": {
       "type": "npm",
-      "name": "npm:is-unicode-supported",
+      "name": "npm:parse5-sax-parser",
       "data": {
-        "version": "0.1.0",
-        "packageName": "is-unicode-supported",
-        "hash": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
+        "version": "7.0.0",
+        "packageName": "parse5-sax-parser",
+        "hash": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg=="
       }
     },
-    "npm:stylus": {
+    "npm:webpack-dev-middleware@5.3.3": {
       "type": "npm",
-      "name": "npm:stylus",
+      "name": "npm:webpack-dev-middleware@5.3.3",
       "data": {
-        "version": "0.59.0",
-        "packageName": "stylus",
-        "hash": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg=="
+        "version": "5.3.3",
+        "packageName": "webpack-dev-middleware",
+        "hash": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA=="
       }
     },
-    "npm:@babel/plugin-syntax-json-strings": {
+    "npm:punycode": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-json-strings",
+      "name": "npm:punycode",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-json-strings",
-        "hash": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA=="
+        "version": "2.3.0",
+        "packageName": "punycode",
+        "hash": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
       }
     },
-    "npm:@babel/plugin-transform-numeric-separator": {
+    "npm:find-up": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-numeric-separator",
+      "name": "npm:find-up",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-numeric-separator",
-        "hash": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg=="
+        "version": "4.1.0",
+        "packageName": "find-up",
+        "hash": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="
       }
     },
-    "npm:@types/d3-scale": {
+    "npm:@esbuild/linux-mips64el@0.18.20": {
       "type": "npm",
-      "name": "npm:@types/d3-scale",
+      "name": "npm:@esbuild/linux-mips64el@0.18.20",
       "data": {
-        "version": "4.0.8",
-        "packageName": "@types/d3-scale",
-        "hash": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-mips64el",
+        "hash": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="
+      }
+    },
+    "npm:d3-format": {
+      "type": "npm",
+      "name": "npm:d3-format",
+      "data": {
+        "version": "3.1.0",
+        "packageName": "d3-format",
+        "hash": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="
       }
     },
-    "npm:fraction.js": {
+    "npm:@material/switch": {
       "type": "npm",
-      "name": "npm:fraction.js",
+      "name": "npm:@material/switch",
       "data": {
-        "version": "4.3.7",
-        "packageName": "fraction.js",
-        "hash": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/switch",
+        "hash": "sha512-o0wcbYgm2yRs4een5uxT4RJnJ003DxXe33rk8vTBG2o7cdiSR3X7GJQxeIK3D9wPgWCAwBLhNYSzXrlTL5pkMw=="
       }
     },
-    "npm:write-file-atomic": {
+    "npm:socks": {
       "type": "npm",
-      "name": "npm:write-file-atomic",
+      "name": "npm:socks",
       "data": {
-        "version": "4.0.2",
-        "packageName": "write-file-atomic",
-        "hash": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg=="
+        "version": "2.7.1",
+        "packageName": "socks",
+        "hash": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ=="
       }
     },
-    "npm:@webassemblyjs/ieee754": {
+    "npm:picomatch": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/ieee754",
+      "name": "npm:picomatch",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/ieee754",
-        "hash": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg=="
+        "version": "2.3.1",
+        "packageName": "picomatch",
+        "hash": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
       }
     },
-    "npm:connect-history-api-fallback": {
+    "npm:@fastify/busboy": {
       "type": "npm",
-      "name": "npm:connect-history-api-fallback",
+      "name": "npm:@fastify/busboy",
       "data": {
-        "version": "2.0.0",
-        "packageName": "connect-history-api-fallback",
-        "hash": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA=="
+        "version": "2.1.0",
+        "packageName": "@fastify/busboy",
+        "hash": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA=="
       }
     },
-    "npm:d3-ease": {
+    "npm:@nx/nx-linux-arm64-gnu": {
       "type": "npm",
-      "name": "npm:d3-ease",
+      "name": "npm:@nx/nx-linux-arm64-gnu",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-ease",
-        "hash": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-linux-arm64-gnu",
+        "hash": "sha512-AsD1H6wt68MK1u6vkmtNaFaxDMcyuk6dpo5kq1YT9cfUd614ys3qMUjVp3P2CXxzXh+0UDZeGrc6qotNKOkpJw=="
       }
     },
-    "npm:@babel/plugin-transform-class-static-block": {
+    "npm:make-dir@3.1.0": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-class-static-block",
+      "name": "npm:make-dir@3.1.0",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-class-static-block",
-        "hash": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g=="
+        "version": "3.1.0",
+        "packageName": "make-dir",
+        "hash": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw=="
       }
     },
-    "npm:@babel/plugin-transform-parameters": {
+    "npm:@types/istanbul-lib-report": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-parameters",
+      "name": "npm:@types/istanbul-lib-report",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/plugin-transform-parameters",
-        "hash": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ=="
+        "version": "3.0.3",
+        "packageName": "@types/istanbul-lib-report",
+        "hash": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="
       }
     },
-    "npm:jest-worker@29.7.0": {
+    "npm:@types/parse-json": {
       "type": "npm",
-      "name": "npm:jest-worker@29.7.0",
+      "name": "npm:@types/parse-json",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-worker",
-        "hash": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw=="
+        "version": "4.0.2",
+        "packageName": "@types/parse-json",
+        "hash": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
       }
     },
-    "npm:which@4.0.0": {
+    "npm:esquery": {
       "type": "npm",
-      "name": "npm:which@4.0.0",
+      "name": "npm:esquery",
       "data": {
-        "version": "4.0.0",
-        "packageName": "which",
-        "hash": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="
+        "version": "1.5.0",
+        "packageName": "esquery",
+        "hash": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg=="
       }
     },
-    "npm:encodeurl": {
+    "npm:minipass-fetch": {
       "type": "npm",
-      "name": "npm:encodeurl",
+      "name": "npm:minipass-fetch",
       "data": {
-        "version": "1.0.2",
-        "packageName": "encodeurl",
-        "hash": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
+        "version": "3.0.4",
+        "packageName": "minipass-fetch",
+        "hash": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="
       }
     },
-    "npm:is-plain-obj": {
+    "npm:@esbuild/linux-riscv64": {
       "type": "npm",
-      "name": "npm:is-plain-obj",
+      "name": "npm:@esbuild/linux-riscv64",
       "data": {
-        "version": "3.0.0",
-        "packageName": "is-plain-obj",
-        "hash": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-riscv64",
+        "hash": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag=="
       }
     },
-    "npm:postcss-normalize-repeat-style": {
+    "npm:select-hose": {
       "type": "npm",
-      "name": "npm:postcss-normalize-repeat-style",
+      "name": "npm:select-hose",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-repeat-style",
-        "hash": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A=="
+        "version": "2.0.0",
+        "packageName": "select-hose",
+        "hash": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="
       }
     },
-    "npm:mitt": {
+    "npm:glob@10.3.10": {
       "type": "npm",
-      "name": "npm:mitt",
+      "name": "npm:glob@10.3.10",
       "data": {
-        "version": "1.2.0",
-        "packageName": "mitt",
-        "hash": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw=="
+        "version": "10.3.10",
+        "packageName": "glob",
+        "hash": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="
       }
     },
-    "npm:@webassemblyjs/helper-wasm-section": {
+    "npm:@types/serve-static": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/helper-wasm-section",
+      "name": "npm:@types/serve-static",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/helper-wasm-section",
-        "hash": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g=="
+        "version": "1.15.4",
+        "packageName": "@types/serve-static",
+        "hash": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw=="
       }
     },
-    "npm:err-code": {
+    "npm:critters": {
       "type": "npm",
-      "name": "npm:err-code",
+      "name": "npm:critters",
       "data": {
-        "version": "2.0.3",
-        "packageName": "err-code",
-        "hash": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="
+        "version": "0.0.20",
+        "packageName": "critters",
+        "hash": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw=="
       }
     },
-    "npm:figures": {
+    "npm:micromark-util-character": {
       "type": "npm",
-      "name": "npm:figures",
+      "name": "npm:micromark-util-character",
       "data": {
-        "version": "3.2.0",
-        "packageName": "figures",
-        "hash": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="
+        "version": "1.2.0",
+        "packageName": "micromark-util-character",
+        "hash": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg=="
       }
     },
-    "npm:@babel/helper-skip-transparent-expression-wrappers": {
+    "npm:@babel/plugin-transform-async-to-generator": {
       "type": "npm",
-      "name": "npm:@babel/helper-skip-transparent-expression-wrappers",
+      "name": "npm:@babel/plugin-transform-async-to-generator",
       "data": {
         "version": "7.22.5",
-        "packageName": "@babel/helper-skip-transparent-expression-wrappers",
-        "hash": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q=="
+        "packageName": "@babel/plugin-transform-async-to-generator",
+        "hash": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ=="
       }
     },
-    "npm:@babel/plugin-transform-arrow-functions": {
+    "npm:escape-html": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-arrow-functions",
+      "name": "npm:escape-html",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-arrow-functions",
-        "hash": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw=="
+        "version": "1.0.3",
+        "packageName": "escape-html",
+        "hash": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
       }
     },
-    "npm:js-yaml": {
+    "npm:rx": {
       "type": "npm",
-      "name": "npm:js-yaml",
+      "name": "npm:rx",
       "data": {
-        "version": "3.14.1",
-        "packageName": "js-yaml",
-        "hash": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="
+        "version": "4.1.0",
+        "packageName": "rx",
+        "hash": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug=="
       }
     },
-    "npm:@webassemblyjs/helper-buffer": {
+    "npm:symbol-observable": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/helper-buffer",
+      "name": "npm:symbol-observable",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/helper-buffer",
-        "hash": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA=="
+        "version": "4.0.0",
+        "packageName": "symbol-observable",
+        "hash": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ=="
       }
     },
-    "npm:domutils": {
+    "npm:ws": {
       "type": "npm",
-      "name": "npm:domutils",
+      "name": "npm:ws",
       "data": {
-        "version": "3.1.0",
-        "packageName": "domutils",
-        "hash": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA=="
+        "version": "8.11.0",
+        "packageName": "ws",
+        "hash": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg=="
       }
     },
-    "npm:express": {
+    "npm:@material/chips": {
       "type": "npm",
-      "name": "npm:express",
+      "name": "npm:@material/chips",
       "data": {
-        "version": "4.18.2",
-        "packageName": "express",
-        "hash": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/chips",
+        "hash": "sha512-TiV9WJ5taEHPGWPhXbxJvUJhLzThg+VpK7aAlvL4RurtmJ7pURuEdRS4Z6o0OEqi3wKQ4z/+K44kZUn/+9HALg=="
       }
     },
-    "npm:micromark-util-resolve-all": {
+    "npm:@types/babel__generator": {
       "type": "npm",
-      "name": "npm:micromark-util-resolve-all",
+      "name": "npm:@types/babel__generator",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-resolve-all",
-        "hash": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA=="
+        "version": "7.6.7",
+        "packageName": "@types/babel__generator",
+        "hash": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ=="
       }
     },
-    "npm:combined-stream": {
+    "npm:@babel/plugin-syntax-private-property-in-object": {
       "type": "npm",
-      "name": "npm:combined-stream",
+      "name": "npm:@babel/plugin-syntax-private-property-in-object",
       "data": {
-        "version": "1.0.8",
-        "packageName": "combined-stream",
-        "hash": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
+        "version": "7.14.5",
+        "packageName": "@babel/plugin-syntax-private-property-in-object",
+        "hash": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg=="
       }
     },
-    "npm:prelude-ls": {
+    "npm:@nx/webpack": {
       "type": "npm",
-      "name": "npm:prelude-ls",
+      "name": "npm:@nx/webpack",
       "data": {
-        "version": "1.2.1",
-        "packageName": "prelude-ls",
-        "hash": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
+        "version": "17.1.2",
+        "packageName": "@nx/webpack",
+        "hash": "sha512-i6TAKrM1TakHyqEHbtsyfyqh5nrk4xgK/aiJZT8mojOSK5ifSrcZSdlPHHbIzuLsCJt1Wo94LA//C26oBg5PTw=="
       }
     },
-    "npm:@babel/plugin-transform-block-scoping": {
+    "npm:@ampproject/remapping": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-block-scoping",
+      "name": "npm:@ampproject/remapping",
       "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/plugin-transform-block-scoping",
-        "hash": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g=="
+        "version": "2.2.1",
+        "packageName": "@ampproject/remapping",
+        "hash": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg=="
       }
     },
-    "npm:qjobs": {
+    "npm:@types/unist": {
       "type": "npm",
-      "name": "npm:qjobs",
+      "name": "npm:@types/unist",
       "data": {
-        "version": "1.2.0",
-        "packageName": "qjobs",
-        "hash": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg=="
+        "version": "2.0.10",
+        "packageName": "@types/unist",
+        "hash": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
       }
     },
-    "npm:@babel/plugin-transform-object-rest-spread": {
+    "npm:@material/radio": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-object-rest-spread",
+      "name": "npm:@material/radio",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/plugin-transform-object-rest-spread",
-        "hash": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/radio",
+        "hash": "sha512-on8EVztWXc/ajcaowFZ31ClGADYxQrhj4ulMne0NxdHHWQ44ttf5aXOVqtv5mxeOzrRACOkQyTUXBG07yTWCEQ=="
       }
     },
-    "npm:internmap@1.0.1": {
+    "npm:cli-width": {
       "type": "npm",
-      "name": "npm:internmap@1.0.1",
+      "name": "npm:cli-width",
       "data": {
-        "version": "1.0.1",
-        "packageName": "internmap",
-        "hash": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+        "version": "4.1.0",
+        "packageName": "cli-width",
+        "hash": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="
       }
     },
-    "npm:caniuse-lite": {
+    "npm:fresh": {
       "type": "npm",
-      "name": "npm:caniuse-lite",
+      "name": "npm:fresh",
       "data": {
-        "version": "1.0.30001553",
-        "packageName": "caniuse-lite",
-        "hash": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A=="
+        "version": "0.5.2",
+        "packageName": "fresh",
+        "hash": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
       }
     },
-    "npm:@babel/helper-wrap-function": {
+    "npm:resolve": {
       "type": "npm",
-      "name": "npm:@babel/helper-wrap-function",
+      "name": "npm:resolve",
       "data": {
-        "version": "7.22.20",
-        "packageName": "@babel/helper-wrap-function",
-        "hash": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw=="
+        "version": "1.22.8",
+        "packageName": "resolve",
+        "hash": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw=="
       }
     },
-    "npm:ansi-html-community": {
+    "npm:json-parse-even-better-errors@3.0.0": {
       "type": "npm",
-      "name": "npm:ansi-html-community",
+      "name": "npm:json-parse-even-better-errors@3.0.0",
       "data": {
-        "version": "0.0.8",
-        "packageName": "ansi-html-community",
-        "hash": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw=="
+        "version": "3.0.0",
+        "packageName": "json-parse-even-better-errors",
+        "hash": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA=="
       }
     },
-    "npm:d3-delaunay": {
+    "npm:@babel/plugin-syntax-json-strings": {
       "type": "npm",
-      "name": "npm:d3-delaunay",
+      "name": "npm:@babel/plugin-syntax-json-strings",
       "data": {
-        "version": "6.0.4",
-        "packageName": "d3-delaunay",
-        "hash": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-json-strings",
+        "hash": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA=="
       }
     },
-    "npm:eslint": {
+    "npm:karma-jasmine-html-reporter": {
       "type": "npm",
-      "name": "npm:eslint",
+      "name": "npm:karma-jasmine-html-reporter",
       "data": {
-        "version": "8.53.0",
-        "packageName": "eslint",
-        "hash": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag=="
+        "version": "2.1.0",
+        "packageName": "karma-jasmine-html-reporter",
+        "hash": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ=="
       }
     },
-    "npm:postcss-normalize-unicode": {
+    "npm:text-table": {
       "type": "npm",
-      "name": "npm:postcss-normalize-unicode",
+      "name": "npm:text-table",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-unicode",
-        "hash": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg=="
+        "version": "0.2.0",
+        "packageName": "text-table",
+        "hash": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
       }
     },
-    "npm:shebang-command": {
+    "npm:chardet": {
       "type": "npm",
-      "name": "npm:shebang-command",
+      "name": "npm:chardet",
       "data": {
-        "version": "2.0.0",
-        "packageName": "shebang-command",
-        "hash": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="
+        "version": "0.7.0",
+        "packageName": "chardet",
+        "hash": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
       }
     },
-    "npm:cliui@7.0.4": {
+    "npm:@types/retry": {
       "type": "npm",
-      "name": "npm:cliui@7.0.4",
+      "name": "npm:@types/retry",
       "data": {
-        "version": "7.0.4",
-        "packageName": "cliui",
-        "hash": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="
+        "version": "0.12.0",
+        "packageName": "@types/retry",
+        "hash": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
       }
     },
-    "npm:isobject": {
+    "npm:async-each-series": {
       "type": "npm",
-      "name": "npm:isobject",
+      "name": "npm:async-each-series",
       "data": {
-        "version": "3.0.1",
-        "packageName": "isobject",
-        "hash": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
+        "version": "0.1.1",
+        "packageName": "async-each-series",
+        "hash": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ=="
       }
     },
-    "npm:jest-mock": {
+    "npm:chalk": {
       "type": "npm",
-      "name": "npm:jest-mock",
+      "name": "npm:chalk",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-mock",
-        "hash": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw=="
+        "version": "2.4.2",
+        "packageName": "chalk",
+        "hash": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
       }
     },
-    "npm:queue-microtask": {
+    "npm:ngx-markdown": {
       "type": "npm",
-      "name": "npm:queue-microtask",
+      "name": "npm:ngx-markdown",
       "data": {
-        "version": "1.2.3",
-        "packageName": "queue-microtask",
-        "hash": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+        "version": "17.1.1",
+        "packageName": "ngx-markdown",
+        "hash": "sha512-BGNWGJ6tmfPx+ScZFq5qeGLgWJwsakjScZ2e+oUzm+97DAHpIHSl8gptNZvZgRhOiFdjLcKBcuY2Rz8WB6J6UQ=="
       }
     },
-    "npm:@material/linear-progress": {
+    "npm:dns-packet": {
       "type": "npm",
-      "name": "npm:@material/linear-progress",
+      "name": "npm:dns-packet",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/linear-progress",
-        "hash": "sha512-IcCd4476pXHloTYadHDJ+2c2lntoVigeNnQEiD/ASQTKqKrJqkIdvvczFm9Ryu+V2+TKhp7vvQGFLUMaLPcmhw=="
+        "version": "5.6.1",
+        "packageName": "dns-packet",
+        "hash": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="
       }
     },
-    "npm:@nrwl/js": {
+    "npm:locate-path": {
       "type": "npm",
-      "name": "npm:@nrwl/js",
+      "name": "npm:locate-path",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/js",
-        "hash": "sha512-70Fx//GJdRt2Uo6ft07Up+eeSK2+jqUnkBhvGLauro91g9SVSgbHlhj+D8l86wccyKz/OULod29WEBkA6Z/t3Q=="
+        "version": "5.0.0",
+        "packageName": "locate-path",
+        "hash": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="
       }
     },
-    "npm:jsonfile": {
+    "npm:orderedmap": {
       "type": "npm",
-      "name": "npm:jsonfile",
+      "name": "npm:orderedmap",
       "data": {
-        "version": "4.0.0",
-        "packageName": "jsonfile",
-        "hash": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="
+        "version": "2.1.1",
+        "packageName": "orderedmap",
+        "hash": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="
       }
     },
-    "npm:jest-each": {
+    "npm:shebang-regex": {
       "type": "npm",
-      "name": "npm:jest-each",
+      "name": "npm:shebang-regex",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-each",
-        "hash": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ=="
+        "version": "3.0.0",
+        "packageName": "shebang-regex",
+        "hash": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
       }
     },
-    "npm:micromark-util-character": {
+    "npm:tmp": {
       "type": "npm",
-      "name": "npm:micromark-util-character",
+      "name": "npm:tmp",
       "data": {
-        "version": "1.2.0",
-        "packageName": "micromark-util-character",
-        "hash": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg=="
+        "version": "0.0.33",
+        "packageName": "tmp",
+        "hash": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="
       }
     },
-    "npm:@esbuild/linux-s390x@0.18.20": {
+    "npm:bs-recipes": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-s390x@0.18.20",
+      "name": "npm:bs-recipes",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-s390x",
-        "hash": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="
+        "version": "1.3.4",
+        "packageName": "bs-recipes",
+        "hash": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw=="
       }
     },
-    "npm:unpipe": {
+    "npm:is-unicode-supported": {
       "type": "npm",
-      "name": "npm:unpipe",
+      "name": "npm:is-unicode-supported",
       "data": {
-        "version": "1.0.0",
-        "packageName": "unpipe",
-        "hash": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
+        "version": "0.1.0",
+        "packageName": "is-unicode-supported",
+        "hash": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
       }
     },
-    "npm:@types/cors": {
+    "npm:@material/checkbox": {
       "type": "npm",
-      "name": "npm:@types/cors",
+      "name": "npm:@material/checkbox",
       "data": {
-        "version": "2.8.15",
-        "packageName": "@types/cors",
-        "hash": "sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/checkbox",
+        "hash": "sha512-sQwHzm1TSxHUoPrqplWTk/BhyzdDhzcwlbucwJK9W0o9WXMDk+d9PvcCxpP/9sAnVqZk42BfE89Y0T1DHglZ9A=="
       }
     },
-    "npm:@esbuild/darwin-x64@0.18.20": {
+    "npm:v8-compile-cache-lib": {
       "type": "npm",
-      "name": "npm:@esbuild/darwin-x64@0.18.20",
+      "name": "npm:v8-compile-cache-lib",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/darwin-x64",
-        "hash": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="
+        "version": "3.0.1",
+        "packageName": "v8-compile-cache-lib",
+        "hash": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
       }
     },
-    "npm:socks-proxy-agent": {
+    "npm:handle-thing": {
       "type": "npm",
-      "name": "npm:socks-proxy-agent",
+      "name": "npm:handle-thing",
       "data": {
-        "version": "8.0.2",
-        "packageName": "socks-proxy-agent",
-        "hash": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="
+        "version": "2.0.1",
+        "packageName": "handle-thing",
+        "hash": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="
       }
     },
-    "npm:@babel/plugin-transform-regenerator": {
+    "npm:abab": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-regenerator",
+      "name": "npm:abab",
       "data": {
-        "version": "7.22.10",
-        "packageName": "@babel/plugin-transform-regenerator",
-        "hash": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw=="
+        "version": "2.0.6",
+        "packageName": "abab",
+        "hash": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
       }
     },
-    "npm:@yarnpkg/lockfile": {
+    "npm:needle": {
       "type": "npm",
-      "name": "npm:@yarnpkg/lockfile",
+      "name": "npm:needle",
       "data": {
-        "version": "1.1.0",
-        "packageName": "@yarnpkg/lockfile",
-        "hash": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
+        "version": "3.2.0",
+        "packageName": "needle",
+        "hash": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ=="
       }
     },
-    "npm:critters": {
+    "npm:@babel/plugin-transform-block-scoping": {
       "type": "npm",
-      "name": "npm:critters",
+      "name": "npm:@babel/plugin-transform-block-scoping",
       "data": {
-        "version": "0.0.20",
-        "packageName": "critters",
-        "hash": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw=="
+        "version": "7.23.0",
+        "packageName": "@babel/plugin-transform-block-scoping",
+        "hash": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g=="
       }
     },
-    "npm:layout-base@2.0.1": {
+    "npm:which@4.0.0": {
       "type": "npm",
-      "name": "npm:layout-base@2.0.1",
+      "name": "npm:which@4.0.0",
       "data": {
-        "version": "2.0.1",
-        "packageName": "layout-base",
-        "hash": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="
+        "version": "4.0.0",
+        "packageName": "which",
+        "hash": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="
       }
     },
-    "npm:yocto-queue@0.1.0": {
+    "npm:finalhandler@1.1.0": {
       "type": "npm",
-      "name": "npm:yocto-queue@0.1.0",
+      "name": "npm:finalhandler@1.1.0",
       "data": {
-        "version": "0.1.0",
-        "packageName": "yocto-queue",
-        "hash": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
+        "version": "1.1.0",
+        "packageName": "finalhandler",
+        "hash": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw=="
       }
     },
-    "npm:postcss-value-parser": {
+    "npm:dns-equal": {
       "type": "npm",
-      "name": "npm:postcss-value-parser",
+      "name": "npm:dns-equal",
       "data": {
-        "version": "4.2.0",
-        "packageName": "postcss-value-parser",
-        "hash": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+        "version": "1.0.0",
+        "packageName": "dns-equal",
+        "hash": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg=="
       }
     },
-    "npm:@types/node": {
+    "npm:http-deceiver": {
       "type": "npm",
-      "name": "npm:@types/node",
+      "name": "npm:http-deceiver",
       "data": {
-        "version": "20.8.8",
-        "packageName": "@types/node",
-        "hash": "sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ=="
+        "version": "1.2.7",
+        "packageName": "http-deceiver",
+        "hash": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="
       }
     },
-    "npm:arg": {
+    "npm:@material/tab-scroller": {
       "type": "npm",
-      "name": "npm:arg",
+      "name": "npm:@material/tab-scroller",
       "data": {
-        "version": "4.1.3",
-        "packageName": "arg",
-        "hash": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/tab-scroller",
+        "hash": "sha512-6KvBpalc4SwLbHFm0rnuIE64VffUj7AKhnPc+mqM6VmxOvDzQ/ZSYga0rWlUfM4mCDFX3ZkSxim+iNzVF+Ejaw=="
       }
     },
-    "npm:delegate": {
+    "npm:statuses@1.4.0": {
       "type": "npm",
-      "name": "npm:delegate",
+      "name": "npm:statuses@1.4.0",
       "data": {
-        "version": "3.2.0",
-        "packageName": "delegate",
-        "hash": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+        "version": "1.4.0",
+        "packageName": "statuses",
+        "hash": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
       }
     },
-    "npm:jest-config": {
+    "npm:ignore-walk": {
       "type": "npm",
-      "name": "npm:jest-config",
+      "name": "npm:ignore-walk",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-config",
-        "hash": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ=="
+        "version": "6.0.3",
+        "packageName": "ignore-walk",
+        "hash": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA=="
       }
     },
-    "npm:yaml": {
+    "npm:is-generator-fn": {
       "type": "npm",
-      "name": "npm:yaml",
+      "name": "npm:is-generator-fn",
       "data": {
-        "version": "1.10.2",
-        "packageName": "yaml",
-        "hash": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+        "version": "2.1.0",
+        "packageName": "is-generator-fn",
+        "hash": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ=="
       }
     },
-    "npm:@nrwl/devkit": {
+    "npm:postcss-modules-scope": {
       "type": "npm",
-      "name": "npm:@nrwl/devkit",
+      "name": "npm:postcss-modules-scope",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nrwl/devkit",
-        "hash": "sha512-zgqTFYmvs80D3T/TwmR/EBdV1OU2c96YYHngAe3DX8kXhjlV3dq+VPZVBROM0AzYLGaSckW3mHBhgL+JrDp5Pg=="
+        "version": "3.0.0",
+        "packageName": "postcss-modules-scope",
+        "hash": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg=="
       }
     },
-    "npm:sass-loader@12.6.0": {
+    "npm:@types/babel__traverse": {
       "type": "npm",
-      "name": "npm:sass-loader@12.6.0",
+      "name": "npm:@types/babel__traverse",
       "data": {
-        "version": "12.6.0",
-        "packageName": "sass-loader",
-        "hash": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA=="
+        "version": "7.20.4",
+        "packageName": "@types/babel__traverse",
+        "hash": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA=="
       }
     },
-    "npm:spdx-exceptions": {
+    "npm:@jest/globals": {
       "type": "npm",
-      "name": "npm:spdx-exceptions",
+      "name": "npm:@jest/globals",
       "data": {
-        "version": "2.3.0",
-        "packageName": "spdx-exceptions",
-        "hash": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+        "version": "29.7.0",
+        "packageName": "@jest/globals",
+        "hash": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ=="
       }
     },
-    "npm:@jest/types": {
+    "npm:rw": {
       "type": "npm",
-      "name": "npm:@jest/types",
+      "name": "npm:rw",
       "data": {
-        "version": "29.6.3",
-        "packageName": "@jest/types",
-        "hash": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="
+        "version": "1.3.3",
+        "packageName": "rw",
+        "hash": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
       }
     },
-    "npm:@zkochan/js-yaml": {
+    "npm:pretty-bytes": {
       "type": "npm",
-      "name": "npm:@zkochan/js-yaml",
+      "name": "npm:pretty-bytes",
       "data": {
-        "version": "0.0.6",
-        "packageName": "@zkochan/js-yaml",
-        "hash": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg=="
+        "version": "5.6.0",
+        "packageName": "pretty-bytes",
+        "hash": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="
       }
     },
-    "npm:@webassemblyjs/ast": {
+    "npm:@istanbuljs/load-nyc-config": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/ast",
+      "name": "npm:@istanbuljs/load-nyc-config",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/ast",
-        "hash": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q=="
+        "version": "1.1.0",
+        "packageName": "@istanbuljs/load-nyc-config",
+        "hash": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ=="
       }
     },
-    "npm:typescript": {
+    "npm:@nx/nx-linux-arm64-gnu@17.1.2": {
       "type": "npm",
-      "name": "npm:typescript",
+      "name": "npm:@nx/nx-linux-arm64-gnu@17.1.2",
       "data": {
-        "version": "5.2.2",
-        "packageName": "typescript",
-        "hash": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-linux-arm64-gnu",
+        "hash": "sha512-r6UATY0dVdxwpVJPf/f/KfRkFpMP06wC6HcfNMGbTBTKiKtsdYF42bWoSkDgtgP2bOx9FDH+Hwu3U/Rtj44FIA=="
       }
     },
-    "npm:@material/shape": {
+    "npm:@babel/preset-env": {
       "type": "npm",
-      "name": "npm:@material/shape",
+      "name": "npm:@babel/preset-env",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/shape",
-        "hash": "sha512-rcWPlCoHyP79ozeEKk73KWt9WTWdh6R68+n75l08TSTvnWZB5RRTmsI9BMkz55O9OJD/8H8ZsOxBe4x2QXUT7w=="
+        "version": "7.23.2",
+        "packageName": "@babel/preset-env",
+        "hash": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ=="
       }
     },
-    "npm:destroy@1.0.4": {
+    "npm:strip-ansi": {
       "type": "npm",
-      "name": "npm:destroy@1.0.4",
+      "name": "npm:strip-ansi",
       "data": {
-        "version": "1.0.4",
-        "packageName": "destroy",
-        "hash": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
+        "version": "6.0.1",
+        "packageName": "strip-ansi",
+        "hash": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
       }
     },
-    "npm:svgo": {
+    "npm:@nx/cypress": {
       "type": "npm",
-      "name": "npm:svgo",
+      "name": "npm:@nx/cypress",
       "data": {
-        "version": "3.0.3",
-        "packageName": "svgo",
-        "hash": "sha512-X4UZvLhOglD5Xrp834HzGHf8RKUW0Ahigg/08yRO1no9t2NxffOkMiQ0WmaMIbaGlVTlSst2zWANsdhz5ybXgA=="
+        "version": "17.1.2",
+        "packageName": "@nx/cypress",
+        "hash": "sha512-5UoGGTPPsckeFTyu79DjmatAb4npHCGYgcHDbebRZDqifB99LRTKa/ZxcWNFdUiwZp4Buig5QM5MnhkjyjYpZg=="
       }
     },
-    "npm:@babel/preset-typescript": {
+    "npm:content-disposition": {
       "type": "npm",
-      "name": "npm:@babel/preset-typescript",
+      "name": "npm:content-disposition",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/preset-typescript",
-        "hash": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ=="
+        "version": "0.5.4",
+        "packageName": "content-disposition",
+        "hash": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="
       }
     },
-    "npm:jest-leak-detector": {
+    "npm:fork-ts-checker-webpack-plugin": {
       "type": "npm",
-      "name": "npm:jest-leak-detector",
+      "name": "npm:fork-ts-checker-webpack-plugin",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-leak-detector",
-        "hash": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw=="
+        "version": "7.2.13",
+        "packageName": "fork-ts-checker-webpack-plugin",
+        "hash": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg=="
       }
     },
-    "npm:unique-filename": {
+    "npm:sass": {
       "type": "npm",
-      "name": "npm:unique-filename",
+      "name": "npm:sass",
       "data": {
-        "version": "3.0.0",
-        "packageName": "unique-filename",
-        "hash": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g=="
+        "version": "1.69.5",
+        "packageName": "sass",
+        "hash": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ=="
       }
     },
-    "npm:@esbuild/linux-riscv64@0.18.20": {
+    "npm:dotenv-expand": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-riscv64@0.18.20",
+      "name": "npm:dotenv-expand",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-riscv64",
-        "hash": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="
+        "version": "10.0.0",
+        "packageName": "dotenv-expand",
+        "hash": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A=="
       }
     },
-    "npm:string_decoder@1.1.1": {
+    "npm:pify@2.3.0": {
       "type": "npm",
-      "name": "npm:string_decoder@1.1.1",
+      "name": "npm:pify@2.3.0",
       "data": {
-        "version": "1.1.1",
-        "packageName": "string_decoder",
-        "hash": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
+        "version": "2.3.0",
+        "packageName": "pify",
+        "hash": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
       }
     },
-    "npm:@esbuild/linux-mips64el": {
+    "npm:@nrwl/workspace@17.1.2": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-mips64el",
+      "name": "npm:@nrwl/workspace@17.1.2",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-mips64el",
-        "hash": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/workspace",
+        "hash": "sha512-1MymxYcX5YPrTSuZhQ6V0MhqAFB+8Bm2O9EJHpj4VS9LKIWwDche4DkqypmhbTeAzagr5YIWqaKtPCrkP0tn8w=="
       }
     },
-    "npm:minipass-sized": {
+    "npm:debug@2.6.9": {
       "type": "npm",
-      "name": "npm:minipass-sized",
+      "name": "npm:debug@2.6.9",
       "data": {
-        "version": "1.0.3",
-        "packageName": "minipass-sized",
-        "hash": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g=="
+        "version": "2.6.9",
+        "packageName": "debug",
+        "hash": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
       }
     },
-    "npm:dns-packet": {
+    "npm:caniuse-api": {
       "type": "npm",
-      "name": "npm:dns-packet",
+      "name": "npm:caniuse-api",
       "data": {
-        "version": "5.6.1",
-        "packageName": "dns-packet",
-        "hash": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="
+        "version": "3.0.0",
+        "packageName": "caniuse-api",
+        "hash": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw=="
       }
     },
-    "npm:thunky": {
+    "npm:micromark-util-decode-string": {
       "type": "npm",
-      "name": "npm:thunky",
+      "name": "npm:micromark-util-decode-string",
       "data": {
         "version": "1.1.0",
-        "packageName": "thunky",
-        "hash": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
+        "packageName": "micromark-util-decode-string",
+        "hash": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ=="
       }
     },
-    "npm:enquirer": {
+    "npm:merge-stream": {
       "type": "npm",
-      "name": "npm:enquirer",
+      "name": "npm:merge-stream",
       "data": {
-        "version": "2.3.6",
-        "packageName": "enquirer",
-        "hash": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg=="
+        "version": "2.0.0",
+        "packageName": "merge-stream",
+        "hash": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
       }
     },
-    "npm:espree": {
+    "npm:css-declaration-sorter": {
       "type": "npm",
-      "name": "npm:espree",
+      "name": "npm:css-declaration-sorter",
       "data": {
-        "version": "9.6.1",
-        "packageName": "espree",
-        "hash": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="
+        "version": "6.4.1",
+        "packageName": "css-declaration-sorter",
+        "hash": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g=="
       }
     },
-    "npm:finalhandler@1.2.0": {
+    "npm:postcss-merge-longhand": {
       "type": "npm",
-      "name": "npm:finalhandler@1.2.0",
+      "name": "npm:postcss-merge-longhand",
       "data": {
-        "version": "1.2.0",
-        "packageName": "finalhandler",
-        "hash": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg=="
+        "version": "6.0.0",
+        "packageName": "postcss-merge-longhand",
+        "hash": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg=="
       }
     },
-    "npm:ssri": {
+    "npm:end-of-stream": {
       "type": "npm",
-      "name": "npm:ssri",
+      "name": "npm:end-of-stream",
       "data": {
-        "version": "10.0.5",
-        "packageName": "ssri",
-        "hash": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A=="
+        "version": "1.4.4",
+        "packageName": "end-of-stream",
+        "hash": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="
       }
     },
-    "npm:utils-merge": {
+    "npm:parseurl": {
       "type": "npm",
-      "name": "npm:utils-merge",
+      "name": "npm:parseurl",
       "data": {
-        "version": "1.0.1",
-        "packageName": "utils-merge",
-        "hash": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
+        "version": "1.3.3",
+        "packageName": "parseurl",
+        "hash": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
       }
     },
-    "npm:@angular/animations": {
+    "npm:bytes@3.0.0": {
       "type": "npm",
-      "name": "npm:@angular/animations",
+      "name": "npm:bytes@3.0.0",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/animations",
-        "hash": "sha512-aBLVJ0HHYdIZCAXymQDP6UGuz/5oM/3uLCFVHx32vhibLByjw0jNCvy2lzmPLU5gUU6wEWX2b3ZtnzFqhmo4+A=="
+        "version": "3.0.0",
+        "packageName": "bytes",
+        "hash": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="
       }
     },
-    "npm:loader-runner": {
+    "npm:ora": {
       "type": "npm",
-      "name": "npm:loader-runner",
+      "name": "npm:ora",
       "data": {
-        "version": "4.3.0",
-        "packageName": "loader-runner",
-        "hash": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="
+        "version": "5.4.1",
+        "packageName": "ora",
+        "hash": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="
       }
     },
-    "npm:minipass@3.3.6": {
+    "npm:hdr-histogram-js": {
       "type": "npm",
-      "name": "npm:minipass@3.3.6",
+      "name": "npm:hdr-histogram-js",
       "data": {
-        "version": "3.3.6",
-        "packageName": "minipass",
-        "hash": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="
+        "version": "2.0.3",
+        "packageName": "hdr-histogram-js",
+        "hash": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g=="
       }
     },
-    "npm:tmp": {
+    "npm:lru-cache": {
       "type": "npm",
-      "name": "npm:tmp",
+      "name": "npm:lru-cache",
       "data": {
-        "version": "0.0.33",
-        "packageName": "tmp",
-        "hash": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="
+        "version": "5.1.1",
+        "packageName": "lru-cache",
+        "hash": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="
       }
     },
-    "npm:universalify@2.0.1": {
+    "npm:core-util-is": {
       "type": "npm",
-      "name": "npm:universalify@2.0.1",
+      "name": "npm:core-util-is",
       "data": {
-        "version": "2.0.1",
-        "packageName": "universalify",
-        "hash": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
+        "version": "1.0.3",
+        "packageName": "core-util-is",
+        "hash": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
       }
     },
-    "npm:@nodelib/fs.walk": {
+    "npm:range-parser": {
       "type": "npm",
-      "name": "npm:@nodelib/fs.walk",
+      "name": "npm:range-parser",
       "data": {
-        "version": "1.2.8",
-        "packageName": "@nodelib/fs.walk",
-        "hash": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="
+        "version": "1.2.1",
+        "packageName": "range-parser",
+        "hash": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
       }
     },
-    "npm:@babel/plugin-syntax-decorators": {
+    "npm:@angular-devkit/build-angular": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-decorators",
+      "name": "npm:@angular-devkit/build-angular",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/plugin-syntax-decorators",
-        "hash": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA=="
+        "version": "17.0.1",
+        "packageName": "@angular-devkit/build-angular",
+        "hash": "sha512-OomGAeBg/OOxzPpoU7EkdD3WwhKip+0Giy/cGtkalSgQ5vWTuZhf8UnxwTf7xEXW5LtvfoTtv7sKmb1dJT7FzA=="
       }
     },
-    "npm:postcss-loader": {
+    "npm:@webassemblyjs/wasm-edit": {
       "type": "npm",
-      "name": "npm:postcss-loader",
+      "name": "npm:@webassemblyjs/wasm-edit",
       "data": {
-        "version": "7.3.3",
-        "packageName": "postcss-loader",
-        "hash": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/wasm-edit",
+        "hash": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw=="
       }
     },
-    "npm:globby": {
+    "npm:mute-stream": {
       "type": "npm",
-      "name": "npm:globby",
+      "name": "npm:mute-stream",
       "data": {
-        "version": "13.2.2",
-        "packageName": "globby",
-        "hash": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w=="
+        "version": "1.0.0",
+        "packageName": "mute-stream",
+        "hash": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA=="
       }
     },
-    "npm:jest-resolve": {
+    "npm:@babel/preset-modules": {
       "type": "npm",
-      "name": "npm:jest-resolve",
+      "name": "npm:@babel/preset-modules",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-resolve",
-        "hash": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA=="
+        "version": "0.1.6-no-external-plugins",
+        "packageName": "@babel/preset-modules",
+        "hash": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA=="
       }
     },
-    "npm:@types/serve-index": {
+    "npm:chalk@4.1.2": {
       "type": "npm",
-      "name": "npm:@types/serve-index",
+      "name": "npm:chalk@4.1.2",
       "data": {
-        "version": "1.9.3",
-        "packageName": "@types/serve-index",
-        "hash": "sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg=="
+        "version": "4.1.2",
+        "packageName": "chalk",
+        "hash": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
       }
     },
-    "npm:postcss-selector-parser": {
+    "npm:karma-chrome-launcher": {
       "type": "npm",
-      "name": "npm:postcss-selector-parser",
+      "name": "npm:karma-chrome-launcher",
       "data": {
-        "version": "6.0.13",
-        "packageName": "postcss-selector-parser",
-        "hash": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ=="
+        "version": "3.2.0",
+        "packageName": "karma-chrome-launcher",
+        "hash": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q=="
       }
     },
-    "npm:@aashutoshrathi/word-wrap": {
+    "npm:@babel/plugin-transform-new-target": {
       "type": "npm",
-      "name": "npm:@aashutoshrathi/word-wrap",
+      "name": "npm:@babel/plugin-transform-new-target",
       "data": {
-        "version": "1.2.6",
-        "packageName": "@aashutoshrathi/word-wrap",
-        "hash": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-new-target",
+        "hash": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw=="
       }
     },
-    "npm:esquery": {
+    "npm:destroy": {
       "type": "npm",
-      "name": "npm:esquery",
+      "name": "npm:destroy",
       "data": {
-        "version": "1.5.0",
-        "packageName": "esquery",
-        "hash": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg=="
+        "version": "1.2.0",
+        "packageName": "destroy",
+        "hash": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
       }
     },
-    "npm:jest-circus": {
+    "npm:convert-source-map@2.0.0": {
       "type": "npm",
-      "name": "npm:jest-circus",
+      "name": "npm:convert-source-map@2.0.0",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-circus",
-        "hash": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw=="
+        "version": "2.0.0",
+        "packageName": "convert-source-map",
+        "hash": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
       }
     },
-    "npm:micromark-util-sanitize-uri": {
+    "npm:@angular/platform-browser": {
       "type": "npm",
-      "name": "npm:micromark-util-sanitize-uri",
+      "name": "npm:@angular/platform-browser",
       "data": {
-        "version": "1.2.0",
-        "packageName": "micromark-util-sanitize-uri",
-        "hash": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A=="
+        "version": "17.0.3",
+        "packageName": "@angular/platform-browser",
+        "hash": "sha512-4SoW0yeAxgfcLIekKsvZVg/WgI5aQZyz9HGOoyBcVQ8coYoZmM9bAYQi+9zvyweqoWc+jgw72X1E8wtmMXt7Aw=="
       }
     },
-    "npm:@esbuild/android-arm64@0.18.20": {
+    "npm:raw-body": {
       "type": "npm",
-      "name": "npm:@esbuild/android-arm64@0.18.20",
+      "name": "npm:raw-body",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/android-arm64",
-        "hash": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="
+        "version": "2.5.2",
+        "packageName": "raw-body",
+        "hash": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA=="
       }
     },
-    "npm:@babel/plugin-transform-function-name": {
+    "npm:has-flag": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-function-name",
-      "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-function-name",
-        "hash": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg=="
+      "name": "npm:has-flag",
+      "data": {
+        "version": "3.0.0",
+        "packageName": "has-flag",
+        "hash": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
       }
     },
-    "npm:micromark": {
+    "npm:fs-extra@11.1.1": {
       "type": "npm",
-      "name": "npm:micromark",
+      "name": "npm:fs-extra@11.1.1",
       "data": {
-        "version": "3.2.0",
-        "packageName": "micromark",
-        "hash": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA=="
+        "version": "11.1.1",
+        "packageName": "fs-extra",
+        "hash": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="
       }
     },
-    "npm:bootstrap": {
+    "npm:to-fast-properties": {
       "type": "npm",
-      "name": "npm:bootstrap",
+      "name": "npm:to-fast-properties",
       "data": {
-        "version": "5.3.2",
-        "packageName": "bootstrap",
-        "hash": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g=="
+        "version": "2.0.0",
+        "packageName": "to-fast-properties",
+        "hash": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
       }
     },
-    "npm:commander@8.3.0": {
+    "npm:call-bind": {
       "type": "npm",
-      "name": "npm:commander@8.3.0",
+      "name": "npm:call-bind",
       "data": {
-        "version": "8.3.0",
-        "packageName": "commander",
-        "hash": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
+        "version": "1.0.5",
+        "packageName": "call-bind",
+        "hash": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ=="
       }
     },
-    "npm:env-paths": {
+    "npm:micromark-util-sanitize-uri": {
       "type": "npm",
-      "name": "npm:env-paths",
+      "name": "npm:micromark-util-sanitize-uri",
       "data": {
-        "version": "2.2.1",
-        "packageName": "env-paths",
-        "hash": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
+        "version": "1.2.0",
+        "packageName": "micromark-util-sanitize-uri",
+        "hash": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A=="
       }
     },
-    "npm:@bcoe/v8-coverage": {
+    "npm:@types/eslint-scope": {
       "type": "npm",
-      "name": "npm:@bcoe/v8-coverage",
+      "name": "npm:@types/eslint-scope",
       "data": {
-        "version": "0.2.3",
-        "packageName": "@bcoe/v8-coverage",
-        "hash": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
+        "version": "3.7.6",
+        "packageName": "@types/eslint-scope",
+        "hash": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ=="
       }
     },
-    "npm:@esbuild/linux-ia32@0.18.20": {
+    "npm:@types/mdast": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-ia32@0.18.20",
+      "name": "npm:@types/mdast",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-ia32",
-        "hash": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="
+        "version": "3.0.15",
+        "packageName": "@types/mdast",
+        "hash": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ=="
       }
     },
-    "npm:picomatch": {
+    "npm:mime-types": {
       "type": "npm",
-      "name": "npm:picomatch",
+      "name": "npm:mime-types",
       "data": {
-        "version": "2.3.1",
-        "packageName": "picomatch",
-        "hash": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+        "version": "2.1.35",
+        "packageName": "mime-types",
+        "hash": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
       }
     },
-    "npm:@nx/nx-win32-arm64-msvc@17.1.2": {
+    "npm:postcss-discard-comments": {
       "type": "npm",
-      "name": "npm:@nx/nx-win32-arm64-msvc@17.1.2",
+      "name": "npm:postcss-discard-comments",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-win32-arm64-msvc",
-        "hash": "sha512-2M7FfzfPGAN7tCUWZilPGNk/RbbGcA00MKOA4MDqMwJtLobW8KqfMedilRNTEuyNibejOHwvGzA9T/Ac/ahHgA=="
+        "version": "6.0.0",
+        "packageName": "postcss-discard-comments",
+        "hash": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw=="
       }
     },
-    "npm:is-what": {
+    "npm:@nrwl/devkit": {
       "type": "npm",
-      "name": "npm:is-what",
+      "name": "npm:@nrwl/devkit",
       "data": {
-        "version": "3.14.1",
-        "packageName": "is-what",
-        "hash": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
+        "version": "17.0.2",
+        "packageName": "@nrwl/devkit",
+        "hash": "sha512-zgqTFYmvs80D3T/TwmR/EBdV1OU2c96YYHngAe3DX8kXhjlV3dq+VPZVBROM0AzYLGaSckW3mHBhgL+JrDp5Pg=="
       }
     },
-    "npm:serve-index": {
+    "npm:update-browserslist-db": {
       "type": "npm",
-      "name": "npm:serve-index",
+      "name": "npm:update-browserslist-db",
       "data": {
-        "version": "1.9.1",
-        "packageName": "serve-index",
-        "hash": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw=="
+        "version": "1.0.13",
+        "packageName": "update-browserslist-db",
+        "hash": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg=="
       }
     },
-    "npm:micromark-factory-label": {
+    "npm:@types/trusted-types": {
       "type": "npm",
-      "name": "npm:micromark-factory-label",
+      "name": "npm:@types/trusted-types",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-factory-label",
-        "hash": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w=="
+        "version": "2.0.7",
+        "packageName": "@types/trusted-types",
+        "hash": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
       }
     },
-    "npm:@material/tab-indicator": {
+    "npm:@angular/forms": {
       "type": "npm",
-      "name": "npm:@material/tab-indicator",
+      "name": "npm:@angular/forms",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/tab-indicator",
-        "hash": "sha512-gG2BgHT+ggKnUOaT8LjmH/+9nknRLh8v9qemrhUkDuCtZ8inlaC33OVbbxfrpQW3J+UzBh5YCUSC+2KrN39uUA=="
+        "version": "17.0.3",
+        "packageName": "@angular/forms",
+        "hash": "sha512-slCUGe5nVOrA0Su9pkmgPXBVzkgh4stvVFBb6ic9/+GlmtRi8h1v5jAFhR4B0R4iaaIoF+TTpRKhZShwtFSqSg=="
       }
     },
-    "npm:strip-final-newline": {
+    "npm:@babel/plugin-transform-parameters": {
       "type": "npm",
-      "name": "npm:strip-final-newline",
+      "name": "npm:@babel/plugin-transform-parameters",
       "data": {
-        "version": "2.0.0",
-        "packageName": "strip-final-newline",
-        "hash": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
+        "version": "7.22.15",
+        "packageName": "@babel/plugin-transform-parameters",
+        "hash": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ=="
       }
     },
-    "npm:tar": {
+    "npm:lru-cache@10.0.2": {
       "type": "npm",
-      "name": "npm:tar",
+      "name": "npm:lru-cache@10.0.2",
       "data": {
-        "version": "6.2.0",
-        "packageName": "tar",
-        "hash": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ=="
+        "version": "10.0.2",
+        "packageName": "lru-cache",
+        "hash": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg=="
       }
     },
     "npm:@types/d3-time": {
@@ -3407,76 +3470,76 @@
         "hash": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw=="
       }
     },
-    "npm:websocket-driver": {
+    "npm:@jest/transform": {
       "type": "npm",
-      "name": "npm:websocket-driver",
+      "name": "npm:@jest/transform",
       "data": {
-        "version": "0.7.4",
-        "packageName": "websocket-driver",
-        "hash": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg=="
+        "version": "29.7.0",
+        "packageName": "@jest/transform",
+        "hash": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw=="
       }
     },
-    "npm:postcss-merge-longhand": {
+    "npm:d3": {
       "type": "npm",
-      "name": "npm:postcss-merge-longhand",
+      "name": "npm:d3",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-merge-longhand",
-        "hash": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg=="
+        "version": "7.8.5",
+        "packageName": "d3",
+        "hash": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA=="
       }
     },
-    "npm:@nx/web": {
+    "npm:@babel/regjsgen": {
       "type": "npm",
-      "name": "npm:@nx/web",
+      "name": "npm:@babel/regjsgen",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/web",
-        "hash": "sha512-TJIY3uyBUCO9F15v1iWU5Lm6qvNBGzyLI0cNKB4Xl6H5mJA3bxW92NlRM++8mS9hSpw2OLEVN5jA2q+pbRzk8Q=="
+        "version": "0.8.0",
+        "packageName": "@babel/regjsgen",
+        "hash": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
       }
     },
-    "npm:d3-hierarchy": {
+    "npm:connect-history-api-fallback": {
       "type": "npm",
-      "name": "npm:d3-hierarchy",
+      "name": "npm:connect-history-api-fallback",
       "data": {
-        "version": "3.1.2",
-        "packageName": "d3-hierarchy",
-        "hash": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="
+        "version": "2.0.0",
+        "packageName": "connect-history-api-fallback",
+        "hash": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA=="
       }
     },
-    "npm:define-data-property": {
+    "npm:d3-ease": {
       "type": "npm",
-      "name": "npm:define-data-property",
+      "name": "npm:d3-ease",
       "data": {
-        "version": "1.1.1",
-        "packageName": "define-data-property",
-        "hash": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ=="
+        "version": "3.0.1",
+        "packageName": "d3-ease",
+        "hash": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="
       }
     },
-    "npm:es-module-lexer": {
+    "npm:typescript": {
       "type": "npm",
-      "name": "npm:es-module-lexer",
+      "name": "npm:typescript",
       "data": {
-        "version": "1.3.1",
-        "packageName": "es-module-lexer",
-        "hash": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q=="
+        "version": "5.2.2",
+        "packageName": "typescript",
+        "hash": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w=="
       }
     },
-    "npm:postcss-normalize-display-values": {
+    "npm:type-fest@0.20.2": {
       "type": "npm",
-      "name": "npm:postcss-normalize-display-values",
+      "name": "npm:type-fest@0.20.2",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-display-values",
-        "hash": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw=="
+        "version": "0.20.2",
+        "packageName": "type-fest",
+        "hash": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
       }
     },
-    "npm:vite": {
+    "npm:@angular/router": {
       "type": "npm",
-      "name": "npm:vite",
+      "name": "npm:@angular/router",
       "data": {
-        "version": "4.5.0",
-        "packageName": "vite",
-        "hash": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw=="
+        "version": "17.0.3",
+        "packageName": "@angular/router",
+        "hash": "sha512-zw31XXMqLJ1CcHxDtEl2/FTJXeRbbnLM8oHtCPzbbxTkhAlnXxSYxjds0+1IMmpzz/v9qGBhYvUt8ZfZhqDBHQ=="
       }
     },
     "npm:@babel/plugin-transform-modules-systemjs": {
@@ -3488,1786 +3551,1822 @@
         "hash": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg=="
       }
     },
-    "npm:@types/express-serve-static-core": {
+    "npm:object-inspect": {
+      "type": "npm",
+      "name": "npm:object-inspect",
+      "data": {
+        "version": "1.13.1",
+        "packageName": "object-inspect",
+        "hash": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
+      }
+    },
+    "npm:json-schema-traverse": {
+      "type": "npm",
+      "name": "npm:json-schema-traverse",
+      "data": {
+        "version": "1.0.0",
+        "packageName": "json-schema-traverse",
+        "hash": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+      }
+    },
+    "npm:cose-base": {
+      "type": "npm",
+      "name": "npm:cose-base",
+      "data": {
+        "version": "1.0.3",
+        "packageName": "cose-base",
+        "hash": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="
+      }
+    },
+    "npm:jest-matcher-utils": {
+      "type": "npm",
+      "name": "npm:jest-matcher-utils",
+      "data": {
+        "version": "29.7.0",
+        "packageName": "jest-matcher-utils",
+        "hash": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g=="
+      }
+    },
+    "npm:@babel/plugin-transform-dynamic-import": {
       "type": "npm",
-      "name": "npm:@types/express-serve-static-core",
+      "name": "npm:@babel/plugin-transform-dynamic-import",
       "data": {
-        "version": "4.17.39",
-        "packageName": "@types/express-serve-static-core",
-        "hash": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-dynamic-import",
+        "hash": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA=="
       }
     },
-    "npm:parse5-html-rewriting-stream": {
+    "npm:validate-npm-package-license": {
       "type": "npm",
-      "name": "npm:parse5-html-rewriting-stream",
+      "name": "npm:validate-npm-package-license",
       "data": {
-        "version": "7.0.0",
-        "packageName": "parse5-html-rewriting-stream",
-        "hash": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg=="
+        "version": "3.0.4",
+        "packageName": "validate-npm-package-license",
+        "hash": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="
       }
     },
-    "npm:@babel/plugin-transform-async-generator-functions": {
+    "npm:@isaacs/cliui": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-async-generator-functions",
+      "name": "npm:@isaacs/cliui",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/plugin-transform-async-generator-functions",
-        "hash": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ=="
+        "version": "8.0.2",
+        "packageName": "@isaacs/cliui",
+        "hash": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="
       }
     },
-    "npm:@sinclair/typebox": {
+    "npm:@webassemblyjs/helper-wasm-bytecode": {
       "type": "npm",
-      "name": "npm:@sinclair/typebox",
+      "name": "npm:@webassemblyjs/helper-wasm-bytecode",
       "data": {
-        "version": "0.27.8",
-        "packageName": "@sinclair/typebox",
-        "hash": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/helper-wasm-bytecode",
+        "hash": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="
       }
     },
-    "npm:find-up@5.0.0": {
+    "npm:@babel/helper-function-name": {
       "type": "npm",
-      "name": "npm:find-up@5.0.0",
+      "name": "npm:@babel/helper-function-name",
       "data": {
-        "version": "5.0.0",
-        "packageName": "find-up",
-        "hash": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
+        "version": "7.23.0",
+        "packageName": "@babel/helper-function-name",
+        "hash": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw=="
       }
     },
-    "npm:is-number": {
+    "npm:@babel/plugin-syntax-nullish-coalescing-operator": {
       "type": "npm",
-      "name": "npm:is-number",
+      "name": "npm:@babel/plugin-syntax-nullish-coalescing-operator",
       "data": {
-        "version": "7.0.0",
-        "packageName": "is-number",
-        "hash": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-nullish-coalescing-operator",
+        "hash": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ=="
       }
     },
-    "npm:magic-string@0.30.1": {
+    "npm:@esbuild/linux-mips64el": {
       "type": "npm",
-      "name": "npm:magic-string@0.30.1",
+      "name": "npm:@esbuild/linux-mips64el",
       "data": {
-        "version": "0.30.1",
-        "packageName": "magic-string",
-        "hash": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-mips64el",
+        "hash": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg=="
       }
     },
-    "npm:terser": {
+    "npm:cssnano-utils": {
       "type": "npm",
-      "name": "npm:terser",
+      "name": "npm:cssnano-utils",
       "data": {
-        "version": "5.24.0",
-        "packageName": "terser",
-        "hash": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw=="
+        "version": "4.0.0",
+        "packageName": "cssnano-utils",
+        "hash": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw=="
       }
     },
-    "npm:chownr": {
+    "npm:@babel/helper-plugin-utils": {
       "type": "npm",
-      "name": "npm:chownr",
+      "name": "npm:@babel/helper-plugin-utils",
       "data": {
-        "version": "2.0.0",
-        "packageName": "chownr",
-        "hash": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
+        "version": "7.22.5",
+        "packageName": "@babel/helper-plugin-utils",
+        "hash": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg=="
       }
     },
-    "npm:immutable@3.8.2": {
+    "npm:finalhandler@1.2.0": {
       "type": "npm",
-      "name": "npm:immutable@3.8.2",
+      "name": "npm:finalhandler@1.2.0",
       "data": {
-        "version": "3.8.2",
-        "packageName": "immutable",
-        "hash": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg=="
+        "version": "1.2.0",
+        "packageName": "finalhandler",
+        "hash": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg=="
       }
     },
-    "npm:@webassemblyjs/wasm-opt": {
+    "npm:engine.io-parser": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/wasm-opt",
+      "name": "npm:engine.io-parser",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/wasm-opt",
-        "hash": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g=="
+        "version": "5.2.1",
+        "packageName": "engine.io-parser",
+        "hash": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ=="
       }
     },
-    "npm:d3-zoom": {
+    "npm:http-proxy": {
       "type": "npm",
-      "name": "npm:d3-zoom",
+      "name": "npm:http-proxy",
       "data": {
-        "version": "3.0.0",
-        "packageName": "d3-zoom",
-        "hash": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="
+        "version": "1.18.1",
+        "packageName": "http-proxy",
+        "hash": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ=="
       }
     },
-    "npm:esbuild": {
+    "npm:ent": {
       "type": "npm",
-      "name": "npm:esbuild",
+      "name": "npm:ent",
       "data": {
-        "version": "0.19.5",
-        "packageName": "esbuild",
-        "hash": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ=="
+        "version": "2.2.0",
+        "packageName": "ent",
+        "hash": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA=="
       }
     },
-    "npm:@babel/plugin-transform-block-scoped-functions": {
+    "npm:undici-types": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-block-scoped-functions",
+      "name": "npm:undici-types",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-block-scoped-functions",
-        "hash": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA=="
+        "version": "5.25.3",
+        "packageName": "undici-types",
+        "hash": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
       }
     },
-    "npm:has-proto": {
+    "npm:which@2.0.2": {
       "type": "npm",
-      "name": "npm:has-proto",
+      "name": "npm:which@2.0.2",
       "data": {
-        "version": "1.0.1",
-        "packageName": "has-proto",
-        "hash": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
+        "version": "2.0.2",
+        "packageName": "which",
+        "hash": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
       }
     },
-    "npm:copy-anything": {
+    "npm:detect-port": {
       "type": "npm",
-      "name": "npm:copy-anything",
+      "name": "npm:detect-port",
       "data": {
-        "version": "2.0.6",
-        "packageName": "copy-anything",
-        "hash": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw=="
+        "version": "1.5.1",
+        "packageName": "detect-port",
+        "hash": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ=="
       }
     },
-    "npm:text-table": {
+    "npm:@angular/cli": {
       "type": "npm",
-      "name": "npm:text-table",
+      "name": "npm:@angular/cli",
       "data": {
-        "version": "0.2.0",
-        "packageName": "text-table",
-        "hash": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+        "version": "17.0.1",
+        "packageName": "@angular/cli",
+        "hash": "sha512-3iJWw+bpr/8y1ZY1m0wGfukffQVmD6DJUNubB297NCq1bJyUj+uwBuDnpIH+vidJvPBEEY+9XPJr0Jnd6+i7rg=="
       }
     },
-    "npm:@babel/plugin-transform-optional-chaining": {
+    "npm:@npmcli/run-script": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-optional-chaining",
+      "name": "npm:@npmcli/run-script",
       "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/plugin-transform-optional-chaining",
-        "hash": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g=="
+        "version": "7.0.2",
+        "packageName": "@npmcli/run-script",
+        "hash": "sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w=="
       }
     },
-    "npm:@jest/expect-utils": {
+    "npm:shebang-command": {
       "type": "npm",
-      "name": "npm:@jest/expect-utils",
+      "name": "npm:shebang-command",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/expect-utils",
-        "hash": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA=="
+        "version": "2.0.0",
+        "packageName": "shebang-command",
+        "hash": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="
       }
     },
-    "npm:asynckit": {
+    "npm:schema-utils@3.3.0": {
       "type": "npm",
-      "name": "npm:asynckit",
+      "name": "npm:schema-utils@3.3.0",
       "data": {
-        "version": "0.4.0",
-        "packageName": "asynckit",
-        "hash": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+        "version": "3.3.0",
+        "packageName": "schema-utils",
+        "hash": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg=="
       }
     },
-    "npm:webpack": {
+    "npm:micromark-factory-destination": {
       "type": "npm",
-      "name": "npm:webpack",
+      "name": "npm:micromark-factory-destination",
       "data": {
-        "version": "5.89.0",
-        "packageName": "webpack",
-        "hash": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw=="
+        "version": "1.1.0",
+        "packageName": "micromark-factory-destination",
+        "hash": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg=="
       }
     },
-    "npm:merge-descriptors": {
+    "npm:prr": {
       "type": "npm",
-      "name": "npm:merge-descriptors",
+      "name": "npm:prr",
       "data": {
         "version": "1.0.1",
-        "packageName": "merge-descriptors",
-        "hash": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+        "packageName": "prr",
+        "hash": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw=="
       }
     },
-    "npm:ts-node": {
+    "npm:delayed-stream": {
       "type": "npm",
-      "name": "npm:ts-node",
+      "name": "npm:delayed-stream",
       "data": {
-        "version": "10.9.1",
-        "packageName": "ts-node",
-        "hash": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw=="
+        "version": "1.0.0",
+        "packageName": "delayed-stream",
+        "hash": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
       }
     },
-    "npm:which": {
+    "npm:eslint-scope@7.2.2": {
       "type": "npm",
-      "name": "npm:which",
+      "name": "npm:eslint-scope@7.2.2",
       "data": {
-        "version": "1.3.1",
-        "packageName": "which",
-        "hash": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="
+        "version": "7.2.2",
+        "packageName": "eslint-scope",
+        "hash": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="
       }
     },
-    "npm:postcss-reduce-transforms": {
+    "npm:postcss-normalize-charset": {
       "type": "npm",
-      "name": "npm:postcss-reduce-transforms",
+      "name": "npm:postcss-normalize-charset",
       "data": {
         "version": "6.0.0",
-        "packageName": "postcss-reduce-transforms",
-        "hash": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w=="
+        "packageName": "postcss-normalize-charset",
+        "hash": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ=="
       }
     },
-    "npm:@types/connect": {
+    "npm:@braintree/sanitize-url": {
       "type": "npm",
-      "name": "npm:@types/connect",
+      "name": "npm:@braintree/sanitize-url",
       "data": {
-        "version": "3.4.37",
-        "packageName": "@types/connect",
-        "hash": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q=="
+        "version": "6.0.4",
+        "packageName": "@braintree/sanitize-url",
+        "hash": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
       }
     },
-    "npm:@humanwhocodes/config-array": {
+    "npm:d3-chord": {
       "type": "npm",
-      "name": "npm:@humanwhocodes/config-array",
+      "name": "npm:d3-chord",
       "data": {
-        "version": "0.11.13",
-        "packageName": "@humanwhocodes/config-array",
-        "hash": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ=="
+        "version": "3.0.1",
+        "packageName": "d3-chord",
+        "hash": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="
       }
     },
-    "npm:d3-format": {
+    "npm:run-async": {
       "type": "npm",
-      "name": "npm:d3-format",
+      "name": "npm:run-async",
       "data": {
-        "version": "3.1.0",
-        "packageName": "d3-format",
-        "hash": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="
+        "version": "3.0.0",
+        "packageName": "run-async",
+        "hash": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q=="
       }
     },
-    "npm:license-webpack-plugin": {
+    "npm:acorn-import-assertions": {
       "type": "npm",
-      "name": "npm:license-webpack-plugin",
+      "name": "npm:acorn-import-assertions",
       "data": {
-        "version": "4.0.2",
-        "packageName": "license-webpack-plugin",
-        "hash": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw=="
+        "version": "1.9.0",
+        "packageName": "acorn-import-assertions",
+        "hash": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA=="
       }
     },
-    "npm:d3-time-format": {
+    "npm:json-buffer": {
       "type": "npm",
-      "name": "npm:d3-time-format",
+      "name": "npm:json-buffer",
       "data": {
-        "version": "4.1.0",
-        "packageName": "d3-time-format",
-        "hash": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="
+        "version": "3.0.1",
+        "packageName": "json-buffer",
+        "hash": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
       }
     },
-    "npm:unicode-match-property-ecmascript": {
+    "npm:micromark-factory-whitespace": {
       "type": "npm",
-      "name": "npm:unicode-match-property-ecmascript",
+      "name": "npm:micromark-factory-whitespace",
       "data": {
-        "version": "2.0.0",
-        "packageName": "unicode-match-property-ecmascript",
-        "hash": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q=="
+        "version": "1.1.0",
+        "packageName": "micromark-factory-whitespace",
+        "hash": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ=="
       }
     },
-    "npm:ansi-styles@4.3.0": {
+    "npm:@nrwl/angular": {
       "type": "npm",
-      "name": "npm:ansi-styles@4.3.0",
+      "name": "npm:@nrwl/angular",
       "data": {
-        "version": "4.3.0",
-        "packageName": "ansi-styles",
-        "hash": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/angular",
+        "hash": "sha512-PyiYeMyBWzk3+ePIA9nAWpbAEjQ3xH0mqrhOXeweS3U8RYVOpVnfZ3nRGmEEqpi742xUcJiEg8lwC0YM65otPw=="
       }
     },
-    "npm:rxjs": {
+    "npm:anymatch": {
       "type": "npm",
-      "name": "npm:rxjs",
+      "name": "npm:anymatch",
       "data": {
-        "version": "7.8.1",
-        "packageName": "rxjs",
-        "hash": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg=="
+        "version": "3.1.3",
+        "packageName": "anymatch",
+        "hash": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="
       }
     },
-    "npm:@babel/helper-function-name": {
+    "npm:postcss-modules-extract-imports": {
       "type": "npm",
-      "name": "npm:@babel/helper-function-name",
+      "name": "npm:postcss-modules-extract-imports",
       "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/helper-function-name",
-        "hash": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw=="
+        "version": "3.0.0",
+        "packageName": "postcss-modules-extract-imports",
+        "hash": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw=="
       }
     },
-    "npm:cosmiconfig@7.1.0": {
+    "npm:brace-expansion": {
       "type": "npm",
-      "name": "npm:cosmiconfig@7.1.0",
+      "name": "npm:brace-expansion",
       "data": {
-        "version": "7.1.0",
-        "packageName": "cosmiconfig",
-        "hash": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="
+        "version": "1.1.11",
+        "packageName": "brace-expansion",
+        "hash": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
       }
     },
-    "npm:@webassemblyjs/wasm-gen": {
+    "npm:@webassemblyjs/helper-numbers": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/wasm-gen",
+      "name": "npm:@webassemblyjs/helper-numbers",
       "data": {
         "version": "1.11.6",
-        "packageName": "@webassemblyjs/wasm-gen",
-        "hash": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA=="
+        "packageName": "@webassemblyjs/helper-numbers",
+        "hash": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g=="
       }
     },
-    "npm:@babel/plugin-transform-typeof-symbol": {
+    "npm:@jridgewell/trace-mapping@0.3.9": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-typeof-symbol",
+      "name": "npm:@jridgewell/trace-mapping@0.3.9",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-typeof-symbol",
-        "hash": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA=="
+        "version": "0.3.9",
+        "packageName": "@jridgewell/trace-mapping",
+        "hash": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="
       }
     },
-    "npm:mime-db": {
+    "npm:@nx/nx-darwin-x64": {
       "type": "npm",
-      "name": "npm:mime-db",
+      "name": "npm:@nx/nx-darwin-x64",
       "data": {
-        "version": "1.52.0",
-        "packageName": "mime-db",
-        "hash": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-darwin-x64",
+        "hash": "sha512-olGt5R2dWYwdl1+I2RfJ8LdZO1elqhr9yDPnMIx//ZuN6T6wJA+Wdp2P3qpM1bY0F1lI/6AgjqzRyrTLUZ9cDA=="
       }
     },
-    "npm:requires-port": {
+    "npm:@sigstore/tuf": {
       "type": "npm",
-      "name": "npm:requires-port",
+      "name": "npm:@sigstore/tuf",
       "data": {
-        "version": "1.0.0",
-        "packageName": "requires-port",
-        "hash": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+        "version": "2.2.0",
+        "packageName": "@sigstore/tuf",
+        "hash": "sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA=="
       }
     },
-    "npm:sprintf-js": {
+    "npm:d3-timer": {
       "type": "npm",
-      "name": "npm:sprintf-js",
+      "name": "npm:d3-timer",
       "data": {
-        "version": "1.0.3",
-        "packageName": "sprintf-js",
-        "hash": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+        "version": "3.0.1",
+        "packageName": "d3-timer",
+        "hash": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="
       }
     },
-    "npm:log4js": {
+    "npm:@types/yargs": {
       "type": "npm",
-      "name": "npm:log4js",
+      "name": "npm:@types/yargs",
       "data": {
-        "version": "6.9.1",
-        "packageName": "log4js",
-        "hash": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g=="
+        "version": "17.0.31",
+        "packageName": "@types/yargs",
+        "hash": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg=="
       }
     },
-    "npm:lru-cache@10.0.2": {
+    "npm:cookie-signature": {
       "type": "npm",
-      "name": "npm:lru-cache@10.0.2",
+      "name": "npm:cookie-signature",
       "data": {
-        "version": "10.0.2",
-        "packageName": "lru-cache",
-        "hash": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg=="
+        "version": "1.0.6",
+        "packageName": "cookie-signature",
+        "hash": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
       }
     },
-    "npm:deep-is": {
+    "npm:yocto-queue": {
       "type": "npm",
-      "name": "npm:deep-is",
+      "name": "npm:yocto-queue",
       "data": {
-        "version": "0.1.4",
-        "packageName": "deep-is",
-        "hash": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
+        "version": "1.0.0",
+        "packageName": "yocto-queue",
+        "hash": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g=="
       }
     },
-    "npm:path-parse": {
+    "npm:npm-package-arg": {
       "type": "npm",
-      "name": "npm:path-parse",
+      "name": "npm:npm-package-arg",
       "data": {
-        "version": "1.0.7",
-        "packageName": "path-parse",
-        "hash": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+        "version": "11.0.1",
+        "packageName": "npm-package-arg",
+        "hash": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ=="
       }
     },
-    "npm:minimatch@5.1.6": {
+    "npm:js-yaml@4.1.0": {
       "type": "npm",
-      "name": "npm:minimatch@5.1.6",
+      "name": "npm:js-yaml@4.1.0",
       "data": {
-        "version": "5.1.6",
-        "packageName": "minimatch",
-        "hash": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="
+        "version": "4.1.0",
+        "packageName": "js-yaml",
+        "hash": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="
       }
     },
-    "npm:@nrwl/web": {
+    "npm:strong-log-transformer": {
       "type": "npm",
-      "name": "npm:@nrwl/web",
+      "name": "npm:strong-log-transformer",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/web",
-        "hash": "sha512-BGq0NW/mmkKxDr1V7Rj47IzV4VV6831knVpumqTZHOVNo07KkTW5m37+KA0XprAlPN+F3T/OSYlvP1DEdspafA=="
+        "version": "2.1.0",
+        "packageName": "strong-log-transformer",
+        "hash": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA=="
       }
     },
-    "npm:p-locate@6.0.0": {
+    "npm:@esbuild/linux-arm64@0.18.20": {
       "type": "npm",
-      "name": "npm:p-locate@6.0.0",
+      "name": "npm:@esbuild/linux-arm64@0.18.20",
       "data": {
-        "version": "6.0.0",
-        "packageName": "p-locate",
-        "hash": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-arm64",
+        "hash": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="
       }
     },
-    "npm:karma-source-map-support": {
+    "npm:ansi-regex@6.0.1": {
       "type": "npm",
-      "name": "npm:karma-source-map-support",
+      "name": "npm:ansi-regex@6.0.1",
       "data": {
-        "version": "1.4.0",
-        "packageName": "karma-source-map-support",
-        "hash": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A=="
+        "version": "6.0.1",
+        "packageName": "ansi-regex",
+        "hash": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
       }
     },
-    "npm:@nrwl/tao@17.1.2": {
+    "npm:jest-diff": {
       "type": "npm",
-      "name": "npm:@nrwl/tao@17.1.2",
+      "name": "npm:jest-diff",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/tao",
-        "hash": "sha512-tL+dlygeor/kLG5fuK5qaiVFJ4hEtvJ/E+xY9epp20UKCNQSEkrSFiesiXtX6E/PPf4YbOQ4B4itWR2EYCm03Q=="
+        "version": "29.7.0",
+        "packageName": "jest-diff",
+        "hash": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw=="
       }
     },
-    "npm:less@4.1.3": {
+    "npm:@babel/plugin-transform-duplicate-keys": {
       "type": "npm",
-      "name": "npm:less@4.1.3",
+      "name": "npm:@babel/plugin-transform-duplicate-keys",
       "data": {
-        "version": "4.1.3",
-        "packageName": "less",
-        "hash": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-duplicate-keys",
+        "hash": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw=="
       }
     },
-    "npm:elkjs": {
+    "npm:neo-async": {
       "type": "npm",
-      "name": "npm:elkjs",
+      "name": "npm:neo-async",
       "data": {
-        "version": "0.8.2",
-        "packageName": "elkjs",
-        "hash": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ=="
+        "version": "2.6.2",
+        "packageName": "neo-async",
+        "hash": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
       }
     },
-    "npm:mime@1.6.0": {
+    "npm:@typescript-eslint/type-utils": {
       "type": "npm",
-      "name": "npm:mime@1.6.0",
-      "data": {
-        "version": "1.6.0",
-        "packageName": "mime",
-        "hash": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+      "name": "npm:@typescript-eslint/type-utils",
+      "data": {
+        "version": "6.11.0",
+        "packageName": "@typescript-eslint/type-utils",
+        "hash": "sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA=="
       }
     },
-    "npm:d3": {
+    "npm:browser-sync-client": {
       "type": "npm",
-      "name": "npm:d3",
+      "name": "npm:browser-sync-client",
       "data": {
-        "version": "7.8.5",
-        "packageName": "d3",
-        "hash": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA=="
+        "version": "2.29.3",
+        "packageName": "browser-sync-client",
+        "hash": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ=="
       }
     },
-    "npm:@nx/nx-linux-arm64-musl@17.1.2": {
+    "npm:spdx-license-ids": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-arm64-musl@17.1.2",
+      "name": "npm:spdx-license-ids",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-linux-arm64-musl",
-        "hash": "sha512-MXGYY/KCzQhbj5UKwnRO2/GhByOkRlI+EeH1Mazam8wZ1BiBfcVWZoOUybIlxxes1o4cAnkZwB527tCmwrHvGw=="
+        "version": "3.0.16",
+        "packageName": "spdx-license-ids",
+        "hash": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw=="
       }
     },
-    "npm:stylis": {
+    "npm:has-proto": {
       "type": "npm",
-      "name": "npm:stylis",
+      "name": "npm:has-proto",
       "data": {
-        "version": "4.3.0",
-        "packageName": "stylis",
-        "hash": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
+        "version": "1.0.1",
+        "packageName": "has-proto",
+        "hash": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
       }
     },
-    "npm:@babel/plugin-transform-destructuring": {
+    "npm:@babel/generator": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-destructuring",
+      "name": "npm:@babel/generator",
       "data": {
         "version": "7.23.0",
-        "packageName": "@babel/plugin-transform-destructuring",
-        "hash": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg=="
+        "packageName": "@babel/generator",
+        "hash": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g=="
       }
     },
-    "npm:@babel/plugin-syntax-nullish-coalescing-operator": {
+    "npm:json-schema-traverse@0.4.1": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-nullish-coalescing-operator",
+      "name": "npm:json-schema-traverse@0.4.1",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-nullish-coalescing-operator",
-        "hash": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ=="
+        "version": "0.4.1",
+        "packageName": "json-schema-traverse",
+        "hash": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
       }
     },
-    "npm:@babel/plugin-transform-unicode-property-regex": {
+    "npm:@babel/plugin-syntax-typescript": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-unicode-property-regex",
+      "name": "npm:@babel/plugin-syntax-typescript",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-unicode-property-regex",
-        "hash": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A=="
+        "version": "7.23.3",
+        "packageName": "@babel/plugin-syntax-typescript",
+        "hash": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ=="
       }
     },
-    "npm:pure-rand": {
+    "npm:@angular/localize": {
       "type": "npm",
-      "name": "npm:pure-rand",
+      "name": "npm:@angular/localize",
       "data": {
-        "version": "6.0.4",
-        "packageName": "pure-rand",
-        "hash": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA=="
+        "version": "17.0.3",
+        "packageName": "@angular/localize",
+        "hash": "sha512-AxMqZwClWNiYjoaHYu2Y499yM30DJDCgrV9k8mOb92SU3IUaQ52loPb91Cb2Xp4h0b6A3TVAmnYApcLYaUf40g=="
       }
     },
-    "npm:jsonfile@6.1.0": {
+    "npm:di": {
       "type": "npm",
-      "name": "npm:jsonfile@6.1.0",
+      "name": "npm:di",
       "data": {
-        "version": "6.1.0",
-        "packageName": "jsonfile",
-        "hash": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="
+        "version": "0.0.1",
+        "packageName": "di",
+        "hash": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA=="
       }
     },
-    "npm:@types/http-errors": {
+    "npm:postcss-minify-selectors": {
       "type": "npm",
-      "name": "npm:@types/http-errors",
+      "name": "npm:postcss-minify-selectors",
       "data": {
-        "version": "2.0.3",
-        "packageName": "@types/http-errors",
-        "hash": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA=="
+        "version": "6.0.0",
+        "packageName": "postcss-minify-selectors",
+        "hash": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g=="
       }
     },
-    "npm:http-errors": {
+    "npm:ansi-styles@5.2.0": {
       "type": "npm",
-      "name": "npm:http-errors",
+      "name": "npm:ansi-styles@5.2.0",
       "data": {
-        "version": "2.0.0",
-        "packageName": "http-errors",
-        "hash": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="
+        "version": "5.2.0",
+        "packageName": "ansi-styles",
+        "hash": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="
       }
     },
-    "npm:@esbuild/darwin-x64": {
+    "npm:@babel/plugin-transform-object-rest-spread": {
       "type": "npm",
-      "name": "npm:@esbuild/darwin-x64",
+      "name": "npm:@babel/plugin-transform-object-rest-spread",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/darwin-x64",
-        "hash": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA=="
+        "version": "7.22.15",
+        "packageName": "@babel/plugin-transform-object-rest-spread",
+        "hash": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q=="
       }
     },
-    "npm:@webassemblyjs/wast-printer": {
+    "npm:clone-deep": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/wast-printer",
+      "name": "npm:clone-deep",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/wast-printer",
-        "hash": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A=="
+        "version": "4.0.1",
+        "packageName": "clone-deep",
+        "hash": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ=="
       }
     },
-    "npm:d3-chord": {
+    "npm:co": {
       "type": "npm",
-      "name": "npm:d3-chord",
+      "name": "npm:co",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-chord",
-        "hash": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="
+        "version": "4.6.0",
+        "packageName": "co",
+        "hash": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ=="
       }
     },
-    "npm:@nx/devkit@17.1.2": {
+    "npm:css-select": {
       "type": "npm",
-      "name": "npm:@nx/devkit@17.1.2",
+      "name": "npm:css-select",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/devkit",
-        "hash": "sha512-9Izd9jsa++AaZSSlhi0zkv58k4clzE0kICurx9DjfWN6zXnD08HqJoUYCVVaeYS/SrWlQUbMig8e49BO8ZV5mw=="
+        "version": "5.1.0",
+        "packageName": "css-select",
+        "hash": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="
       }
     },
-    "npm:dev-ip": {
+    "npm:prosemirror-keymap": {
       "type": "npm",
-      "name": "npm:dev-ip",
+      "name": "npm:prosemirror-keymap",
       "data": {
-        "version": "1.0.1",
-        "packageName": "dev-ip",
-        "hash": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A=="
+        "version": "1.2.2",
+        "packageName": "prosemirror-keymap",
+        "hash": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ=="
       }
     },
-    "npm:emoji-toolkit": {
+    "npm:micromark-core-commonmark": {
       "type": "npm",
-      "name": "npm:emoji-toolkit",
+      "name": "npm:micromark-core-commonmark",
       "data": {
-        "version": "8.0.0",
-        "packageName": "emoji-toolkit",
-        "hash": "sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg=="
+        "version": "1.1.0",
+        "packageName": "micromark-core-commonmark",
+        "hash": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw=="
       }
     },
-    "npm:@esbuild/linux-s390x": {
+    "npm:safevalues": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-s390x",
+      "name": "npm:safevalues",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-s390x",
-        "hash": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw=="
+        "version": "0.3.4",
+        "packageName": "safevalues",
+        "hash": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw=="
       }
     },
-    "npm:fs-constants": {
+    "npm:@types/send": {
       "type": "npm",
-      "name": "npm:fs-constants",
+      "name": "npm:@types/send",
       "data": {
-        "version": "1.0.0",
-        "packageName": "fs-constants",
-        "hash": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+        "version": "0.17.3",
+        "packageName": "@types/send",
+        "hash": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug=="
       }
     },
-    "npm:@babel/helper-split-export-declaration": {
+    "npm:@ungap/structured-clone": {
       "type": "npm",
-      "name": "npm:@babel/helper-split-export-declaration",
+      "name": "npm:@ungap/structured-clone",
       "data": {
-        "version": "7.22.6",
-        "packageName": "@babel/helper-split-export-declaration",
-        "hash": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g=="
+        "version": "1.2.0",
+        "packageName": "@ungap/structured-clone",
+        "hash": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
       }
     },
-    "npm:@babel/plugin-syntax-class-static-block": {
+    "npm:wrap-ansi": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-class-static-block",
+      "name": "npm:wrap-ansi",
       "data": {
-        "version": "7.14.5",
-        "packageName": "@babel/plugin-syntax-class-static-block",
-        "hash": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw=="
+        "version": "7.0.0",
+        "packageName": "wrap-ansi",
+        "hash": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
       }
     },
-    "npm:node-forge": {
+    "npm:is-stream": {
       "type": "npm",
-      "name": "npm:node-forge",
+      "name": "npm:is-stream",
       "data": {
-        "version": "1.3.1",
-        "packageName": "node-forge",
-        "hash": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
+        "version": "2.0.1",
+        "packageName": "is-stream",
+        "hash": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
       }
     },
-    "npm:karma-coverage": {
+    "npm:copy-anything": {
       "type": "npm",
-      "name": "npm:karma-coverage",
+      "name": "npm:copy-anything",
       "data": {
-        "version": "2.2.1",
-        "packageName": "karma-coverage",
-        "hash": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A=="
+        "version": "2.0.6",
+        "packageName": "copy-anything",
+        "hash": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw=="
       }
     },
-    "npm:engine.io": {
+    "npm:@sigstore/protobuf-specs": {
       "type": "npm",
-      "name": "npm:engine.io",
+      "name": "npm:@sigstore/protobuf-specs",
       "data": {
-        "version": "6.5.3",
-        "packageName": "engine.io",
-        "hash": "sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw=="
+        "version": "0.2.1",
+        "packageName": "@sigstore/protobuf-specs",
+        "hash": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A=="
       }
     },
-    "npm:p-map": {
+    "npm:@types/istanbul-lib-coverage": {
       "type": "npm",
-      "name": "npm:p-map",
+      "name": "npm:@types/istanbul-lib-coverage",
       "data": {
-        "version": "4.0.0",
-        "packageName": "p-map",
-        "hash": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="
+        "version": "2.0.6",
+        "packageName": "@types/istanbul-lib-coverage",
+        "hash": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="
       }
     },
-    "npm:rimraf": {
+    "npm:setprototypeof": {
       "type": "npm",
-      "name": "npm:rimraf",
+      "name": "npm:setprototypeof",
       "data": {
-        "version": "3.0.2",
-        "packageName": "rimraf",
-        "hash": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
+        "version": "1.2.0",
+        "packageName": "setprototypeof",
+        "hash": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
       }
     },
-    "npm:v8-compile-cache-lib": {
+    "npm:fs-constants": {
       "type": "npm",
-      "name": "npm:v8-compile-cache-lib",
-      "data": {
-        "version": "3.0.1",
-        "packageName": "v8-compile-cache-lib",
-        "hash": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
+      "name": "npm:fs-constants",
+      "data": {
+        "version": "1.0.0",
+        "packageName": "fs-constants",
+        "hash": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
       }
     },
-    "npm:wrap-ansi-cjs": {
+    "npm:mimic-fn": {
       "type": "npm",
-      "name": "npm:wrap-ansi-cjs",
+      "name": "npm:mimic-fn",
       "data": {
-        "version": "npm:wrap-ansi@7.0.0",
-        "packageName": "wrap-ansi-cjs",
-        "hash": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
+        "version": "2.1.0",
+        "packageName": "mimic-fn",
+        "hash": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
       }
     },
-    "npm:undici-types": {
+    "npm:prosemirror-schema-list": {
       "type": "npm",
-      "name": "npm:undici-types",
+      "name": "npm:prosemirror-schema-list",
       "data": {
-        "version": "5.25.3",
-        "packageName": "undici-types",
-        "hash": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
+        "version": "1.3.0",
+        "packageName": "prosemirror-schema-list",
+        "hash": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A=="
       }
     },
-    "npm:@types/semver": {
+    "npm:@types/ws": {
       "type": "npm",
-      "name": "npm:@types/semver",
+      "name": "npm:@types/ws",
       "data": {
-        "version": "7.5.5",
-        "packageName": "@types/semver",
-        "hash": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg=="
+        "version": "8.5.8",
+        "packageName": "@types/ws",
+        "hash": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg=="
       }
     },
-    "npm:@braintree/sanitize-url": {
+    "npm:wrappy": {
       "type": "npm",
-      "name": "npm:@braintree/sanitize-url",
+      "name": "npm:wrappy",
       "data": {
-        "version": "6.0.4",
-        "packageName": "@braintree/sanitize-url",
-        "hash": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
+        "version": "1.0.2",
+        "packageName": "wrappy",
+        "hash": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
       }
     },
-    "npm:sass-loader": {
+    "npm:http-proxy-agent": {
       "type": "npm",
-      "name": "npm:sass-loader",
+      "name": "npm:http-proxy-agent",
       "data": {
-        "version": "13.3.2",
-        "packageName": "sass-loader",
-        "hash": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg=="
+        "version": "7.0.0",
+        "packageName": "http-proxy-agent",
+        "hash": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ=="
       }
     },
-    "npm:string-width": {
+    "npm:p-locate": {
       "type": "npm",
-      "name": "npm:string-width",
+      "name": "npm:p-locate",
       "data": {
-        "version": "4.2.3",
-        "packageName": "string-width",
-        "hash": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
+        "version": "4.1.0",
+        "packageName": "p-locate",
+        "hash": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="
       }
     },
-    "npm:date-format": {
+    "npm:cli-spinners": {
       "type": "npm",
-      "name": "npm:date-format",
+      "name": "npm:cli-spinners",
       "data": {
-        "version": "4.0.14",
-        "packageName": "date-format",
-        "hash": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg=="
+        "version": "2.9.1",
+        "packageName": "cli-spinners",
+        "hash": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ=="
       }
     },
-    "npm:zone.js": {
+    "npm:magic-string": {
       "type": "npm",
-      "name": "npm:zone.js",
+      "name": "npm:magic-string",
       "data": {
-        "version": "0.14.2",
-        "packageName": "zone.js",
-        "hash": "sha512-X4U7J1isDhoOmHmFWiLhloWc2lzMkdnumtfQ1LXzf/IOZp5NQYuMUTaviVzG/q1ugMBIXzin2AqeVJUoSEkNyQ=="
+        "version": "0.30.5",
+        "packageName": "magic-string",
+        "hash": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA=="
       }
     },
-    "npm:jsesc": {
+    "npm:batch": {
       "type": "npm",
-      "name": "npm:jsesc",
+      "name": "npm:batch",
       "data": {
-        "version": "2.5.2",
-        "packageName": "jsesc",
-        "hash": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+        "version": "0.6.1",
+        "packageName": "batch",
+        "hash": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="
       }
     },
-    "npm:bytes": {
+    "npm:@esbuild/linux-ia32": {
       "type": "npm",
-      "name": "npm:bytes",
+      "name": "npm:@esbuild/linux-ia32",
       "data": {
-        "version": "3.1.2",
-        "packageName": "bytes",
-        "hash": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-ia32",
+        "hash": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ=="
       }
     },
-    "npm:tsconfig-paths-webpack-plugin": {
+    "npm:@npmcli/git": {
       "type": "npm",
-      "name": "npm:tsconfig-paths-webpack-plugin",
+      "name": "npm:@npmcli/git",
       "data": {
-        "version": "4.0.0",
-        "packageName": "tsconfig-paths-webpack-plugin",
-        "hash": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ=="
+        "version": "5.0.3",
+        "packageName": "@npmcli/git",
+        "hash": "sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw=="
       }
     },
-    "npm:fb-watchman": {
+    "npm:universalify@2.0.0": {
       "type": "npm",
-      "name": "npm:fb-watchman",
+      "name": "npm:universalify@2.0.0",
       "data": {
-        "version": "2.0.2",
-        "packageName": "fb-watchman",
-        "hash": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA=="
+        "version": "2.0.0",
+        "packageName": "universalify",
+        "hash": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
       }
     },
-    "npm:@material/select": {
+    "npm:@jridgewell/trace-mapping": {
       "type": "npm",
-      "name": "npm:@material/select",
+      "name": "npm:@jridgewell/trace-mapping",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/select",
-        "hash": "sha512-odoNLiVOgdwbEeePkjHtlr43pjskDwyO8hi4z3jcud1Rg1czk5zoJ2mUI0+olOJjBQ26PGocwrSLqf3qaThbIA=="
+        "version": "0.3.20",
+        "packageName": "@jridgewell/trace-mapping",
+        "hash": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q=="
       }
     },
-    "npm:d3-color": {
+    "npm:bser": {
       "type": "npm",
-      "name": "npm:d3-color",
+      "name": "npm:bser",
       "data": {
-        "version": "3.1.0",
-        "packageName": "d3-color",
-        "hash": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="
+        "version": "2.1.1",
+        "packageName": "bser",
+        "hash": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ=="
       }
     },
-    "npm:@babel/plugin-transform-classes": {
+    "npm:builtins": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-classes",
+      "name": "npm:builtins",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/plugin-transform-classes",
-        "hash": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw=="
+        "version": "5.0.1",
+        "packageName": "builtins",
+        "hash": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ=="
       }
     },
-    "npm:@types/d3-scale-chromatic": {
+    "npm:esbuild": {
       "type": "npm",
-      "name": "npm:@types/d3-scale-chromatic",
+      "name": "npm:esbuild",
       "data": {
-        "version": "3.0.3",
-        "packageName": "@types/d3-scale-chromatic",
-        "hash": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw=="
+        "version": "0.19.5",
+        "packageName": "esbuild",
+        "hash": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ=="
       }
     },
-    "npm:cookie-signature": {
+    "npm:html-escaper": {
       "type": "npm",
-      "name": "npm:cookie-signature",
+      "name": "npm:html-escaper",
       "data": {
-        "version": "1.0.6",
-        "packageName": "cookie-signature",
-        "hash": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+        "version": "2.0.2",
+        "packageName": "html-escaper",
+        "hash": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="
       }
     },
-    "npm:kind-of": {
+    "npm:@material/dom": {
       "type": "npm",
-      "name": "npm:kind-of",
+      "name": "npm:@material/dom",
       "data": {
-        "version": "6.0.3",
-        "packageName": "kind-of",
-        "hash": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/dom",
+        "hash": "sha512-AftSOGQoQg/Ys2kOVjZzvqWmsnhg3Kam/2UC4Gj0DMMCu36J4MAoD+3PpnOd1aG3wiJKtUXR2vPIwE8I/PM9yg=="
       }
     },
-    "npm:globals@13.23.0": {
+    "npm:micromark-util-subtokenize": {
       "type": "npm",
-      "name": "npm:globals@13.23.0",
+      "name": "npm:micromark-util-subtokenize",
       "data": {
-        "version": "13.23.0",
-        "packageName": "globals",
-        "hash": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-subtokenize",
+        "hash": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A=="
       }
     },
-    "npm:@types/serve-static": {
+    "npm:npm-pick-manifest": {
       "type": "npm",
-      "name": "npm:@types/serve-static",
+      "name": "npm:npm-pick-manifest",
       "data": {
-        "version": "1.15.4",
-        "packageName": "@types/serve-static",
-        "hash": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw=="
+        "version": "9.0.0",
+        "packageName": "npm-pick-manifest",
+        "hash": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg=="
       }
     },
-    "npm:rx": {
+    "npm:@babel/plugin-transform-exponentiation-operator": {
       "type": "npm",
-      "name": "npm:rx",
+      "name": "npm:@babel/plugin-transform-exponentiation-operator",
       "data": {
-        "version": "4.1.0",
-        "packageName": "rx",
-        "hash": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-exponentiation-operator",
+        "hash": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g=="
       }
     },
-    "npm:@jest/console": {
+    "npm:pify": {
       "type": "npm",
-      "name": "npm:@jest/console",
+      "name": "npm:pify",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/console",
-        "hash": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg=="
+        "version": "4.0.1",
+        "packageName": "pify",
+        "hash": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
       }
     },
-    "npm:strip-ansi@7.1.0": {
+    "npm:prosemirror-view": {
       "type": "npm",
-      "name": "npm:strip-ansi@7.1.0",
+      "name": "npm:prosemirror-view",
       "data": {
-        "version": "7.1.0",
-        "packageName": "strip-ansi",
-        "hash": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="
+        "version": "1.31.7",
+        "packageName": "prosemirror-view",
+        "hash": "sha512-Pr7w93yOYmxQwzGIRSaNLZ/1uM6YjnenASzN2H6fO6kGekuzRbgZ/4bHbBTd1u4sIQmL33/TcGmzxxidyPwCjg=="
       }
     },
-    "npm:builtins": {
+    "npm:strip-json-comments": {
       "type": "npm",
-      "name": "npm:builtins",
+      "name": "npm:strip-json-comments",
       "data": {
-        "version": "5.0.1",
-        "packageName": "builtins",
-        "hash": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ=="
+        "version": "3.1.1",
+        "packageName": "strip-json-comments",
+        "hash": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
       }
     },
-    "npm:basic-auth": {
+    "npm:debug@3.2.7": {
       "type": "npm",
-      "name": "npm:basic-auth",
+      "name": "npm:debug@3.2.7",
       "data": {
-        "version": "2.0.1",
-        "packageName": "basic-auth",
-        "hash": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg=="
+        "version": "3.2.7",
+        "packageName": "debug",
+        "hash": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="
       }
     },
-    "npm:slash@3.0.0": {
+    "npm:@jest/schemas": {
       "type": "npm",
-      "name": "npm:slash@3.0.0",
+      "name": "npm:@jest/schemas",
       "data": {
-        "version": "3.0.0",
-        "packageName": "slash",
-        "hash": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
+        "version": "29.6.3",
+        "packageName": "@jest/schemas",
+        "hash": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="
       }
     },
-    "npm:@babel/plugin-transform-typescript": {
+    "npm:import-fresh": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-typescript",
+      "name": "npm:import-fresh",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/plugin-transform-typescript",
-        "hash": "sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw=="
+        "version": "3.3.0",
+        "packageName": "import-fresh",
+        "hash": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
       }
     },
-    "npm:stream-throttle": {
+    "npm:lodash.merge": {
       "type": "npm",
-      "name": "npm:stream-throttle",
+      "name": "npm:lodash.merge",
       "data": {
-        "version": "0.1.3",
-        "packageName": "stream-throttle",
-        "hash": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ=="
+        "version": "4.6.2",
+        "packageName": "lodash.merge",
+        "hash": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
       }
     },
-    "npm:babel-plugin-const-enum": {
+    "npm:color-convert@2.0.1": {
       "type": "npm",
-      "name": "npm:babel-plugin-const-enum",
+      "name": "npm:color-convert@2.0.1",
       "data": {
-        "version": "1.2.0",
-        "packageName": "babel-plugin-const-enum",
-        "hash": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg=="
+        "version": "2.0.1",
+        "packageName": "color-convert",
+        "hash": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
       }
     },
-    "npm:magic-string": {
+    "npm:validate-npm-package-name": {
       "type": "npm",
-      "name": "npm:magic-string",
+      "name": "npm:validate-npm-package-name",
       "data": {
-        "version": "0.30.5",
-        "packageName": "magic-string",
-        "hash": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA=="
+        "version": "5.0.0",
+        "packageName": "validate-npm-package-name",
+        "hash": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ=="
       }
     },
-    "npm:@adobe/css-tools": {
+    "npm:deep-is": {
       "type": "npm",
-      "name": "npm:@adobe/css-tools",
+      "name": "npm:deep-is",
       "data": {
-        "version": "4.3.1",
-        "packageName": "@adobe/css-tools",
-        "hash": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg=="
+        "version": "0.1.4",
+        "packageName": "deep-is",
+        "hash": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
       }
     },
-    "npm:@types/cookie": {
+    "npm:is-arrayish": {
       "type": "npm",
-      "name": "npm:@types/cookie",
+      "name": "npm:is-arrayish",
       "data": {
-        "version": "0.4.1",
-        "packageName": "@types/cookie",
-        "hash": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+        "version": "0.2.1",
+        "packageName": "is-arrayish",
+        "hash": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
       }
     },
-    "npm:@types/qs": {
+    "npm:pkg-dir": {
       "type": "npm",
-      "name": "npm:@types/qs",
+      "name": "npm:pkg-dir",
       "data": {
-        "version": "6.9.9",
-        "packageName": "@types/qs",
-        "hash": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg=="
+        "version": "7.0.0",
+        "packageName": "pkg-dir",
+        "hash": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA=="
       }
     },
-    "npm:encoding": {
+    "npm:icss-utils": {
       "type": "npm",
-      "name": "npm:encoding",
+      "name": "npm:icss-utils",
       "data": {
-        "version": "0.1.13",
-        "packageName": "encoding",
-        "hash": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="
+        "version": "5.1.0",
+        "packageName": "icss-utils",
+        "hash": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="
       }
     },
-    "npm:xmlhttprequest-ssl": {
+    "npm:open": {
       "type": "npm",
-      "name": "npm:xmlhttprequest-ssl",
+      "name": "npm:open",
       "data": {
-        "version": "2.0.0",
-        "packageName": "xmlhttprequest-ssl",
-        "hash": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
+        "version": "8.4.2",
+        "packageName": "open",
+        "hash": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="
       }
     },
-    "npm:wildcard": {
+    "npm:chrome-trace-event": {
       "type": "npm",
-      "name": "npm:wildcard",
+      "name": "npm:chrome-trace-event",
       "data": {
-        "version": "2.0.1",
-        "packageName": "wildcard",
-        "hash": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
+        "version": "1.0.3",
+        "packageName": "chrome-trace-event",
+        "hash": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
       }
     },
-    "npm:statuses@2.0.1": {
+    "npm:ws@8.14.2": {
       "type": "npm",
-      "name": "npm:statuses@2.0.1",
+      "name": "npm:ws@8.14.2",
       "data": {
-        "version": "2.0.1",
-        "packageName": "statuses",
-        "hash": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
+        "version": "8.14.2",
+        "packageName": "ws",
+        "hash": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g=="
       }
     },
-    "npm:good-listener": {
+    "npm:@babel/plugin-transform-nullish-coalescing-operator": {
       "type": "npm",
-      "name": "npm:good-listener",
+      "name": "npm:@babel/plugin-transform-nullish-coalescing-operator",
       "data": {
-        "version": "1.2.2",
-        "packageName": "good-listener",
-        "hash": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-nullish-coalescing-operator",
+        "hash": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg=="
       }
     },
-    "npm:@babel/plugin-transform-async-to-generator": {
+    "npm:@material/tab-bar": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-async-to-generator",
+      "name": "npm:@material/tab-bar",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-async-to-generator",
-        "hash": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/tab-bar",
+        "hash": "sha512-dMQb1vXsBchQXcjbwgJZIGqTZHngm+3QGSOSb4LWjqHIgC5+w2RRrHsIAjNTyRhKssJ9nKKrbpM/Yz5vTPWH6w=="
       }
     },
-    "npm:common-path-prefix": {
+    "npm:arg": {
       "type": "npm",
-      "name": "npm:common-path-prefix",
+      "name": "npm:arg",
       "data": {
-        "version": "3.0.0",
-        "packageName": "common-path-prefix",
-        "hash": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w=="
+        "version": "4.1.3",
+        "packageName": "arg",
+        "hash": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
       }
     },
-    "npm:etag": {
+    "npm:y18n": {
       "type": "npm",
-      "name": "npm:etag",
+      "name": "npm:y18n",
       "data": {
-        "version": "1.8.1",
-        "packageName": "etag",
-        "hash": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
+        "version": "5.0.8",
+        "packageName": "y18n",
+        "hash": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
       }
     },
-    "npm:eventemitter-asyncresource": {
+    "npm:dayjs": {
       "type": "npm",
-      "name": "npm:eventemitter-asyncresource",
+      "name": "npm:dayjs",
       "data": {
-        "version": "1.0.0",
-        "packageName": "eventemitter-asyncresource",
-        "hash": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ=="
+        "version": "1.11.10",
+        "packageName": "dayjs",
+        "hash": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
       }
     },
-    "npm:iconv-lite": {
+    "npm:@esbuild/darwin-x64": {
       "type": "npm",
-      "name": "npm:iconv-lite",
+      "name": "npm:@esbuild/darwin-x64",
       "data": {
-        "version": "0.4.24",
-        "packageName": "iconv-lite",
-        "hash": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/darwin-x64",
+        "hash": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA=="
       }
     },
-    "npm:uuid@9.0.1": {
+    "npm:@babel/plugin-syntax-optional-catch-binding": {
       "type": "npm",
-      "name": "npm:uuid@9.0.1",
+      "name": "npm:@babel/plugin-syntax-optional-catch-binding",
       "data": {
-        "version": "9.0.1",
-        "packageName": "uuid",
-        "hash": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-optional-catch-binding",
+        "hash": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q=="
       }
     },
-    "npm:strip-json-comments": {
+    "npm:@esbuild/darwin-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:strip-json-comments",
+      "name": "npm:@esbuild/darwin-x64@0.18.20",
       "data": {
-        "version": "3.1.1",
-        "packageName": "strip-json-comments",
-        "hash": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/darwin-x64",
+        "hash": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="
       }
     },
-    "npm:jest-get-type": {
+    "npm:js-yaml": {
       "type": "npm",
-      "name": "npm:jest-get-type",
+      "name": "npm:js-yaml",
       "data": {
-        "version": "29.6.3",
-        "packageName": "jest-get-type",
-        "hash": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="
+        "version": "3.14.1",
+        "packageName": "js-yaml",
+        "hash": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="
       }
     },
-    "npm:rollup": {
+    "npm:d3-brush": {
       "type": "npm",
-      "name": "npm:rollup",
+      "name": "npm:d3-brush",
       "data": {
-        "version": "3.29.4",
-        "packageName": "rollup",
-        "hash": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw=="
+        "version": "3.0.0",
+        "packageName": "d3-brush",
+        "hash": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="
       }
     },
-    "npm:@babel/plugin-proposal-decorators": {
+    "npm:@babel/helper-skip-transparent-expression-wrappers": {
       "type": "npm",
-      "name": "npm:@babel/plugin-proposal-decorators",
+      "name": "npm:@babel/helper-skip-transparent-expression-wrappers",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/plugin-proposal-decorators",
-        "hash": "sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ=="
+        "version": "7.22.5",
+        "packageName": "@babel/helper-skip-transparent-expression-wrappers",
+        "hash": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q=="
       }
     },
-    "npm:@babel/plugin-transform-exponentiation-operator": {
+    "npm:@floating-ui/core": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-exponentiation-operator",
+      "name": "npm:@floating-ui/core",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-exponentiation-operator",
-        "hash": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g=="
+        "version": "1.4.1",
+        "packageName": "@floating-ui/core",
+        "hash": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ=="
       }
     },
-    "npm:bonjour-service": {
+    "npm:levn": {
       "type": "npm",
-      "name": "npm:bonjour-service",
+      "name": "npm:levn",
       "data": {
-        "version": "1.1.1",
-        "packageName": "bonjour-service",
-        "hash": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg=="
+        "version": "0.4.1",
+        "packageName": "levn",
+        "hash": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="
       }
     },
-    "npm:p-limit@3.1.0": {
+    "npm:@babel/helper-validator-identifier": {
       "type": "npm",
-      "name": "npm:p-limit@3.1.0",
+      "name": "npm:@babel/helper-validator-identifier",
       "data": {
-        "version": "3.1.0",
-        "packageName": "p-limit",
-        "hash": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
+        "version": "7.22.20",
+        "packageName": "@babel/helper-validator-identifier",
+        "hash": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
       }
     },
-    "npm:icss-utils": {
+    "npm:@istanbuljs/schema": {
       "type": "npm",
-      "name": "npm:icss-utils",
+      "name": "npm:@istanbuljs/schema",
       "data": {
-        "version": "5.1.0",
-        "packageName": "icss-utils",
-        "hash": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="
+        "version": "0.1.3",
+        "packageName": "@istanbuljs/schema",
+        "hash": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA=="
       }
     },
-    "npm:css-declaration-sorter": {
+    "npm:limiter": {
       "type": "npm",
-      "name": "npm:css-declaration-sorter",
+      "name": "npm:limiter",
       "data": {
-        "version": "6.4.1",
-        "packageName": "css-declaration-sorter",
-        "hash": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g=="
+        "version": "1.1.5",
+        "packageName": "limiter",
+        "hash": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
       }
     },
-    "npm:@nodelib/fs.stat": {
+    "npm:micromark-util-combine-extensions": {
       "type": "npm",
-      "name": "npm:@nodelib/fs.stat",
+      "name": "npm:micromark-util-combine-extensions",
       "data": {
-        "version": "2.0.5",
-        "packageName": "@nodelib/fs.stat",
-        "hash": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-combine-extensions",
+        "hash": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA=="
       }
     },
-    "npm:@babel/plugin-transform-modules-commonjs": {
+    "npm:stylehacks": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-modules-commonjs",
+      "name": "npm:stylehacks",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/plugin-transform-modules-commonjs",
-        "hash": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA=="
+        "version": "6.0.0",
+        "packageName": "stylehacks",
+        "hash": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw=="
       }
     },
-    "npm:lie": {
+    "npm:@babel/plugin-transform-logical-assignment-operators": {
       "type": "npm",
-      "name": "npm:lie",
+      "name": "npm:@babel/plugin-transform-logical-assignment-operators",
       "data": {
-        "version": "3.1.1",
-        "packageName": "lie",
-        "hash": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-logical-assignment-operators",
+        "hash": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ=="
       }
     },
-    "npm:localforage": {
+    "npm:@babel/plugin-transform-destructuring": {
       "type": "npm",
-      "name": "npm:localforage",
+      "name": "npm:@babel/plugin-transform-destructuring",
       "data": {
-        "version": "1.10.0",
-        "packageName": "localforage",
-        "hash": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg=="
+        "version": "7.23.0",
+        "packageName": "@babel/plugin-transform-destructuring",
+        "hash": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg=="
       }
     },
-    "npm:callsites": {
+    "npm:@esbuild/openbsd-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:callsites",
+      "name": "npm:@esbuild/openbsd-x64@0.18.20",
       "data": {
-        "version": "3.1.0",
-        "packageName": "callsites",
-        "hash": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/openbsd-x64",
+        "hash": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="
       }
     },
-    "npm:path-type": {
+    "npm:define-lazy-prop": {
       "type": "npm",
-      "name": "npm:path-type",
+      "name": "npm:define-lazy-prop",
       "data": {
-        "version": "4.0.0",
-        "packageName": "path-type",
-        "hash": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+        "version": "2.0.0",
+        "packageName": "define-lazy-prop",
+        "hash": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
       }
     },
-    "npm:@npmcli/node-gyp": {
+    "npm:rimraf": {
       "type": "npm",
-      "name": "npm:@npmcli/node-gyp",
+      "name": "npm:rimraf",
       "data": {
-        "version": "3.0.0",
-        "packageName": "@npmcli/node-gyp",
-        "hash": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA=="
+        "version": "3.0.2",
+        "packageName": "rimraf",
+        "hash": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
       }
     },
-    "npm:retry": {
+    "npm:ordered-uuid": {
       "type": "npm",
-      "name": "npm:retry",
+      "name": "npm:ordered-uuid",
       "data": {
-        "version": "0.12.0",
-        "packageName": "retry",
-        "hash": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="
+        "version": "1.1.0",
+        "packageName": "ordered-uuid",
+        "hash": "sha512-pcbQ+w/1DIOFYsZRsjkNgxWRvLecCjpbVadcP9SQ/9oHSQr7VXS9+t5/FiPkqFvQGn3a4Hj0YL7R8q7cIgGXBA=="
       }
     },
-    "npm:axios": {
+    "npm:expect": {
       "type": "npm",
-      "name": "npm:axios",
+      "name": "npm:expect",
       "data": {
-        "version": "1.6.0",
-        "packageName": "axios",
-        "hash": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg=="
+        "version": "29.7.0",
+        "packageName": "expect",
+        "hash": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw=="
       }
     },
-    "npm:acorn-import-assertions": {
+    "npm:d3-hierarchy": {
       "type": "npm",
-      "name": "npm:acorn-import-assertions",
+      "name": "npm:d3-hierarchy",
       "data": {
-        "version": "1.9.0",
-        "packageName": "acorn-import-assertions",
-        "hash": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA=="
+        "version": "3.1.2",
+        "packageName": "d3-hierarchy",
+        "hash": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="
       }
     },
-    "npm:send": {
+    "npm:micromark-util-decode-numeric-character-reference": {
       "type": "npm",
-      "name": "npm:send",
+      "name": "npm:micromark-util-decode-numeric-character-reference",
       "data": {
-        "version": "0.18.0",
-        "packageName": "send",
-        "hash": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-decode-numeric-character-reference",
+        "hash": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw=="
       }
     },
-    "npm:engine.io-parser": {
+    "npm:@angular/platform-browser-dynamic": {
       "type": "npm",
-      "name": "npm:engine.io-parser",
+      "name": "npm:@angular/platform-browser-dynamic",
       "data": {
-        "version": "5.2.1",
-        "packageName": "engine.io-parser",
-        "hash": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ=="
+        "version": "17.0.3",
+        "packageName": "@angular/platform-browser-dynamic",
+        "hash": "sha512-Ab6ZeGG63z9Ilv8r4lHcmSirVaw8quRrPjDbT8cgIteHbj0SbwgDzxX0ve+fjjubFUluNSNtc6OYglWMHJ/g7Q=="
       }
     },
-    "npm:@angular-devkit/schematics@16.2.7": {
+    "npm:obuf": {
       "type": "npm",
-      "name": "npm:@angular-devkit/schematics@16.2.7",
+      "name": "npm:obuf",
       "data": {
-        "version": "16.2.7",
-        "packageName": "@angular-devkit/schematics",
-        "hash": "sha512-zu3xHwA4w+kXHkyyjGl3i7uSU2/kKLPKuyyixw0WLcKUQCYd7TWmu8OC0qCDa42XkxP9gGL091dJFu56exgneA=="
+        "version": "1.1.2",
+        "packageName": "obuf",
+        "hash": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
       }
     },
-    "npm:@leichtgewicht/ip-codec": {
+    "npm:rxjs": {
       "type": "npm",
-      "name": "npm:@leichtgewicht/ip-codec",
+      "name": "npm:rxjs",
       "data": {
-        "version": "2.0.4",
-        "packageName": "@leichtgewicht/ip-codec",
-        "hash": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
+        "version": "7.8.1",
+        "packageName": "rxjs",
+        "hash": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg=="
       }
     },
-    "npm:argparse": {
+    "npm:@babel/parser": {
       "type": "npm",
-      "name": "npm:argparse",
+      "name": "npm:@babel/parser",
       "data": {
-        "version": "1.0.10",
-        "packageName": "argparse",
-        "hash": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="
+        "version": "7.23.0",
+        "packageName": "@babel/parser",
+        "hash": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
       }
     },
-    "npm:fs-extra": {
+    "npm:delegate": {
       "type": "npm",
-      "name": "npm:fs-extra",
+      "name": "npm:delegate",
       "data": {
-        "version": "8.1.0",
-        "packageName": "fs-extra",
-        "hash": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="
+        "version": "3.2.0",
+        "packageName": "delegate",
+        "hash": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
       }
     },
-    "npm:argparse@2.0.1": {
+    "npm:signal-exit@4.1.0": {
       "type": "npm",
-      "name": "npm:argparse@2.0.1",
+      "name": "npm:signal-exit@4.1.0",
       "data": {
-        "version": "2.0.1",
-        "packageName": "argparse",
-        "hash": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+        "version": "4.1.0",
+        "packageName": "signal-exit",
+        "hash": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="
       }
     },
-    "npm:@material/slider": {
+    "npm:@babel/plugin-transform-modules-commonjs": {
       "type": "npm",
-      "name": "npm:@material/slider",
+      "name": "npm:@babel/plugin-transform-modules-commonjs",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/slider",
-        "hash": "sha512-is1BSBpxaXBBv+wSVpe9WGWmWl59yJEeDNubTES2UFD0er3BmA+PdKkL09vvytDnBcbKf77TbxaRiUSGVaKUQA=="
+        "version": "7.23.3",
+        "packageName": "@babel/plugin-transform-modules-commonjs",
+        "hash": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA=="
       }
     },
-    "npm:acorn": {
+    "npm:compressible": {
       "type": "npm",
-      "name": "npm:acorn",
+      "name": "npm:compressible",
       "data": {
-        "version": "8.10.0",
-        "packageName": "acorn",
-        "hash": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw=="
+        "version": "2.0.18",
+        "packageName": "compressible",
+        "hash": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="
       }
     },
-    "npm:estraverse@4.3.0": {
+    "npm:cookie@0.5.0": {
       "type": "npm",
-      "name": "npm:estraverse@4.3.0",
+      "name": "npm:cookie@0.5.0",
       "data": {
-        "version": "4.3.0",
-        "packageName": "estraverse",
-        "hash": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+        "version": "0.5.0",
+        "packageName": "cookie",
+        "hash": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
       }
     },
-    "npm:micromark-factory-whitespace": {
+    "npm:doctrine": {
       "type": "npm",
-      "name": "npm:micromark-factory-whitespace",
+      "name": "npm:doctrine",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-factory-whitespace",
-        "hash": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ=="
+        "version": "3.0.0",
+        "packageName": "doctrine",
+        "hash": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="
       }
     },
-    "npm:@jest/transform": {
+    "npm:postcss-discard-overridden": {
       "type": "npm",
-      "name": "npm:@jest/transform",
+      "name": "npm:postcss-discard-overridden",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/transform",
-        "hash": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw=="
+        "version": "6.0.0",
+        "packageName": "postcss-discard-overridden",
+        "hash": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw=="
       }
     },
-    "npm:is-binary-path": {
+    "npm:signal-exit": {
       "type": "npm",
-      "name": "npm:is-binary-path",
+      "name": "npm:signal-exit",
       "data": {
-        "version": "2.1.0",
-        "packageName": "is-binary-path",
-        "hash": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="
+        "version": "3.0.7",
+        "packageName": "signal-exit",
+        "hash": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
       }
     },
-    "npm:needle": {
+    "npm:@esbuild/linux-loong64@0.18.20": {
       "type": "npm",
-      "name": "npm:needle",
+      "name": "npm:@esbuild/linux-loong64@0.18.20",
       "data": {
-        "version": "3.2.0",
-        "packageName": "needle",
-        "hash": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-loong64",
+        "hash": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="
       }
     },
-    "npm:npm-packlist": {
+    "npm:minipass@3.3.6": {
       "type": "npm",
-      "name": "npm:npm-packlist",
-      "data": {
-        "version": "8.0.0",
-        "packageName": "npm-packlist",
-        "hash": "sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw=="
+      "name": "npm:minipass@3.3.6",
+      "data": {
+        "version": "3.3.6",
+        "packageName": "minipass",
+        "hash": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="
       }
     },
-    "npm:jest-worker": {
+    "npm:chownr": {
       "type": "npm",
-      "name": "npm:jest-worker",
+      "name": "npm:chownr",
       "data": {
-        "version": "27.5.1",
-        "packageName": "jest-worker",
-        "hash": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="
+        "version": "2.0.0",
+        "packageName": "chownr",
+        "hash": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
       }
     },
-    "npm:default-gateway": {
+    "npm:strip-bom@3.0.0": {
       "type": "npm",
-      "name": "npm:default-gateway",
+      "name": "npm:strip-bom@3.0.0",
       "data": {
-        "version": "6.0.3",
-        "packageName": "default-gateway",
-        "hash": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg=="
+        "version": "3.0.0",
+        "packageName": "strip-bom",
+        "hash": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="
       }
     },
-    "npm:set-function-length": {
+    "npm:fs-minipass@2.1.0": {
       "type": "npm",
-      "name": "npm:set-function-length",
+      "name": "npm:fs-minipass@2.1.0",
       "data": {
-        "version": "1.1.1",
-        "packageName": "set-function-length",
-        "hash": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ=="
+        "version": "2.1.0",
+        "packageName": "fs-minipass",
+        "hash": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="
       }
     },
-    "npm:is-wsl@1.1.0": {
+    "npm:@esbuild/linux-ppc64@0.18.20": {
       "type": "npm",
-      "name": "npm:is-wsl@1.1.0",
+      "name": "npm:@esbuild/linux-ppc64@0.18.20",
       "data": {
-        "version": "1.1.0",
-        "packageName": "is-wsl",
-        "hash": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-ppc64",
+        "hash": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="
       }
     },
-    "npm:fs-monkey": {
+    "npm:@types/connect": {
       "type": "npm",
-      "name": "npm:fs-monkey",
+      "name": "npm:@types/connect",
       "data": {
-        "version": "1.0.5",
-        "packageName": "fs-monkey",
-        "hash": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew=="
+        "version": "3.4.37",
+        "packageName": "@types/connect",
+        "hash": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q=="
       }
     },
-    "npm:statuses": {
+    "npm:make-error": {
       "type": "npm",
-      "name": "npm:statuses",
+      "name": "npm:make-error",
       "data": {
-        "version": "1.5.0",
-        "packageName": "statuses",
-        "hash": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
+        "version": "1.3.6",
+        "packageName": "make-error",
+        "hash": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
       }
     },
-    "npm:clone": {
+    "npm:webpack-subresource-integrity": {
       "type": "npm",
-      "name": "npm:clone",
+      "name": "npm:webpack-subresource-integrity",
       "data": {
-        "version": "1.0.4",
-        "packageName": "clone",
-        "hash": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="
+        "version": "5.1.0",
+        "packageName": "webpack-subresource-integrity",
+        "hash": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q=="
       }
     },
-    "npm:rw": {
+    "npm:on-finished@2.3.0": {
       "type": "npm",
-      "name": "npm:rw",
+      "name": "npm:on-finished@2.3.0",
       "data": {
-        "version": "1.3.3",
-        "packageName": "rw",
-        "hash": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+        "version": "2.3.0",
+        "packageName": "on-finished",
+        "hash": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww=="
       }
     },
-    "npm:connect": {
+    "npm:acorn-jsx": {
       "type": "npm",
-      "name": "npm:connect",
+      "name": "npm:acorn-jsx",
       "data": {
-        "version": "3.7.0",
-        "packageName": "connect",
-        "hash": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ=="
+        "version": "5.3.2",
+        "packageName": "acorn-jsx",
+        "hash": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
       }
     },
-    "npm:colorette": {
+    "npm:bootstrap": {
       "type": "npm",
-      "name": "npm:colorette",
+      "name": "npm:bootstrap",
       "data": {
-        "version": "2.0.20",
-        "packageName": "colorette",
-        "hash": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
+        "version": "5.3.2",
+        "packageName": "bootstrap",
+        "hash": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g=="
       }
     },
-    "npm:string-width-cjs": {
+    "npm:@humanwhocodes/object-schema": {
       "type": "npm",
-      "name": "npm:string-width-cjs",
+      "name": "npm:@humanwhocodes/object-schema",
       "data": {
-        "version": "npm:string-width@4.2.3",
-        "packageName": "string-width-cjs",
-        "hash": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
+        "version": "2.0.1",
+        "packageName": "@humanwhocodes/object-schema",
+        "hash": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw=="
       }
     },
-    "npm:@material/tab-bar": {
+    "npm:supports-color@7.2.0": {
       "type": "npm",
-      "name": "npm:@material/tab-bar",
+      "name": "npm:supports-color@7.2.0",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/tab-bar",
-        "hash": "sha512-dMQb1vXsBchQXcjbwgJZIGqTZHngm+3QGSOSb4LWjqHIgC5+w2RRrHsIAjNTyRhKssJ9nKKrbpM/Yz5vTPWH6w=="
+        "version": "7.2.0",
+        "packageName": "supports-color",
+        "hash": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
       }
     },
-    "npm:identity-obj-proxy": {
+    "npm:lines-and-columns": {
       "type": "npm",
-      "name": "npm:identity-obj-proxy",
+      "name": "npm:lines-and-columns",
       "data": {
-        "version": "3.0.0",
-        "packageName": "identity-obj-proxy",
-        "hash": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA=="
+        "version": "1.2.4",
+        "packageName": "lines-and-columns",
+        "hash": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
       }
     },
-    "npm:postcss-modules-values": {
+    "npm:mime": {
       "type": "npm",
-      "name": "npm:postcss-modules-values",
+      "name": "npm:mime",
       "data": {
-        "version": "4.0.0",
-        "packageName": "postcss-modules-values",
-        "hash": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ=="
+        "version": "2.6.0",
+        "packageName": "mime",
+        "hash": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
       }
     },
-    "npm:anymatch": {
+    "npm:@yarnpkg/lockfile": {
       "type": "npm",
-      "name": "npm:anymatch",
+      "name": "npm:@yarnpkg/lockfile",
       "data": {
-        "version": "3.1.3",
-        "packageName": "anymatch",
-        "hash": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="
+        "version": "1.1.0",
+        "packageName": "@yarnpkg/lockfile",
+        "hash": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
       }
     },
-    "npm:to-regex-range": {
+    "npm:cross-spawn": {
       "type": "npm",
-      "name": "npm:to-regex-range",
+      "name": "npm:cross-spawn",
       "data": {
-        "version": "5.0.1",
-        "packageName": "to-regex-range",
-        "hash": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
+        "version": "7.0.3",
+        "packageName": "cross-spawn",
+        "hash": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="
       }
     },
-    "npm:@nx/nx-linux-arm-gnueabihf": {
+    "npm:minipass-pipeline": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-arm-gnueabihf",
+      "name": "npm:minipass-pipeline",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-linux-arm-gnueabihf",
-        "hash": "sha512-m80CmxHHyNAJ8j/0rkjc0hg/eGQlf6V2sLsV+gEJkz2sTEEdgSOK4DvnWcZRWO/SWBnqigxoHX4Kf5TH1nmoHA=="
+        "version": "1.2.4",
+        "packageName": "minipass-pipeline",
+        "hash": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A=="
       }
     },
-    "npm:@babel/plugin-syntax-import-meta": {
+    "npm:@esbuild/darwin-arm64@0.18.20": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-import-meta",
+      "name": "npm:@esbuild/darwin-arm64@0.18.20",
       "data": {
-        "version": "7.10.4",
-        "packageName": "@babel/plugin-syntax-import-meta",
-        "hash": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/darwin-arm64",
+        "hash": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="
       }
     },
-    "npm:@babel/helper-simple-access": {
+    "npm:webpack-dev-middleware": {
       "type": "npm",
-      "name": "npm:@babel/helper-simple-access",
+      "name": "npm:webpack-dev-middleware",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/helper-simple-access",
-        "hash": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w=="
+        "version": "6.1.1",
+        "packageName": "webpack-dev-middleware",
+        "hash": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ=="
       }
     },
-    "npm:jackspeak": {
+    "npm:ieee754": {
       "type": "npm",
-      "name": "npm:jackspeak",
+      "name": "npm:ieee754",
       "data": {
-        "version": "2.3.6",
-        "packageName": "jackspeak",
-        "hash": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ=="
+        "version": "1.2.1",
+        "packageName": "ieee754",
+        "hash": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
       }
     },
-    "npm:postcss-minify-selectors": {
+    "npm:@babel/core": {
       "type": "npm",
-      "name": "npm:postcss-minify-selectors",
+      "name": "npm:@babel/core",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-minify-selectors",
-        "hash": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g=="
+        "version": "7.23.2",
+        "packageName": "@babel/core",
+        "hash": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ=="
       }
     },
-    "npm:lodash.merge": {
+    "npm:columnify": {
       "type": "npm",
-      "name": "npm:lodash.merge",
+      "name": "npm:columnify",
       "data": {
-        "version": "4.6.2",
-        "packageName": "lodash.merge",
-        "hash": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+        "version": "1.6.0",
+        "packageName": "columnify",
+        "hash": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q=="
       }
     },
-    "npm:@babel/plugin-transform-reserved-words": {
+    "npm:ansi-styles@4.3.0": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-reserved-words",
+      "name": "npm:ansi-styles@4.3.0",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-reserved-words",
-        "hash": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA=="
+        "version": "4.3.0",
+        "packageName": "ansi-styles",
+        "hash": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
       }
     },
-    "npm:v8-compile-cache": {
+    "npm:graceful-fs": {
       "type": "npm",
-      "name": "npm:v8-compile-cache",
+      "name": "npm:graceful-fs",
       "data": {
-        "version": "2.3.0",
-        "packageName": "v8-compile-cache",
-        "hash": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
+        "version": "4.2.11",
+        "packageName": "graceful-fs",
+        "hash": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
       }
     },
-    "npm:pretty-bytes": {
+    "npm:vite": {
       "type": "npm",
-      "name": "npm:pretty-bytes",
+      "name": "npm:vite",
       "data": {
-        "version": "5.6.0",
-        "packageName": "pretty-bytes",
-        "hash": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="
+        "version": "4.5.0",
+        "packageName": "vite",
+        "hash": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw=="
       }
     },
-    "npm:@material/form-field": {
+    "npm:@types/sockjs": {
       "type": "npm",
-      "name": "npm:@material/form-field",
+      "name": "npm:@types/sockjs",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/form-field",
-        "hash": "sha512-Q/+ErgtAUFUPPUmWA1m5IP5voiN8XjPRwyoAlFxSTa/4t+EA5B18Z8Bsn9b6I0AC8RHke06H7UWrKz8XUDIFpw=="
+        "version": "0.3.35",
+        "packageName": "@types/sockjs",
+        "hash": "sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw=="
       }
     },
-    "npm:babel-preset-jest": {
+    "npm:karma-source-map-support": {
       "type": "npm",
-      "name": "npm:babel-preset-jest",
+      "name": "npm:karma-source-map-support",
       "data": {
-        "version": "29.6.3",
-        "packageName": "babel-preset-jest",
-        "hash": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA=="
+        "version": "1.4.0",
+        "packageName": "karma-source-map-support",
+        "hash": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A=="
       }
     },
-    "npm:foreground-child": {
+    "npm:sax@1.2.4": {
       "type": "npm",
-      "name": "npm:foreground-child",
+      "name": "npm:sax@1.2.4",
       "data": {
-        "version": "3.1.1",
-        "packageName": "foreground-child",
-        "hash": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg=="
+        "version": "1.2.4",
+        "packageName": "sax",
+        "hash": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
       }
     },
-    "npm:@angular/core": {
+    "npm:@material/ripple": {
       "type": "npm",
-      "name": "npm:@angular/core",
+      "name": "npm:@material/ripple",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/core",
-        "hash": "sha512-zY4yhPiphuktrodaM+GiP8G07qnUlmwKElLjYazeIR8A+kF51RQRpSf/pWe5M0uJIn5Oja+RdO9kzhDI9QvOcA=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/ripple",
+        "hash": "sha512-Vl615/PIBpBD+IOI9Xypz0SV3RsmYJYSNx890Rih7irhUOaPsOUBmTYOWF5AsGBynqLcXoTNVhK92drYLKtJwQ=="
       }
     },
-    "npm:character-entities": {
+    "npm:@esbuild/android-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:character-entities",
+      "name": "npm:@esbuild/android-x64@0.18.20",
       "data": {
-        "version": "2.0.2",
-        "packageName": "character-entities",
-        "hash": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/android-x64",
+        "hash": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="
       }
     },
-    "npm:gopd": {
+    "npm:@nx/nx-linux-x64-gnu@17.1.2": {
       "type": "npm",
-      "name": "npm:gopd",
+      "name": "npm:@nx/nx-linux-x64-gnu@17.1.2",
       "data": {
-        "version": "1.0.1",
-        "packageName": "gopd",
-        "hash": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-linux-x64-gnu",
+        "hash": "sha512-3cC131hJ3VhuxjzzBlwIdVp46onykOo78EmnURNdLxcWOpmcKgYXn7OnVwjrglYi+JL7D0vABGKKUpt1cs6/rA=="
       }
     },
-    "npm:glob-parent": {
+    "npm:globals@13.23.0": {
       "type": "npm",
-      "name": "npm:glob-parent",
+      "name": "npm:globals@13.23.0",
       "data": {
-        "version": "5.1.2",
-        "packageName": "glob-parent",
-        "hash": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
+        "version": "13.23.0",
+        "packageName": "globals",
+        "hash": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA=="
       }
     },
-    "npm:@material/radio": {
+    "npm:semver@5.7.2": {
       "type": "npm",
-      "name": "npm:@material/radio",
+      "name": "npm:semver@5.7.2",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/radio",
-        "hash": "sha512-on8EVztWXc/ajcaowFZ31ClGADYxQrhj4ulMne0NxdHHWQ44ttf5aXOVqtv5mxeOzrRACOkQyTUXBG07yTWCEQ=="
+        "version": "5.7.2",
+        "packageName": "semver",
+        "hash": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
       }
     },
-    "npm:array-flatten@1.1.1": {
+    "npm:minipass-collect": {
       "type": "npm",
-      "name": "npm:array-flatten@1.1.1",
+      "name": "npm:minipass-collect",
       "data": {
-        "version": "1.1.1",
-        "packageName": "array-flatten",
-        "hash": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+        "version": "1.0.2",
+        "packageName": "minipass-collect",
+        "hash": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA=="
       }
     },
-    "npm:restore-cursor": {
+    "npm:rope-sequence": {
       "type": "npm",
-      "name": "npm:restore-cursor",
+      "name": "npm:rope-sequence",
       "data": {
-        "version": "3.1.0",
-        "packageName": "restore-cursor",
-        "hash": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="
+        "version": "1.3.4",
+        "packageName": "rope-sequence",
+        "hash": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="
       }
     },
-    "npm:@types/eslint-scope": {
+    "npm:svgo": {
       "type": "npm",
-      "name": "npm:@types/eslint-scope",
+      "name": "npm:svgo",
       "data": {
-        "version": "3.7.6",
-        "packageName": "@types/eslint-scope",
-        "hash": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ=="
+        "version": "3.0.3",
+        "packageName": "svgo",
+        "hash": "sha512-X4UZvLhOglD5Xrp834HzGHf8RKUW0Ahigg/08yRO1no9t2NxffOkMiQ0WmaMIbaGlVTlSst2zWANsdhz5ybXgA=="
       }
     },
-    "npm:sockjs": {
+    "npm:npm-normalize-package-bin": {
       "type": "npm",
-      "name": "npm:sockjs",
+      "name": "npm:npm-normalize-package-bin",
       "data": {
-        "version": "0.3.24",
-        "packageName": "sockjs",
-        "hash": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ=="
+        "version": "3.0.1",
+        "packageName": "npm-normalize-package-bin",
+        "hash": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="
       }
     },
-    "npm:postcss-colormin": {
+    "npm:v8-to-istanbul": {
       "type": "npm",
-      "name": "npm:postcss-colormin",
+      "name": "npm:v8-to-istanbul",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-colormin",
-        "hash": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw=="
+        "version": "9.1.3",
+        "packageName": "v8-to-istanbul",
+        "hash": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg=="
       }
     },
-    "npm:@webassemblyjs/wasm-edit": {
+    "npm:cytoscape-cose-bilkent": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/wasm-edit",
+      "name": "npm:cytoscape-cose-bilkent",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/wasm-edit",
-        "hash": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw=="
+        "version": "4.1.0",
+        "packageName": "cytoscape-cose-bilkent",
+        "hash": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="
       }
     },
-    "npm:nanoid": {
+    "npm:path-exists@5.0.0": {
       "type": "npm",
-      "name": "npm:nanoid",
+      "name": "npm:path-exists@5.0.0",
       "data": {
-        "version": "3.3.6",
-        "packageName": "nanoid",
-        "hash": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+        "version": "5.0.0",
+        "packageName": "path-exists",
+        "hash": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="
       }
     },
-    "npm:postcss-modules-extract-imports": {
+    "npm:emoji-regex@9.2.2": {
       "type": "npm",
-      "name": "npm:postcss-modules-extract-imports",
+      "name": "npm:emoji-regex@9.2.2",
       "data": {
-        "version": "3.0.0",
-        "packageName": "postcss-modules-extract-imports",
-        "hash": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw=="
+        "version": "9.2.2",
+        "packageName": "emoji-regex",
+        "hash": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
       }
     },
-    "npm:camelcase": {
+    "npm:strip-ansi-cjs": {
       "type": "npm",
-      "name": "npm:camelcase",
+      "name": "npm:strip-ansi-cjs",
       "data": {
-        "version": "5.3.1",
-        "packageName": "camelcase",
-        "hash": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+        "version": "npm:strip-ansi@6.0.1",
+        "packageName": "strip-ansi-cjs",
+        "hash": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
       }
     },
     "npm:postcss-unique-selectors": {
@@ -5279,1237 +5378,1228 @@
         "hash": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw=="
       }
     },
-    "npm:@babel/helper-hoist-variables": {
-      "type": "npm",
-      "name": "npm:@babel/helper-hoist-variables",
-      "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/helper-hoist-variables",
-        "hash": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw=="
-      }
-    },
-    "npm:@babel/helper-string-parser": {
+    "npm:@angular/compiler": {
       "type": "npm",
-      "name": "npm:@babel/helper-string-parser",
+      "name": "npm:@angular/compiler",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/helper-string-parser",
-        "hash": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw=="
+        "version": "17.0.3",
+        "packageName": "@angular/compiler",
+        "hash": "sha512-ryUcj8Vc+Q4jMrjrmsEIsGLXeWSmNE/KoTyURPCH+NWq9GBMbjv4oe0/oFSBMN2ZtRMVCvqv2Nq+Z2KRDRGB0A=="
       }
     },
-    "npm:parent-module": {
+    "npm:@types/serve-index": {
       "type": "npm",
-      "name": "npm:parent-module",
+      "name": "npm:@types/serve-index",
       "data": {
-        "version": "1.0.1",
-        "packageName": "parent-module",
-        "hash": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
+        "version": "1.9.3",
+        "packageName": "@types/serve-index",
+        "hash": "sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg=="
       }
     },
-    "npm:ansi-styles@6.2.1": {
+    "npm:string-width": {
       "type": "npm",
-      "name": "npm:ansi-styles@6.2.1",
+      "name": "npm:string-width",
       "data": {
-        "version": "6.2.1",
-        "packageName": "ansi-styles",
-        "hash": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="
+        "version": "4.2.3",
+        "packageName": "string-width",
+        "hash": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
       }
     },
-    "npm:parse5@7.1.2": {
+    "npm:loader-utils": {
       "type": "npm",
-      "name": "npm:parse5@7.1.2",
+      "name": "npm:loader-utils",
       "data": {
-        "version": "7.1.2",
-        "packageName": "parse5",
-        "hash": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw=="
+        "version": "3.2.1",
+        "packageName": "loader-utils",
+        "hash": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw=="
       }
     },
-    "npm:select": {
+    "npm:which": {
       "type": "npm",
-      "name": "npm:select",
+      "name": "npm:which",
       "data": {
-        "version": "1.1.2",
-        "packageName": "select",
-        "hash": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
+        "version": "1.3.1",
+        "packageName": "which",
+        "hash": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="
       }
     },
-    "npm:@esbuild/android-x64@0.18.20": {
+    "npm:@material/select": {
       "type": "npm",
-      "name": "npm:@esbuild/android-x64@0.18.20",
+      "name": "npm:@material/select",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/android-x64",
-        "hash": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/select",
+        "hash": "sha512-odoNLiVOgdwbEeePkjHtlr43pjskDwyO8hi4z3jcud1Rg1czk5zoJ2mUI0+olOJjBQ26PGocwrSLqf3qaThbIA=="
       }
     },
-    "npm:jest-message-util": {
+    "npm:@npmcli/promise-spawn": {
       "type": "npm",
-      "name": "npm:jest-message-util",
+      "name": "npm:@npmcli/promise-spawn",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-message-util",
-        "hash": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w=="
+        "version": "7.0.0",
+        "packageName": "@npmcli/promise-spawn",
+        "hash": "sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ=="
       }
     },
-    "npm:unist-util-stringify-position": {
+    "npm:big.js": {
       "type": "npm",
-      "name": "npm:unist-util-stringify-position",
+      "name": "npm:big.js",
       "data": {
-        "version": "3.0.3",
-        "packageName": "unist-util-stringify-position",
-        "hash": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg=="
+        "version": "5.2.2",
+        "packageName": "big.js",
+        "hash": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
       }
     },
-    "npm:emojis-list": {
+    "npm:string-width@5.1.2": {
       "type": "npm",
-      "name": "npm:emojis-list",
+      "name": "npm:string-width@5.1.2",
       "data": {
-        "version": "3.0.0",
-        "packageName": "emojis-list",
-        "hash": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
+        "version": "5.1.2",
+        "packageName": "string-width",
+        "hash": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="
       }
     },
-    "npm:merge2": {
+    "npm:send@0.16.2": {
       "type": "npm",
-      "name": "npm:merge2",
+      "name": "npm:send@0.16.2",
       "data": {
-        "version": "1.4.1",
-        "packageName": "merge2",
-        "hash": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+        "version": "0.16.2",
+        "packageName": "send",
+        "hash": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw=="
       }
     },
-    "npm:d3-geo": {
+    "npm:mdn-data@2.0.28": {
       "type": "npm",
-      "name": "npm:d3-geo",
+      "name": "npm:mdn-data@2.0.28",
       "data": {
-        "version": "3.1.0",
-        "packageName": "d3-geo",
-        "hash": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA=="
+        "version": "2.0.28",
+        "packageName": "mdn-data",
+        "hash": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="
       }
     },
-    "npm:follow-redirects": {
+    "npm:@material/touch-target": {
       "type": "npm",
-      "name": "npm:follow-redirects",
+      "name": "npm:@material/touch-target",
       "data": {
-        "version": "1.15.3",
-        "packageName": "follow-redirects",
-        "hash": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/touch-target",
+        "hash": "sha512-ubyD1TUjZnRPEdDnk6Lrcm2ZsjnU7CV5y7IX8pj9IPawiM6bx4FkjZBxUvclbv3WiTGk5UOnwPOySYAJYAMQ1w=="
       }
     },
-    "npm:dedent@1.5.1": {
+    "npm:easy-extender": {
       "type": "npm",
-      "name": "npm:dedent@1.5.1",
+      "name": "npm:easy-extender",
       "data": {
-        "version": "1.5.1",
-        "packageName": "dedent",
-        "hash": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg=="
+        "version": "2.3.4",
+        "packageName": "easy-extender",
+        "hash": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q=="
       }
     },
-    "npm:micromark-util-decode-string": {
+    "npm:@esbuild/android-x64": {
       "type": "npm",
-      "name": "npm:micromark-util-decode-string",
+      "name": "npm:@esbuild/android-x64",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-decode-string",
-        "hash": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/android-x64",
+        "hash": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA=="
       }
     },
-    "npm:resolve.exports": {
+    "npm:esbuild-wasm": {
       "type": "npm",
-      "name": "npm:resolve.exports",
+      "name": "npm:esbuild-wasm",
       "data": {
-        "version": "1.1.0",
-        "packageName": "resolve.exports",
-        "hash": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ=="
+        "version": "0.19.5",
+        "packageName": "esbuild-wasm",
+        "hash": "sha512-7zmLLn2QCj93XfMmHtzrDJ1UBuOHB2CZz1ghoCEZiRajxjUvHsF40PnbzFIY/pmesqPRaEtEWii0uzsTbnAgrA=="
       }
     },
-    "npm:process-nextick-args": {
+    "npm:ini": {
       "type": "npm",
-      "name": "npm:process-nextick-args",
+      "name": "npm:ini",
       "data": {
-        "version": "2.0.1",
-        "packageName": "process-nextick-args",
-        "hash": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+        "version": "4.1.1",
+        "packageName": "ini",
+        "hash": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="
       }
     },
-    "npm:loader-utils": {
+    "npm:eazy-logger": {
       "type": "npm",
-      "name": "npm:loader-utils",
+      "name": "npm:eazy-logger",
       "data": {
-        "version": "3.2.1",
-        "packageName": "loader-utils",
-        "hash": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw=="
+        "version": "4.0.1",
+        "packageName": "eazy-logger",
+        "hash": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw=="
       }
     },
-    "npm:dir-glob": {
+    "npm:p-locate@5.0.0": {
       "type": "npm",
-      "name": "npm:dir-glob",
+      "name": "npm:p-locate@5.0.0",
       "data": {
-        "version": "3.0.1",
-        "packageName": "dir-glob",
-        "hash": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="
+        "version": "5.0.0",
+        "packageName": "p-locate",
+        "hash": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
       }
     },
-    "npm:socket.io-adapter": {
+    "npm:@babel/plugin-transform-reserved-words": {
       "type": "npm",
-      "name": "npm:socket.io-adapter",
+      "name": "npm:@babel/plugin-transform-reserved-words",
       "data": {
-        "version": "2.5.2",
-        "packageName": "socket.io-adapter",
-        "hash": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-reserved-words",
+        "hash": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA=="
       }
     },
-    "npm:@babel/plugin-transform-logical-assignment-operators": {
+    "npm:babel-plugin-transform-typescript-metadata": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-logical-assignment-operators",
+      "name": "npm:babel-plugin-transform-typescript-metadata",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-logical-assignment-operators",
-        "hash": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ=="
+        "version": "0.3.2",
+        "packageName": "babel-plugin-transform-typescript-metadata",
+        "hash": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg=="
       }
     },
-    "npm:ajv@6.12.6": {
+    "npm:chokidar": {
       "type": "npm",
-      "name": "npm:ajv@6.12.6",
+      "name": "npm:chokidar",
       "data": {
-        "version": "6.12.6",
-        "packageName": "ajv",
-        "hash": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="
+        "version": "3.5.3",
+        "packageName": "chokidar",
+        "hash": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
       }
     },
-    "npm:style-loader": {
+    "npm:is-extglob": {
       "type": "npm",
-      "name": "npm:style-loader",
+      "name": "npm:is-extglob",
       "data": {
-        "version": "3.3.3",
-        "packageName": "style-loader",
-        "hash": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw=="
+        "version": "2.1.1",
+        "packageName": "is-extglob",
+        "hash": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
       }
     },
-    "npm:@material/list": {
+    "npm:launch-editor": {
       "type": "npm",
-      "name": "npm:@material/list",
+      "name": "npm:launch-editor",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/list",
-        "hash": "sha512-4H5dKIjCUGIPmKjfcegV0SBybD5NNdHp26OU6sovvWIvxSGQtDJr6z9I7i+0vF/HIS5ScbHD2+9/txtL80iqCA=="
+        "version": "2.6.1",
+        "packageName": "launch-editor",
+        "hash": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw=="
       }
     },
-    "npm:setprototypeof": {
+    "npm:json5": {
       "type": "npm",
-      "name": "npm:setprototypeof",
+      "name": "npm:json5",
       "data": {
-        "version": "1.2.0",
-        "packageName": "setprototypeof",
-        "hash": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+        "version": "2.2.3",
+        "packageName": "json5",
+        "hash": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
       }
     },
-    "npm:@babel/plugin-syntax-dynamic-import": {
+    "npm:lodash.isfinite": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-dynamic-import",
+      "name": "npm:lodash.isfinite",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-dynamic-import",
-        "hash": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ=="
+        "version": "3.3.2",
+        "packageName": "lodash.isfinite",
+        "hash": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA=="
       }
     },
-    "npm:connect-history-api-fallback@1.6.0": {
+    "npm:mime-db": {
       "type": "npm",
-      "name": "npm:connect-history-api-fallback@1.6.0",
+      "name": "npm:mime-db",
       "data": {
-        "version": "1.6.0",
-        "packageName": "connect-history-api-fallback",
-        "hash": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg=="
+        "version": "1.52.0",
+        "packageName": "mime-db",
+        "hash": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
       }
     },
-    "npm:cssnano": {
+    "npm:mri": {
       "type": "npm",
-      "name": "npm:cssnano",
+      "name": "npm:mri",
       "data": {
-        "version": "6.0.1",
-        "packageName": "cssnano",
-        "hash": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg=="
+        "version": "1.2.0",
+        "packageName": "mri",
+        "hash": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="
       }
     },
-    "npm:@babel/helper-module-imports": {
+    "npm:set-function-length": {
       "type": "npm",
-      "name": "npm:@babel/helper-module-imports",
+      "name": "npm:set-function-length",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/helper-module-imports",
-        "hash": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w=="
+        "version": "1.1.1",
+        "packageName": "set-function-length",
+        "hash": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ=="
       }
     },
-    "npm:@babel/plugin-transform-unicode-escapes": {
+    "npm:smart-buffer": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-unicode-escapes",
+      "name": "npm:smart-buffer",
       "data": {
-        "version": "7.22.10",
-        "packageName": "@babel/plugin-transform-unicode-escapes",
-        "hash": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg=="
+        "version": "4.2.0",
+        "packageName": "smart-buffer",
+        "hash": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
       }
     },
-    "npm:@esbuild/linux-riscv64": {
+    "npm:unpipe": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-riscv64",
+      "name": "npm:unpipe",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-riscv64",
-        "hash": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag=="
+        "version": "1.0.0",
+        "packageName": "unpipe",
+        "hash": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
       }
     },
-    "npm:@nx/nx-win32-arm64-msvc": {
+    "npm:unicode-match-property-value-ecmascript": {
       "type": "npm",
-      "name": "npm:@nx/nx-win32-arm64-msvc",
+      "name": "npm:unicode-match-property-value-ecmascript",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-win32-arm64-msvc",
-        "hash": "sha512-Sc3sQUcS5xdk05PABe/knG6orG5rmHZdSUj6SMRpvYfN2tM3ziNn6/wCF/LJoW6n70OxrOEXXwLSRK/5WigXbA=="
+        "version": "2.1.0",
+        "packageName": "unicode-match-property-value-ecmascript",
+        "hash": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA=="
       }
     },
-    "npm:tmp@0.2.1": {
+    "npm:postcss-normalize-url": {
       "type": "npm",
-      "name": "npm:tmp@0.2.1",
+      "name": "npm:postcss-normalize-url",
       "data": {
-        "version": "0.2.1",
-        "packageName": "tmp",
-        "hash": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ=="
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-url",
+        "hash": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw=="
       }
     },
-    "npm:adjust-sourcemap-loader": {
+    "npm:glob-parent@6.0.2": {
       "type": "npm",
-      "name": "npm:adjust-sourcemap-loader",
+      "name": "npm:glob-parent@6.0.2",
       "data": {
-        "version": "4.0.0",
-        "packageName": "adjust-sourcemap-loader",
-        "hash": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A=="
+        "version": "6.0.2",
+        "packageName": "glob-parent",
+        "hash": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="
       }
     },
-    "npm:d3-array": {
+    "npm:@material/top-app-bar": {
       "type": "npm",
-      "name": "npm:d3-array",
-      "data": {
-        "version": "3.2.4",
-        "packageName": "d3-array",
-        "hash": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="
+      "name": "npm:@material/top-app-bar",
+      "data": {
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/top-app-bar",
+        "hash": "sha512-twQchmCa1In/FFrALPYojgeM8vmV7KH96wRY9NmPSJ046ANgPCicLBgLuSzrLETCFqAwbztqzxSG4xMBL81rYg=="
       }
     },
-    "npm:htmlparser2": {
+    "npm:@nrwl/web": {
       "type": "npm",
-      "name": "npm:htmlparser2",
+      "name": "npm:@nrwl/web",
       "data": {
-        "version": "8.0.2",
-        "packageName": "htmlparser2",
-        "hash": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/web",
+        "hash": "sha512-BGq0NW/mmkKxDr1V7Rj47IzV4VV6831knVpumqTZHOVNo07KkTW5m37+KA0XprAlPN+F3T/OSYlvP1DEdspafA=="
       }
     },
-    "npm:domelementtype": {
+    "npm:minimist": {
       "type": "npm",
-      "name": "npm:domelementtype",
+      "name": "npm:minimist",
       "data": {
-        "version": "2.3.0",
-        "packageName": "domelementtype",
-        "hash": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
+        "version": "1.2.8",
+        "packageName": "minimist",
+        "hash": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
       }
     },
-    "npm:istanbul-lib-coverage": {
+    "npm:@esbuild/win32-arm64": {
       "type": "npm",
-      "name": "npm:istanbul-lib-coverage",
+      "name": "npm:@esbuild/win32-arm64",
       "data": {
-        "version": "3.2.0",
-        "packageName": "istanbul-lib-coverage",
-        "hash": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/win32-arm64",
+        "hash": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg=="
       }
     },
-    "npm:less-loader": {
+    "npm:slash@3.0.0": {
       "type": "npm",
-      "name": "npm:less-loader",
+      "name": "npm:slash@3.0.0",
       "data": {
-        "version": "11.1.0",
-        "packageName": "less-loader",
-        "hash": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug=="
+        "version": "3.0.0",
+        "packageName": "slash",
+        "hash": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
       }
     },
-    "npm:jest-matcher-utils": {
+    "npm:@esbuild/linux-x64": {
       "type": "npm",
-      "name": "npm:jest-matcher-utils",
+      "name": "npm:@esbuild/linux-x64",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-matcher-utils",
-        "hash": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-x64",
+        "hash": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A=="
       }
     },
-    "npm:log-symbols": {
+    "npm:inflight": {
       "type": "npm",
-      "name": "npm:log-symbols",
+      "name": "npm:inflight",
       "data": {
-        "version": "4.1.0",
-        "packageName": "log-symbols",
-        "hash": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="
+        "version": "1.0.6",
+        "packageName": "inflight",
+        "hash": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
       }
     },
-    "npm:@esbuild/freebsd-arm64": {
+    "npm:boolbase": {
       "type": "npm",
-      "name": "npm:@esbuild/freebsd-arm64",
+      "name": "npm:boolbase",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/freebsd-arm64",
-        "hash": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ=="
+        "version": "1.0.0",
+        "packageName": "boolbase",
+        "hash": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
       }
     },
-    "npm:@yarnpkg/parsers": {
+    "npm:@material/tab": {
       "type": "npm",
-      "name": "npm:@yarnpkg/parsers",
+      "name": "npm:@material/tab",
       "data": {
-        "version": "3.0.0-rc.46",
-        "packageName": "@yarnpkg/parsers",
-        "hash": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/tab",
+        "hash": "sha512-HGLK774uMeLnhbjDJBOjft7S6SurZnKb+6Und88OMDUVUEG6MkFBAKQQr09iBIeLE2sUAiGQhBVQtb7LJKwolQ=="
       }
     },
-    "npm:he": {
+    "npm:ajv-keywords": {
       "type": "npm",
-      "name": "npm:he",
+      "name": "npm:ajv-keywords",
       "data": {
-        "version": "1.2.0",
-        "packageName": "he",
-        "hash": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
+        "version": "5.1.0",
+        "packageName": "ajv-keywords",
+        "hash": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="
       }
     },
-    "npm:isbinaryfile": {
+    "npm:balanced-match": {
       "type": "npm",
-      "name": "npm:isbinaryfile",
+      "name": "npm:balanced-match",
       "data": {
-        "version": "4.0.10",
-        "packageName": "isbinaryfile",
-        "hash": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw=="
+        "version": "1.0.2",
+        "packageName": "balanced-match",
+        "hash": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
       }
     },
-    "npm:@angular/forms": {
+    "npm:file-entry-cache": {
       "type": "npm",
-      "name": "npm:@angular/forms",
+      "name": "npm:file-entry-cache",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/forms",
-        "hash": "sha512-slCUGe5nVOrA0Su9pkmgPXBVzkgh4stvVFBb6ic9/+GlmtRi8h1v5jAFhR4B0R4iaaIoF+TTpRKhZShwtFSqSg=="
+        "version": "6.0.1",
+        "packageName": "file-entry-cache",
+        "hash": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="
       }
     },
-    "npm:jest-watcher": {
+    "npm:queue-microtask": {
       "type": "npm",
-      "name": "npm:jest-watcher",
+      "name": "npm:queue-microtask",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-watcher",
-        "hash": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g=="
+        "version": "1.2.3",
+        "packageName": "queue-microtask",
+        "hash": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
       }
     },
-    "npm:postcss-convert-values": {
+    "npm:statuses@2.0.1": {
       "type": "npm",
-      "name": "npm:postcss-convert-values",
+      "name": "npm:statuses@2.0.1",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-convert-values",
-        "hash": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw=="
+        "version": "2.0.1",
+        "packageName": "statuses",
+        "hash": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
       }
     },
-    "npm:prr": {
+    "npm:cliui@7.0.4": {
       "type": "npm",
-      "name": "npm:prr",
+      "name": "npm:cliui@7.0.4",
       "data": {
-        "version": "1.0.1",
-        "packageName": "prr",
-        "hash": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw=="
+        "version": "7.0.4",
+        "packageName": "cliui",
+        "hash": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="
       }
     },
-    "npm:qs": {
+    "npm:babel-loader": {
       "type": "npm",
-      "name": "npm:qs",
+      "name": "npm:babel-loader",
       "data": {
-        "version": "6.11.0",
-        "packageName": "qs",
-        "hash": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q=="
+        "version": "9.1.3",
+        "packageName": "babel-loader",
+        "hash": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw=="
       }
     },
-    "npm:require-directory": {
+    "npm:ipaddr.js@1.9.1": {
       "type": "npm",
-      "name": "npm:require-directory",
+      "name": "npm:ipaddr.js@1.9.1",
       "data": {
-        "version": "2.1.1",
-        "packageName": "require-directory",
-        "hash": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+        "version": "1.9.1",
+        "packageName": "ipaddr.js",
+        "hash": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
       }
     },
-    "npm:tar-stream": {
+    "npm:randombytes": {
       "type": "npm",
-      "name": "npm:tar-stream",
+      "name": "npm:randombytes",
       "data": {
-        "version": "2.2.0",
-        "packageName": "tar-stream",
-        "hash": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="
+        "version": "2.1.0",
+        "packageName": "randombytes",
+        "hash": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="
       }
     },
-    "npm:@types/estree": {
+    "npm:terser": {
       "type": "npm",
-      "name": "npm:@types/estree",
+      "name": "npm:terser",
       "data": {
-        "version": "1.0.3",
-        "packageName": "@types/estree",
-        "hash": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ=="
+        "version": "5.24.0",
+        "packageName": "terser",
+        "hash": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw=="
       }
     },
-    "npm:non-layered-tidy-tree-layout": {
+    "npm:ts-loader": {
       "type": "npm",
-      "name": "npm:non-layered-tidy-tree-layout",
+      "name": "npm:ts-loader",
       "data": {
-        "version": "2.0.2",
-        "packageName": "non-layered-tidy-tree-layout",
-        "hash": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw=="
+        "version": "9.5.1",
+        "packageName": "ts-loader",
+        "hash": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg=="
       }
     },
-    "npm:@schematics/angular@17.0.1": {
+    "npm:katex": {
       "type": "npm",
-      "name": "npm:@schematics/angular@17.0.1",
+      "name": "npm:katex",
       "data": {
-        "version": "17.0.1",
-        "packageName": "@schematics/angular",
-        "hash": "sha512-BacI1fQsEXNYkfJzDJn3CsUSc9A4M7nhXtvt3XjceUhOqUp2AR4uIeUwDOrpLnkRwv5+rZLafUnRN3k01WUJOw=="
+        "version": "0.16.9",
+        "packageName": "katex",
+        "hash": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ=="
       }
     },
-    "npm:fs-extra@11.1.1": {
+    "npm:nanoid": {
       "type": "npm",
-      "name": "npm:fs-extra@11.1.1",
+      "name": "npm:nanoid",
       "data": {
-        "version": "11.1.1",
-        "packageName": "fs-extra",
-        "hash": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="
+        "version": "3.3.6",
+        "packageName": "nanoid",
+        "hash": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
       }
     },
-    "npm:ts-api-utils": {
+    "npm:connect-history-api-fallback@1.6.0": {
       "type": "npm",
-      "name": "npm:ts-api-utils",
+      "name": "npm:connect-history-api-fallback@1.6.0",
       "data": {
-        "version": "1.0.3",
-        "packageName": "ts-api-utils",
-        "hash": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg=="
+        "version": "1.6.0",
+        "packageName": "connect-history-api-fallback",
+        "hash": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg=="
       }
     },
-    "npm:ts-loader": {
+    "npm:streamroller": {
       "type": "npm",
-      "name": "npm:ts-loader",
+      "name": "npm:streamroller",
       "data": {
-        "version": "9.5.1",
-        "packageName": "ts-loader",
-        "hash": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg=="
+        "version": "3.1.5",
+        "packageName": "streamroller",
+        "hash": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw=="
       }
     },
-    "npm:smart-buffer": {
+    "npm:safe-buffer@5.1.2": {
       "type": "npm",
-      "name": "npm:smart-buffer",
+      "name": "npm:safe-buffer@5.1.2",
       "data": {
-        "version": "4.2.0",
-        "packageName": "smart-buffer",
-        "hash": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
+        "version": "5.1.2",
+        "packageName": "safe-buffer",
+        "hash": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
       }
     },
-    "npm:url-join": {
+    "npm:buffer-from": {
       "type": "npm",
-      "name": "npm:url-join",
+      "name": "npm:buffer-from",
       "data": {
-        "version": "4.0.1",
-        "packageName": "url-join",
-        "hash": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
+        "version": "1.1.2",
+        "packageName": "buffer-from",
+        "hash": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
       }
     },
-    "npm:watchpack": {
+    "npm:cssnano-preset-default": {
       "type": "npm",
-      "name": "npm:watchpack",
+      "name": "npm:cssnano-preset-default",
       "data": {
-        "version": "2.4.0",
-        "packageName": "watchpack",
-        "hash": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg=="
+        "version": "6.0.1",
+        "packageName": "cssnano-preset-default",
+        "hash": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ=="
       }
     },
-    "npm:wbuf": {
+    "npm:espree": {
       "type": "npm",
-      "name": "npm:wbuf",
+      "name": "npm:espree",
       "data": {
-        "version": "1.7.3",
-        "packageName": "wbuf",
-        "hash": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA=="
+        "version": "9.6.1",
+        "packageName": "espree",
+        "hash": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="
       }
     },
-    "npm:@jest/globals": {
+    "npm:yargs@16.2.0": {
       "type": "npm",
-      "name": "npm:@jest/globals",
+      "name": "npm:yargs@16.2.0",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/globals",
-        "hash": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ=="
+        "version": "16.2.0",
+        "packageName": "yargs",
+        "hash": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="
       }
     },
-    "npm:sass": {
+    "npm:@babel/plugin-transform-runtime": {
       "type": "npm",
-      "name": "npm:sass",
+      "name": "npm:@babel/plugin-transform-runtime",
       "data": {
-        "version": "1.69.5",
-        "packageName": "sass",
-        "hash": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ=="
+        "version": "7.23.2",
+        "packageName": "@babel/plugin-transform-runtime",
+        "hash": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA=="
       }
     },
-    "npm:commander": {
+    "npm:normalize-package-data": {
       "type": "npm",
-      "name": "npm:commander",
+      "name": "npm:normalize-package-data",
       "data": {
-        "version": "2.20.3",
-        "packageName": "commander",
-        "hash": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+        "version": "6.0.0",
+        "packageName": "normalize-package-data",
+        "hash": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg=="
       }
     },
-    "npm:ipaddr.js@1.9.1": {
+    "npm:find-cache-dir@3.3.2": {
       "type": "npm",
-      "name": "npm:ipaddr.js@1.9.1",
+      "name": "npm:find-cache-dir@3.3.2",
       "data": {
-        "version": "1.9.1",
-        "packageName": "ipaddr.js",
-        "hash": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
+        "version": "3.3.2",
+        "packageName": "find-cache-dir",
+        "hash": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig=="
       }
     },
-    "npm:locate-path": {
+    "npm:mime@1.4.1": {
       "type": "npm",
-      "name": "npm:locate-path",
+      "name": "npm:mime@1.4.1",
       "data": {
-        "version": "5.0.0",
-        "packageName": "locate-path",
-        "hash": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="
+        "version": "1.4.1",
+        "packageName": "mime",
+        "hash": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
       }
     },
-    "npm:finalhandler@1.1.0": {
+    "npm:jest-util": {
       "type": "npm",
-      "name": "npm:finalhandler@1.1.0",
+      "name": "npm:jest-util",
       "data": {
-        "version": "1.1.0",
-        "packageName": "finalhandler",
-        "hash": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw=="
+        "version": "29.7.0",
+        "packageName": "jest-util",
+        "hash": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA=="
       }
     },
-    "npm:jasmine-core": {
+    "npm:@material/elevation": {
       "type": "npm",
-      "name": "npm:jasmine-core",
+      "name": "npm:@material/elevation",
       "data": {
-        "version": "4.6.0",
-        "packageName": "jasmine-core",
-        "hash": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/elevation",
+        "hash": "sha512-lwPIOb8fHyOljIWYcVLPT73dPIEOKat/CXu6gqYIVMQgZQIksQNUA7z1O3l7apkRSuYUOYSXqrgU7AnWP4KcJg=="
       }
     },
-    "npm:hosted-git-info": {
+    "npm:ms@2.1.3": {
       "type": "npm",
-      "name": "npm:hosted-git-info",
+      "name": "npm:ms@2.1.3",
       "data": {
-        "version": "7.0.1",
-        "packageName": "hosted-git-info",
-        "hash": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA=="
+        "version": "2.1.3",
+        "packageName": "ms",
+        "hash": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
       }
     },
-    "npm:find-up@6.3.0": {
+    "npm:micromark-util-classify-character": {
       "type": "npm",
-      "name": "npm:find-up@6.3.0",
+      "name": "npm:micromark-util-classify-character",
       "data": {
-        "version": "6.3.0",
-        "packageName": "find-up",
-        "hash": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-classify-character",
+        "hash": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw=="
       }
     },
-    "npm:d3-scale": {
+    "npm:localforage": {
       "type": "npm",
-      "name": "npm:d3-scale",
+      "name": "npm:localforage",
       "data": {
-        "version": "4.0.2",
-        "packageName": "d3-scale",
-        "hash": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="
+        "version": "1.10.0",
+        "packageName": "localforage",
+        "hash": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg=="
       }
     },
-    "npm:dayjs": {
+    "npm:@nrwl/tao@17.1.2": {
       "type": "npm",
-      "name": "npm:dayjs",
+      "name": "npm:@nrwl/tao@17.1.2",
       "data": {
-        "version": "1.11.10",
-        "packageName": "dayjs",
-        "hash": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/tao",
+        "hash": "sha512-tL+dlygeor/kLG5fuK5qaiVFJ4hEtvJ/E+xY9epp20UKCNQSEkrSFiesiXtX6E/PPf4YbOQ4B4itWR2EYCm03Q=="
       }
     },
-    "npm:fs.realpath": {
+    "npm:@material/progress-indicator": {
       "type": "npm",
-      "name": "npm:fs.realpath",
+      "name": "npm:@material/progress-indicator",
       "data": {
-        "version": "1.0.0",
-        "packageName": "fs.realpath",
-        "hash": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/progress-indicator",
+        "hash": "sha512-92HM5niUnqG5Y3M/xkscBD+2lkaWPDcIRPo0RHPYcyldL+EhWRv/sdQpfdiXw/h3uvKSowKxBMCHm8krAyf+sQ=="
       }
     },
-    "npm:@babel/helper-create-class-features-plugin": {
+    "npm:@nx/nx-linux-arm-gnueabihf": {
       "type": "npm",
-      "name": "npm:@babel/helper-create-class-features-plugin",
+      "name": "npm:@nx/nx-linux-arm-gnueabihf",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/helper-create-class-features-plugin",
-        "hash": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-linux-arm-gnueabihf",
+        "hash": "sha512-m80CmxHHyNAJ8j/0rkjc0hg/eGQlf6V2sLsV+gEJkz2sTEEdgSOK4DvnWcZRWO/SWBnqigxoHX4Kf5TH1nmoHA=="
       }
     },
-    "npm:is-interactive": {
+    "npm:@material/form-field": {
       "type": "npm",
-      "name": "npm:is-interactive",
+      "name": "npm:@material/form-field",
       "data": {
-        "version": "1.0.0",
-        "packageName": "is-interactive",
-        "hash": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/form-field",
+        "hash": "sha512-Q/+ErgtAUFUPPUmWA1m5IP5voiN8XjPRwyoAlFxSTa/4t+EA5B18Z8Bsn9b6I0AC8RHke06H7UWrKz8XUDIFpw=="
       }
     },
-    "npm:jsonparse": {
+    "npm:@material/linear-progress": {
       "type": "npm",
-      "name": "npm:jsonparse",
+      "name": "npm:@material/linear-progress",
       "data": {
-        "version": "1.3.1",
-        "packageName": "jsonparse",
-        "hash": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/linear-progress",
+        "hash": "sha512-IcCd4476pXHloTYadHDJ+2c2lntoVigeNnQEiD/ASQTKqKrJqkIdvvczFm9Ryu+V2+TKhp7vvQGFLUMaLPcmhw=="
       }
     },
-    "npm:big.js": {
+    "npm:jsonfile@3.0.1": {
       "type": "npm",
-      "name": "npm:big.js",
+      "name": "npm:jsonfile@3.0.1",
       "data": {
-        "version": "5.2.2",
-        "packageName": "big.js",
-        "hash": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+        "version": "3.0.1",
+        "packageName": "jsonfile",
+        "hash": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w=="
       }
     },
-    "npm:strip-ansi": {
+    "npm:@typescript-eslint/types": {
       "type": "npm",
-      "name": "npm:strip-ansi",
+      "name": "npm:@typescript-eslint/types",
       "data": {
-        "version": "6.0.1",
-        "packageName": "strip-ansi",
-        "hash": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
+        "version": "6.11.0",
+        "packageName": "@typescript-eslint/types",
+        "hash": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA=="
       }
     },
-    "npm:ee-first": {
+    "npm:path-exists": {
       "type": "npm",
-      "name": "npm:ee-first",
+      "name": "npm:path-exists",
       "data": {
-        "version": "1.1.1",
-        "packageName": "ee-first",
-        "hash": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+        "version": "4.0.0",
+        "packageName": "path-exists",
+        "hash": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
       }
     },
-    "npm:boolbase": {
+    "npm:test-exclude": {
       "type": "npm",
-      "name": "npm:boolbase",
+      "name": "npm:test-exclude",
       "data": {
-        "version": "1.0.0",
-        "packageName": "boolbase",
-        "hash": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+        "version": "6.0.0",
+        "packageName": "test-exclude",
+        "hash": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w=="
       }
     },
-    "npm:eslint-scope@7.2.2": {
+    "npm:events": {
       "type": "npm",
-      "name": "npm:eslint-scope@7.2.2",
+      "name": "npm:events",
       "data": {
-        "version": "7.2.2",
-        "packageName": "eslint-scope",
-        "hash": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="
+        "version": "3.3.0",
+        "packageName": "events",
+        "hash": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
       }
     },
-    "npm:require-from-string": {
+    "npm:resolve.exports@2.0.2": {
       "type": "npm",
-      "name": "npm:require-from-string",
+      "name": "npm:resolve.exports@2.0.2",
       "data": {
         "version": "2.0.2",
-        "packageName": "require-from-string",
-        "hash": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
+        "packageName": "resolve.exports",
+        "hash": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg=="
       }
     },
-    "npm:decode-named-character-reference": {
+    "npm:toidentifier": {
       "type": "npm",
-      "name": "npm:decode-named-character-reference",
+      "name": "npm:toidentifier",
       "data": {
-        "version": "1.0.2",
-        "packageName": "decode-named-character-reference",
-        "hash": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg=="
+        "version": "1.0.1",
+        "packageName": "toidentifier",
+        "hash": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
       }
     },
-    "npm:@material/snackbar": {
+    "npm:type-check": {
       "type": "npm",
-      "name": "npm:@material/snackbar",
+      "name": "npm:type-check",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/snackbar",
-        "hash": "sha512-2NAtC1qozR/uajszZnPy08Ej8HNnpgvCjNCBerDN4SLH2Q0/aWrVrUjqRCp2ayAvsX+szoroGbCboMhaWRzDuQ=="
+        "version": "0.4.0",
+        "packageName": "type-check",
+        "hash": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="
       }
     },
-    "npm:postcss-calc": {
+    "npm:lru-cache@6.0.0": {
       "type": "npm",
-      "name": "npm:postcss-calc",
+      "name": "npm:lru-cache@6.0.0",
       "data": {
-        "version": "9.0.1",
-        "packageName": "postcss-calc",
-        "hash": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ=="
+        "version": "6.0.0",
+        "packageName": "lru-cache",
+        "hash": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="
       }
     },
-    "npm:bl": {
+    "npm:depd@1.1.2": {
       "type": "npm",
-      "name": "npm:bl",
+      "name": "npm:depd@1.1.2",
       "data": {
-        "version": "4.1.0",
-        "packageName": "bl",
-        "hash": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="
+        "version": "1.1.2",
+        "packageName": "depd",
+        "hash": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
       }
     },
-    "npm:type-fest@0.20.2": {
+    "npm:custom-event": {
       "type": "npm",
-      "name": "npm:type-fest@0.20.2",
+      "name": "npm:custom-event",
       "data": {
-        "version": "0.20.2",
-        "packageName": "type-fest",
-        "hash": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
+        "version": "1.0.1",
+        "packageName": "custom-event",
+        "hash": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg=="
       }
     },
-    "npm:bs-recipes": {
+    "npm:vary": {
       "type": "npm",
-      "name": "npm:bs-recipes",
+      "name": "npm:vary",
       "data": {
-        "version": "1.3.4",
-        "packageName": "bs-recipes",
-        "hash": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw=="
+        "version": "1.1.2",
+        "packageName": "vary",
+        "hash": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
       }
     },
-    "npm:browser-sync-client": {
+    "npm:safe-buffer": {
       "type": "npm",
-      "name": "npm:browser-sync-client",
+      "name": "npm:safe-buffer",
       "data": {
-        "version": "2.29.3",
-        "packageName": "browser-sync-client",
-        "hash": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ=="
+        "version": "5.2.1",
+        "packageName": "safe-buffer",
+        "hash": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
       }
     },
-    "npm:cssnano-preset-default": {
+    "npm:dir-glob": {
       "type": "npm",
-      "name": "npm:cssnano-preset-default",
+      "name": "npm:dir-glob",
       "data": {
-        "version": "6.0.1",
-        "packageName": "cssnano-preset-default",
-        "hash": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ=="
+        "version": "3.0.1",
+        "packageName": "dir-glob",
+        "hash": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="
       }
     },
-    "npm:@nrwl/jest": {
+    "npm:css-minimizer-webpack-plugin": {
       "type": "npm",
-      "name": "npm:@nrwl/jest",
+      "name": "npm:css-minimizer-webpack-plugin",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/jest",
-        "hash": "sha512-FUZcjZQaPg6ImzoK6es5KpyZGNSj6vG7AKzgAmVHzLelnSgP/0hVEZevotRKwFVWS1AmP2LLyguzpIRjtDAX0g=="
+        "version": "5.0.1",
+        "packageName": "css-minimizer-webpack-plugin",
+        "hash": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg=="
       }
     },
-    "npm:lodash.memoize": {
+    "npm:onetime": {
       "type": "npm",
-      "name": "npm:lodash.memoize",
+      "name": "npm:onetime",
       "data": {
-        "version": "4.1.2",
-        "packageName": "lodash.memoize",
-        "hash": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
+        "version": "5.1.2",
+        "packageName": "onetime",
+        "hash": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="
       }
     },
-    "npm:@humanwhocodes/module-importer": {
+    "npm:@aashutoshrathi/word-wrap": {
       "type": "npm",
-      "name": "npm:@humanwhocodes/module-importer",
+      "name": "npm:@aashutoshrathi/word-wrap",
       "data": {
-        "version": "1.0.1",
-        "packageName": "@humanwhocodes/module-importer",
-        "hash": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
+        "version": "1.2.6",
+        "packageName": "@aashutoshrathi/word-wrap",
+        "hash": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="
       }
     },
-    "npm:d3-fetch": {
+    "npm:@babel/plugin-transform-unicode-regex": {
       "type": "npm",
-      "name": "npm:d3-fetch",
+      "name": "npm:@babel/plugin-transform-unicode-regex",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-fetch",
-        "hash": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-unicode-regex",
+        "hash": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg=="
       }
     },
-    "npm:postcss-svgo": {
+    "npm:figures": {
       "type": "npm",
-      "name": "npm:postcss-svgo",
+      "name": "npm:figures",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-svgo",
-        "hash": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw=="
+        "version": "3.2.0",
+        "packageName": "figures",
+        "hash": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="
       }
     },
-    "npm:babel-loader": {
+    "npm:prosemirror-model": {
       "type": "npm",
-      "name": "npm:babel-loader",
+      "name": "npm:prosemirror-model",
       "data": {
-        "version": "9.1.3",
-        "packageName": "babel-loader",
-        "hash": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw=="
+        "version": "1.19.3",
+        "packageName": "prosemirror-model",
+        "hash": "sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ=="
       }
     },
-    "npm:dequal": {
+    "npm:websocket-extensions": {
       "type": "npm",
-      "name": "npm:dequal",
+      "name": "npm:websocket-extensions",
       "data": {
-        "version": "2.0.3",
-        "packageName": "dequal",
-        "hash": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
+        "version": "0.1.4",
+        "packageName": "websocket-extensions",
+        "hash": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
       }
     },
-    "npm:postcss-modules-scope": {
+    "npm:escape-string-regexp@4.0.0": {
       "type": "npm",
-      "name": "npm:postcss-modules-scope",
+      "name": "npm:escape-string-regexp@4.0.0",
       "data": {
-        "version": "3.0.0",
-        "packageName": "postcss-modules-scope",
-        "hash": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg=="
+        "version": "4.0.0",
+        "packageName": "escape-string-regexp",
+        "hash": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
       }
     },
-    "npm:@babel/preset-modules": {
+    "npm:type-fest": {
       "type": "npm",
-      "name": "npm:@babel/preset-modules",
+      "name": "npm:type-fest",
       "data": {
-        "version": "0.1.6-no-external-plugins",
-        "packageName": "@babel/preset-modules",
-        "hash": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA=="
+        "version": "0.21.3",
+        "packageName": "type-fest",
+        "hash": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="
       }
     },
-    "npm:@esbuild/linux-arm64": {
+    "npm:jest-worker": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-arm64",
+      "name": "npm:jest-worker",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-arm64",
-        "hash": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA=="
+        "version": "27.5.1",
+        "packageName": "jest-worker",
+        "hash": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="
       }
     },
-    "npm:npm-install-checks": {
+    "npm:colord": {
       "type": "npm",
-      "name": "npm:npm-install-checks",
+      "name": "npm:colord",
       "data": {
-        "version": "6.3.0",
-        "packageName": "npm-install-checks",
-        "hash": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw=="
+        "version": "2.9.3",
+        "packageName": "colord",
+        "hash": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="
       }
     },
-    "npm:@types/babel__generator": {
+    "npm:p-map": {
       "type": "npm",
-      "name": "npm:@types/babel__generator",
+      "name": "npm:p-map",
       "data": {
-        "version": "7.6.7",
-        "packageName": "@types/babel__generator",
-        "hash": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ=="
+        "version": "4.0.0",
+        "packageName": "p-map",
+        "hash": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="
       }
     },
-    "npm:wrap-ansi@6.2.0": {
+    "npm:fb-watchman": {
       "type": "npm",
-      "name": "npm:wrap-ansi@6.2.0",
+      "name": "npm:fb-watchman",
       "data": {
-        "version": "6.2.0",
-        "packageName": "wrap-ansi",
-        "hash": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="
+        "version": "2.0.2",
+        "packageName": "fb-watchman",
+        "hash": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA=="
       }
     },
-    "npm:co": {
+    "npm:semver": {
       "type": "npm",
-      "name": "npm:co",
+      "name": "npm:semver",
       "data": {
-        "version": "4.6.0",
-        "packageName": "co",
-        "hash": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ=="
+        "version": "7.5.4",
+        "packageName": "semver",
+        "hash": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="
       }
     },
-    "npm:create-require": {
+    "npm:cssesc": {
       "type": "npm",
-      "name": "npm:create-require",
+      "name": "npm:cssesc",
       "data": {
-        "version": "1.1.1",
-        "packageName": "create-require",
-        "hash": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
+        "version": "3.0.0",
+        "packageName": "cssesc",
+        "hash": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
       }
     },
-    "npm:unicode-canonical-property-names-ecmascript": {
+    "npm:watchpack": {
       "type": "npm",
-      "name": "npm:unicode-canonical-property-names-ecmascript",
+      "name": "npm:watchpack",
       "data": {
-        "version": "2.0.0",
-        "packageName": "unicode-canonical-property-names-ecmascript",
-        "hash": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ=="
+        "version": "2.4.0",
+        "packageName": "watchpack",
+        "hash": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg=="
       }
     },
-    "npm:@types/connect-history-api-fallback": {
+    "npm:forwarded": {
       "type": "npm",
-      "name": "npm:@types/connect-history-api-fallback",
+      "name": "npm:forwarded",
       "data": {
-        "version": "1.5.2",
-        "packageName": "@types/connect-history-api-fallback",
-        "hash": "sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q=="
+        "version": "0.2.0",
+        "packageName": "forwarded",
+        "hash": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
       }
     },
-    "npm:@angular-devkit/core@16.2.7": {
+    "npm:memfs": {
       "type": "npm",
-      "name": "npm:@angular-devkit/core@16.2.7",
+      "name": "npm:memfs",
       "data": {
-        "version": "16.2.7",
-        "packageName": "@angular-devkit/core",
-        "hash": "sha512-XskObYrg7NRdEuHnSVZOM7OeinEL8HzugjmKnawAa+dAbFCCoGsVWjMliA/Q8sb1yfGkyL0WW7DZABZj7EGwWA=="
+        "version": "3.5.3",
+        "packageName": "memfs",
+        "hash": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw=="
       }
     },
-    "npm:@typescript-eslint/scope-manager": {
+    "npm:pirates": {
       "type": "npm",
-      "name": "npm:@typescript-eslint/scope-manager",
+      "name": "npm:pirates",
       "data": {
-        "version": "6.11.0",
-        "packageName": "@typescript-eslint/scope-manager",
-        "hash": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A=="
+        "version": "4.0.6",
+        "packageName": "pirates",
+        "hash": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg=="
       }
     },
-    "npm:d3-scale-chromatic": {
+    "npm:@xtuc/ieee754": {
       "type": "npm",
-      "name": "npm:d3-scale-chromatic",
+      "name": "npm:@xtuc/ieee754",
       "data": {
-        "version": "3.0.0",
-        "packageName": "d3-scale-chromatic",
-        "hash": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g=="
+        "version": "1.2.0",
+        "packageName": "@xtuc/ieee754",
+        "hash": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
       }
     },
-    "npm:stylehacks": {
+    "npm:is-wsl": {
       "type": "npm",
-      "name": "npm:stylehacks",
+      "name": "npm:is-wsl",
       "data": {
-        "version": "6.0.0",
-        "packageName": "stylehacks",
-        "hash": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw=="
+        "version": "2.2.0",
+        "packageName": "is-wsl",
+        "hash": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="
       }
     },
-    "npm:uri-js": {
+    "npm:source-map-support@0.5.19": {
       "type": "npm",
-      "name": "npm:uri-js",
+      "name": "npm:source-map-support@0.5.19",
       "data": {
-        "version": "4.4.1",
-        "packageName": "uri-js",
-        "hash": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="
+        "version": "0.5.19",
+        "packageName": "source-map-support",
+        "hash": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw=="
       }
     },
-    "npm:@material/drawer": {
+    "npm:postcss-normalize-display-values": {
       "type": "npm",
-      "name": "npm:@material/drawer",
+      "name": "npm:postcss-normalize-display-values",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/drawer",
-        "hash": "sha512-/JUmbzRBaikdbZ250yA9ZTPqp2W5nGvvuHYoNVAAmtOmxuwGvvNNpWiVZy2lIYeYcf1hA7hJ5mEQxs0aSD7iWQ=="
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-display-values",
+        "hash": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw=="
       }
     },
-    "npm:async-each-series": {
+    "npm:enhanced-resolve": {
       "type": "npm",
-      "name": "npm:async-each-series",
+      "name": "npm:enhanced-resolve",
       "data": {
-        "version": "0.1.1",
-        "packageName": "async-each-series",
-        "hash": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ=="
+        "version": "5.15.0",
+        "packageName": "enhanced-resolve",
+        "hash": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg=="
       }
     },
-    "npm:@types/range-parser": {
+    "npm:d3-sankey": {
       "type": "npm",
-      "name": "npm:@types/range-parser",
+      "name": "npm:d3-sankey",
       "data": {
-        "version": "1.2.6",
-        "packageName": "@types/range-parser",
-        "hash": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA=="
+        "version": "0.12.3",
+        "packageName": "d3-sankey",
+        "hash": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="
       }
     },
-    "npm:isarray": {
+    "npm:dom-serialize": {
       "type": "npm",
-      "name": "npm:isarray",
+      "name": "npm:dom-serialize",
       "data": {
-        "version": "1.0.0",
-        "packageName": "isarray",
-        "hash": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+        "version": "2.2.1",
+        "packageName": "dom-serialize",
+        "hash": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ=="
       }
     },
-    "npm:type-is": {
+    "npm:@babel/plugin-transform-unicode-escapes": {
       "type": "npm",
-      "name": "npm:type-is",
+      "name": "npm:@babel/plugin-transform-unicode-escapes",
       "data": {
-        "version": "1.6.18",
-        "packageName": "type-is",
-        "hash": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="
+        "version": "7.22.10",
+        "packageName": "@babel/plugin-transform-unicode-escapes",
+        "hash": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg=="
       }
     },
-    "npm:statuses@1.4.0": {
+    "npm:@webassemblyjs/wasm-parser": {
       "type": "npm",
-      "name": "npm:statuses@1.4.0",
+      "name": "npm:@webassemblyjs/wasm-parser",
       "data": {
-        "version": "1.4.0",
-        "packageName": "statuses",
-        "hash": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/wasm-parser",
+        "hash": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ=="
       }
     },
-    "npm:walker": {
+    "npm:@material/auto-init": {
       "type": "npm",
-      "name": "npm:walker",
+      "name": "npm:@material/auto-init",
       "data": {
-        "version": "1.0.8",
-        "packageName": "walker",
-        "hash": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/auto-init",
+        "hash": "sha512-0QfmjT5elQ10hCxToVgq/WaC3301tVH1sJaO3O2yocVzr7s6iWm8/zch16V5hcHzQHbtcT3Rf4y1ZzmdNys2Iw=="
       }
     },
-    "npm:esprima": {
+    "npm:@webassemblyjs/wast-printer": {
       "type": "npm",
-      "name": "npm:esprima",
+      "name": "npm:@webassemblyjs/wast-printer",
       "data": {
-        "version": "4.0.1",
-        "packageName": "esprima",
-        "hash": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/wast-printer",
+        "hash": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A=="
       }
     },
-    "npm:methods": {
+    "npm:@vitejs/plugin-basic-ssl": {
       "type": "npm",
-      "name": "npm:methods",
+      "name": "npm:@vitejs/plugin-basic-ssl",
       "data": {
-        "version": "1.1.2",
-        "packageName": "methods",
-        "hash": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
+        "version": "1.0.1",
+        "packageName": "@vitejs/plugin-basic-ssl",
+        "hash": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A=="
       }
     },
-    "npm:escape-html": {
+    "npm:mime@1.6.0": {
       "type": "npm",
-      "name": "npm:escape-html",
+      "name": "npm:mime@1.6.0",
       "data": {
-        "version": "1.0.3",
-        "packageName": "escape-html",
-        "hash": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+        "version": "1.6.0",
+        "packageName": "mime",
+        "hash": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
       }
     },
-    "npm:read-package-json": {
+    "npm:parent-module": {
       "type": "npm",
-      "name": "npm:read-package-json",
+      "name": "npm:parent-module",
       "data": {
-        "version": "7.0.0",
-        "packageName": "read-package-json",
-        "hash": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg=="
+        "version": "1.0.1",
+        "packageName": "parent-module",
+        "hash": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
       }
     },
-    "npm:secure-compare": {
+    "npm:wrap-ansi@6.2.0": {
       "type": "npm",
-      "name": "npm:secure-compare",
+      "name": "npm:wrap-ansi@6.2.0",
       "data": {
-        "version": "3.0.1",
-        "packageName": "secure-compare",
-        "hash": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw=="
+        "version": "6.2.0",
+        "packageName": "wrap-ansi",
+        "hash": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="
       }
     },
-    "npm:@eslint-community/regexpp": {
+    "npm:qs": {
       "type": "npm",
-      "name": "npm:@eslint-community/regexpp",
+      "name": "npm:qs",
       "data": {
-        "version": "4.10.0",
-        "packageName": "@eslint-community/regexpp",
-        "hash": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA=="
+        "version": "6.11.0",
+        "packageName": "qs",
+        "hash": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q=="
       }
     },
-    "npm:http-errors@1.6.3": {
+    "npm:hasown": {
       "type": "npm",
-      "name": "npm:http-errors@1.6.3",
+      "name": "npm:hasown",
       "data": {
-        "version": "1.6.3",
-        "packageName": "http-errors",
-        "hash": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A=="
+        "version": "2.0.0",
+        "packageName": "hasown",
+        "hash": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA=="
       }
     },
-    "npm:fastq": {
+    "npm:@babel/plugin-transform-literals": {
       "type": "npm",
-      "name": "npm:fastq",
+      "name": "npm:@babel/plugin-transform-literals",
       "data": {
-        "version": "1.15.0",
-        "packageName": "fastq",
-        "hash": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-literals",
+        "hash": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g=="
       }
     },
-    "npm:readable-stream@2.3.8": {
+    "npm:cacache": {
       "type": "npm",
-      "name": "npm:readable-stream@2.3.8",
+      "name": "npm:cacache",
       "data": {
-        "version": "2.3.8",
-        "packageName": "readable-stream",
-        "hash": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="
+        "version": "18.0.0",
+        "packageName": "cacache",
+        "hash": "sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w=="
       }
     },
-    "npm:escape-string-regexp@4.0.0": {
+    "npm:https-proxy-agent": {
       "type": "npm",
-      "name": "npm:escape-string-regexp@4.0.0",
+      "name": "npm:https-proxy-agent",
       "data": {
-        "version": "4.0.0",
-        "packageName": "escape-string-regexp",
-        "hash": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        "version": "7.0.2",
+        "packageName": "https-proxy-agent",
+        "hash": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA=="
       }
     },
-    "npm:connect@3.6.6": {
+    "npm:engine.io-client": {
       "type": "npm",
-      "name": "npm:connect@3.6.6",
+      "name": "npm:engine.io-client",
       "data": {
-        "version": "3.6.6",
-        "packageName": "connect",
-        "hash": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ=="
+        "version": "6.5.3",
+        "packageName": "engine.io-client",
+        "hash": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q=="
       }
     },
-    "npm:@babel/plugin-syntax-import-assertions": {
+    "npm:@nx/nx-linux-arm64-musl": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-import-assertions",
+      "name": "npm:@nx/nx-linux-arm64-musl",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-syntax-import-assertions",
-        "hash": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-linux-arm64-musl",
+        "hash": "sha512-f8pUFoZHBFQtHnopHgTEuwIiu0Rzem0dD7iK8SyyBy/lRAADtHCAHxaPAG+iatHAJ9h4DFIB50k9ybYxDtH2mg=="
       }
     },
-    "npm:globals": {
+    "npm:ignore": {
       "type": "npm",
-      "name": "npm:globals",
+      "name": "npm:ignore",
       "data": {
-        "version": "11.12.0",
-        "packageName": "globals",
-        "hash": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+        "version": "5.2.4",
+        "packageName": "ignore",
+        "hash": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
       }
     },
-    "npm:@jridgewell/trace-mapping@0.3.9": {
+    "npm:webpack-merge": {
       "type": "npm",
-      "name": "npm:@jridgewell/trace-mapping@0.3.9",
+      "name": "npm:webpack-merge",
       "data": {
-        "version": "0.3.9",
-        "packageName": "@jridgewell/trace-mapping",
-        "hash": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="
+        "version": "5.10.0",
+        "packageName": "webpack-merge",
+        "hash": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA=="
       }
     },
-    "npm:marked": {
+    "npm:istanbul-lib-instrument": {
       "type": "npm",
-      "name": "npm:marked",
+      "name": "npm:istanbul-lib-instrument",
       "data": {
-        "version": "9.0.0",
-        "packageName": "marked",
-        "hash": "sha512-37yoTpjU+TSXb9OBYY5n78z/CqXh76KiQj9xsKxEdztzU9fRLmbWO5YqKxgCVGKlNdexppnbKTkwB3RipVri8w=="
+        "version": "5.2.1",
+        "packageName": "istanbul-lib-instrument",
+        "hash": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg=="
       }
     },
-    "npm:fast-levenshtein": {
+    "npm:@angular/core": {
       "type": "npm",
-      "name": "npm:fast-levenshtein",
+      "name": "npm:@angular/core",
       "data": {
-        "version": "2.0.6",
-        "packageName": "fast-levenshtein",
-        "hash": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
+        "version": "17.0.3",
+        "packageName": "@angular/core",
+        "hash": "sha512-zY4yhPiphuktrodaM+GiP8G07qnUlmwKElLjYazeIR8A+kF51RQRpSf/pWe5M0uJIn5Oja+RdO9kzhDI9QvOcA=="
       }
     },
-    "npm:minipass-flush": {
+    "npm:@material/tooltip": {
       "type": "npm",
-      "name": "npm:minipass-flush",
+      "name": "npm:@material/tooltip",
       "data": {
-        "version": "1.0.5",
-        "packageName": "minipass-flush",
-        "hash": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/tooltip",
+        "hash": "sha512-Ja2Z4aZQkYWD6InXA+MG4M9zdKR6dYsXXlYzQppYpfcQzXylZqh5Y7WBLulG5fA2o83pHVwILfwFZM7j7ht08Q=="
       }
     },
     "npm:cliui": {
@@ -6521,472 +6611,472 @@
         "hash": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="
       }
     },
-    "npm:karma-chrome-launcher": {
+    "npm:babel-preset-jest": {
       "type": "npm",
-      "name": "npm:karma-chrome-launcher",
-      "data": {
-        "version": "3.2.0",
-        "packageName": "karma-chrome-launcher",
-        "hash": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q=="
+      "name": "npm:babel-preset-jest",
+      "data": {
+        "version": "29.6.3",
+        "packageName": "babel-preset-jest",
+        "hash": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA=="
       }
     },
-    "npm:v8-to-istanbul": {
+    "npm:errno": {
       "type": "npm",
-      "name": "npm:v8-to-istanbul",
+      "name": "npm:errno",
       "data": {
-        "version": "9.1.3",
-        "packageName": "v8-to-istanbul",
-        "hash": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg=="
+        "version": "0.1.8",
+        "packageName": "errno",
+        "hash": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A=="
       }
     },
-    "npm:micromark-util-normalize-identifier": {
+    "npm:node-int64": {
       "type": "npm",
-      "name": "npm:micromark-util-normalize-identifier",
+      "name": "npm:node-int64",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-normalize-identifier",
-        "hash": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q=="
+        "version": "0.4.0",
+        "packageName": "node-int64",
+        "hash": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
       }
     },
-    "npm:d3-transition": {
+    "npm:postcss": {
       "type": "npm",
-      "name": "npm:d3-transition",
+      "name": "npm:postcss",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-transition",
-        "hash": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="
+        "version": "8.4.31",
+        "packageName": "postcss",
+        "hash": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="
       }
     },
-    "npm:@babel/plugin-syntax-object-rest-spread": {
+    "npm:copy-webpack-plugin@10.2.4": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-object-rest-spread",
+      "name": "npm:copy-webpack-plugin@10.2.4",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-object-rest-spread",
-        "hash": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA=="
+        "version": "10.2.4",
+        "packageName": "copy-webpack-plugin",
+        "hash": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg=="
       }
     },
-    "npm:@webassemblyjs/floating-point-hex-parser": {
+    "npm:@jest/test-sequencer": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/floating-point-hex-parser",
+      "name": "npm:@jest/test-sequencer",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/floating-point-hex-parser",
-        "hash": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw=="
+        "version": "29.7.0",
+        "packageName": "@jest/test-sequencer",
+        "hash": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw=="
       }
     },
-    "npm:axios@0.21.4": {
+    "npm:@jridgewell/source-map": {
       "type": "npm",
-      "name": "npm:axios@0.21.4",
+      "name": "npm:@jridgewell/source-map",
       "data": {
-        "version": "0.21.4",
-        "packageName": "axios",
-        "hash": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg=="
+        "version": "0.3.5",
+        "packageName": "@jridgewell/source-map",
+        "hash": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ=="
       }
     },
-    "npm:dotenv-expand": {
+    "npm:marked": {
       "type": "npm",
-      "name": "npm:dotenv-expand",
+      "name": "npm:marked",
       "data": {
-        "version": "10.0.0",
-        "packageName": "dotenv-expand",
-        "hash": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A=="
+        "version": "9.0.0",
+        "packageName": "marked",
+        "hash": "sha512-37yoTpjU+TSXb9OBYY5n78z/CqXh76KiQj9xsKxEdztzU9fRLmbWO5YqKxgCVGKlNdexppnbKTkwB3RipVri8w=="
       }
     },
-    "npm:@material/auto-init": {
+    "npm:micromark": {
       "type": "npm",
-      "name": "npm:@material/auto-init",
+      "name": "npm:micromark",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/auto-init",
-        "hash": "sha512-0QfmjT5elQ10hCxToVgq/WaC3301tVH1sJaO3O2yocVzr7s6iWm8/zch16V5hcHzQHbtcT3Rf4y1ZzmdNys2Iw=="
+        "version": "3.2.0",
+        "packageName": "micromark",
+        "hash": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA=="
       }
     },
-    "npm:@ljharb/through": {
+    "npm:path-parse": {
       "type": "npm",
-      "name": "npm:@ljharb/through",
+      "name": "npm:path-parse",
       "data": {
-        "version": "2.3.11",
-        "packageName": "@ljharb/through",
-        "hash": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w=="
+        "version": "1.0.7",
+        "packageName": "path-parse",
+        "hash": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
       }
     },
-    "npm:lodash": {
+    "npm:browser-sync-ui": {
       "type": "npm",
-      "name": "npm:lodash",
+      "name": "npm:browser-sync-ui",
       "data": {
-        "version": "4.17.21",
-        "packageName": "lodash",
-        "hash": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+        "version": "2.29.3",
+        "packageName": "browser-sync-ui",
+        "hash": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg=="
       }
     },
-    "npm:nice-napi": {
+    "npm:@esbuild/linux-arm64": {
       "type": "npm",
-      "name": "npm:nice-napi",
+      "name": "npm:@esbuild/linux-arm64",
       "data": {
-        "version": "1.0.2",
-        "packageName": "nice-napi",
-        "hash": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-arm64",
+        "hash": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA=="
       }
     },
-    "npm:hdr-histogram-percentiles-obj": {
+    "npm:autoprefixer": {
       "type": "npm",
-      "name": "npm:hdr-histogram-percentiles-obj",
+      "name": "npm:autoprefixer",
       "data": {
-        "version": "3.0.0",
-        "packageName": "hdr-histogram-percentiles-obj",
-        "hash": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw=="
+        "version": "10.4.16",
+        "packageName": "autoprefixer",
+        "hash": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ=="
       }
     },
-    "npm:@webassemblyjs/helper-wasm-bytecode": {
+    "npm:istanbul-lib-coverage": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/helper-wasm-bytecode",
+      "name": "npm:istanbul-lib-coverage",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/helper-wasm-bytecode",
-        "hash": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="
+        "version": "3.2.0",
+        "packageName": "istanbul-lib-coverage",
+        "hash": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw=="
       }
     },
-    "npm:semver@6.3.1": {
+    "npm:jsonc-parser": {
       "type": "npm",
-      "name": "npm:semver@6.3.1",
+      "name": "npm:jsonc-parser",
       "data": {
-        "version": "6.3.1",
-        "packageName": "semver",
-        "hash": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
+        "version": "3.2.0",
+        "packageName": "jsonc-parser",
+        "hash": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
       }
     },
-    "npm:@nx/angular": {
+    "npm:jest-haste-map": {
       "type": "npm",
-      "name": "npm:@nx/angular",
+      "name": "npm:jest-haste-map",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/angular",
-        "hash": "sha512-qHJpeTQTJLMiDnC5hC/JC7NEYKgcyTwqx/ejyPlDjdzNbicgoPuTr4+c5gohC1wgZvuiW0bQ3FYQ2f9LVM7jRQ=="
+        "version": "29.7.0",
+        "packageName": "jest-haste-map",
+        "hash": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA=="
       }
     },
-    "npm:cose-base@2.2.0": {
+    "npm:promise-inflight": {
       "type": "npm",
-      "name": "npm:cose-base@2.2.0",
+      "name": "npm:promise-inflight",
       "data": {
-        "version": "2.2.0",
-        "packageName": "cose-base",
-        "hash": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="
+        "version": "1.0.1",
+        "packageName": "promise-inflight",
+        "hash": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
       }
     },
-    "npm:glob-to-regexp": {
+    "npm:hosted-git-info": {
       "type": "npm",
-      "name": "npm:glob-to-regexp",
+      "name": "npm:hosted-git-info",
       "data": {
-        "version": "0.4.1",
-        "packageName": "glob-to-regexp",
-        "hash": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
+        "version": "7.0.1",
+        "packageName": "hosted-git-info",
+        "hash": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA=="
       }
     },
-    "npm:globby@11.1.0": {
+    "npm:style-loader": {
       "type": "npm",
-      "name": "npm:globby@11.1.0",
+      "name": "npm:style-loader",
       "data": {
-        "version": "11.1.0",
-        "packageName": "globby",
-        "hash": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="
+        "version": "3.3.3",
+        "packageName": "style-loader",
+        "hash": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw=="
       }
     },
-    "npm:strip-ansi-cjs": {
+    "npm:is-plain-obj": {
       "type": "npm",
-      "name": "npm:strip-ansi-cjs",
+      "name": "npm:is-plain-obj",
       "data": {
-        "version": "npm:strip-ansi@6.0.1",
-        "packageName": "strip-ansi-cjs",
-        "hash": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
+        "version": "3.0.0",
+        "packageName": "is-plain-obj",
+        "hash": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
       }
     },
-    "npm:babel-plugin-polyfill-regenerator": {
+    "npm:merge-descriptors": {
       "type": "npm",
-      "name": "npm:babel-plugin-polyfill-regenerator",
+      "name": "npm:merge-descriptors",
       "data": {
-        "version": "0.5.3",
-        "packageName": "babel-plugin-polyfill-regenerator",
-        "hash": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw=="
+        "version": "1.0.1",
+        "packageName": "merge-descriptors",
+        "hash": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
       }
     },
-    "npm:immediate": {
+    "npm:socks-proxy-agent": {
       "type": "npm",
-      "name": "npm:immediate",
+      "name": "npm:socks-proxy-agent",
       "data": {
-        "version": "3.0.6",
-        "packageName": "immediate",
-        "hash": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+        "version": "8.0.2",
+        "packageName": "socks-proxy-agent",
+        "hash": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="
       }
     },
-    "npm:define-lazy-prop": {
+    "npm:d3-shape@1.3.7": {
       "type": "npm",
-      "name": "npm:define-lazy-prop",
+      "name": "npm:d3-shape@1.3.7",
       "data": {
-        "version": "2.0.0",
-        "packageName": "define-lazy-prop",
-        "hash": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
+        "version": "1.3.7",
+        "packageName": "d3-shape",
+        "hash": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="
       }
     },
-    "npm:jsonc-parser": {
+    "npm:jest-pnp-resolver": {
       "type": "npm",
-      "name": "npm:jsonc-parser",
+      "name": "npm:jest-pnp-resolver",
       "data": {
-        "version": "3.2.0",
-        "packageName": "jsonc-parser",
-        "hash": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
+        "version": "1.2.3",
+        "packageName": "jest-pnp-resolver",
+        "hash": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w=="
       }
     },
-    "npm:@babel/parser": {
+    "npm:fast-deep-equal": {
       "type": "npm",
-      "name": "npm:@babel/parser",
+      "name": "npm:fast-deep-equal",
       "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/parser",
-        "hash": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
+        "version": "3.1.3",
+        "packageName": "fast-deep-equal",
+        "hash": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
       }
     },
-    "npm:lru-cache": {
+    "npm:basic-auth": {
       "type": "npm",
-      "name": "npm:lru-cache",
+      "name": "npm:basic-auth",
       "data": {
-        "version": "5.1.1",
-        "packageName": "lru-cache",
-        "hash": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="
+        "version": "2.0.1",
+        "packageName": "basic-auth",
+        "hash": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg=="
       }
     },
-    "npm:lines-and-columns@2.0.3": {
+    "npm:collect-v8-coverage": {
       "type": "npm",
-      "name": "npm:lines-and-columns@2.0.3",
+      "name": "npm:collect-v8-coverage",
       "data": {
-        "version": "2.0.3",
-        "packageName": "lines-and-columns",
-        "hash": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w=="
+        "version": "1.0.2",
+        "packageName": "collect-v8-coverage",
+        "hash": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q=="
       }
     },
-    "npm:npm-package-arg": {
+    "npm:optionator": {
       "type": "npm",
-      "name": "npm:npm-package-arg",
+      "name": "npm:optionator",
       "data": {
-        "version": "11.0.1",
-        "packageName": "npm-package-arg",
-        "hash": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ=="
+        "version": "0.9.3",
+        "packageName": "optionator",
+        "hash": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg=="
       }
     },
-    "npm:@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+    "npm:webpack": {
       "type": "npm",
-      "name": "npm:@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
+      "name": "npm:webpack",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
-        "hash": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg=="
+        "version": "5.89.0",
+        "packageName": "webpack",
+        "hash": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw=="
       }
     },
-    "npm:d3-path": {
+    "npm:minimalistic-assert": {
       "type": "npm",
-      "name": "npm:d3-path",
+      "name": "npm:minimalistic-assert",
       "data": {
-        "version": "3.1.0",
-        "packageName": "d3-path",
-        "hash": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="
+        "version": "1.0.1",
+        "packageName": "minimalistic-assert",
+        "hash": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
       }
     },
-    "npm:flatted": {
+    "npm:shallow-clone": {
       "type": "npm",
-      "name": "npm:flatted",
+      "name": "npm:shallow-clone",
       "data": {
-        "version": "3.2.9",
-        "packageName": "flatted",
-        "hash": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
+        "version": "3.0.1",
+        "packageName": "shallow-clone",
+        "hash": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="
       }
     },
-    "npm:eastasianwidth": {
+    "npm:safer-buffer": {
       "type": "npm",
-      "name": "npm:eastasianwidth",
+      "name": "npm:safer-buffer",
       "data": {
-        "version": "0.2.0",
-        "packageName": "eastasianwidth",
-        "hash": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+        "version": "2.1.2",
+        "packageName": "safer-buffer",
+        "hash": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
       }
     },
-    "npm:@jest/test-sequencer": {
+    "npm:@types/json-schema": {
       "type": "npm",
-      "name": "npm:@jest/test-sequencer",
+      "name": "npm:@types/json-schema",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/test-sequencer",
-        "hash": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw=="
+        "version": "7.0.14",
+        "packageName": "@types/json-schema",
+        "hash": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw=="
       }
     },
-    "npm:fs-minipass": {
+    "npm:d3-geo": {
       "type": "npm",
-      "name": "npm:fs-minipass",
+      "name": "npm:d3-geo",
       "data": {
-        "version": "3.0.3",
-        "packageName": "fs-minipass",
-        "hash": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="
+        "version": "3.1.0",
+        "packageName": "d3-geo",
+        "hash": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA=="
       }
     },
-    "npm:micromark-core-commonmark": {
+    "npm:good-listener": {
       "type": "npm",
-      "name": "npm:micromark-core-commonmark",
+      "name": "npm:good-listener",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-core-commonmark",
-        "hash": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw=="
+        "version": "1.2.2",
+        "packageName": "good-listener",
+        "hash": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw=="
       }
     },
-    "npm:tmpl": {
+    "npm:@jridgewell/sourcemap-codec": {
       "type": "npm",
-      "name": "npm:tmpl",
+      "name": "npm:@jridgewell/sourcemap-codec",
       "data": {
-        "version": "1.0.5",
-        "packageName": "tmpl",
-        "hash": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
+        "version": "1.4.15",
+        "packageName": "@jridgewell/sourcemap-codec",
+        "hash": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
       }
     },
-    "npm:uvu": {
+    "npm:cosmiconfig": {
       "type": "npm",
-      "name": "npm:uvu",
+      "name": "npm:cosmiconfig",
       "data": {
-        "version": "0.5.6",
-        "packageName": "uvu",
-        "hash": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA=="
+        "version": "8.3.6",
+        "packageName": "cosmiconfig",
+        "hash": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA=="
       }
     },
-    "npm:@material/icon-button": {
+    "npm:@nrwl/webpack": {
       "type": "npm",
-      "name": "npm:@material/icon-button",
+      "name": "npm:@nrwl/webpack",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/icon-button",
-        "hash": "sha512-Igyo94rkIlqC91BR1Tv+WLTz1ZWcZZjl1xU7Vsx8mbWA1PnaRDUTNVV5LFi4e0ORp6GSblFTImpHngEy4agMEg=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/webpack",
+        "hash": "sha512-D8+tuyb5v56mTiX6absMoxSkSbNgjp593P4GHHu5bCaCYGMI1Rj8CYwakFIXaxaLzguBtoqC+6L2OxAQ1OwB1g=="
       }
     },
-    "npm:@types/json-schema": {
+    "npm:string_decoder": {
       "type": "npm",
-      "name": "npm:@types/json-schema",
+      "name": "npm:string_decoder",
       "data": {
-        "version": "7.0.14",
-        "packageName": "@types/json-schema",
-        "hash": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw=="
+        "version": "1.3.0",
+        "packageName": "string_decoder",
+        "hash": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="
       }
     },
-    "npm:minipass@5.0.0": {
+    "npm:@material/rtl": {
       "type": "npm",
-      "name": "npm:minipass@5.0.0",
+      "name": "npm:@material/rtl",
       "data": {
-        "version": "5.0.0",
-        "packageName": "minipass",
-        "hash": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/rtl",
+        "hash": "sha512-pgJFw8ZRpWGpwv7ZuBTJ+WdNmFBKoLVoMbbxKQWTHXVwhAqn3aoIq95o62T5QeEG/+sguNShdquG45CpAMmSRw=="
       }
     },
-    "npm:postcss-loader@6.2.1": {
+    "npm:iconv-lite@0.6.3": {
       "type": "npm",
-      "name": "npm:postcss-loader@6.2.1",
+      "name": "npm:iconv-lite@0.6.3",
       "data": {
-        "version": "6.2.1",
-        "packageName": "postcss-loader",
-        "hash": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q=="
+        "version": "0.6.3",
+        "packageName": "iconv-lite",
+        "hash": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="
       }
     },
-    "npm:@esbuild/freebsd-x64": {
+    "npm:statuses": {
       "type": "npm",
-      "name": "npm:@esbuild/freebsd-x64",
+      "name": "npm:statuses",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/freebsd-x64",
-        "hash": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ=="
+        "version": "1.5.0",
+        "packageName": "statuses",
+        "hash": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
       }
     },
-    "npm:@babel/plugin-syntax-unicode-sets-regex": {
+    "npm:@babel/plugin-transform-for-of": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-unicode-sets-regex",
+      "name": "npm:@babel/plugin-transform-for-of",
       "data": {
-        "version": "7.18.6",
-        "packageName": "@babel/plugin-syntax-unicode-sets-regex",
-        "hash": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg=="
+        "version": "7.22.15",
+        "packageName": "@babel/plugin-transform-for-of",
+        "hash": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA=="
       }
     },
-    "npm:balanced-match": {
+    "npm:hdr-histogram-percentiles-obj": {
       "type": "npm",
-      "name": "npm:balanced-match",
+      "name": "npm:hdr-histogram-percentiles-obj",
       "data": {
-        "version": "1.0.2",
-        "packageName": "balanced-match",
-        "hash": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+        "version": "3.0.0",
+        "packageName": "hdr-histogram-percentiles-obj",
+        "hash": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw=="
       }
     },
-    "npm:minimist": {
+    "npm:setprototypeof@1.1.0": {
       "type": "npm",
-      "name": "npm:minimist",
+      "name": "npm:setprototypeof@1.1.0",
       "data": {
-        "version": "1.2.8",
-        "packageName": "minimist",
-        "hash": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+        "version": "1.1.0",
+        "packageName": "setprototypeof",
+        "hash": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
       }
     },
-    "npm:supports-preserve-symlinks-flag": {
+    "npm:@jridgewell/set-array": {
       "type": "npm",
-      "name": "npm:supports-preserve-symlinks-flag",
+      "name": "npm:@jridgewell/set-array",
       "data": {
-        "version": "1.0.0",
-        "packageName": "supports-preserve-symlinks-flag",
-        "hash": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+        "version": "1.1.2",
+        "packageName": "@jridgewell/set-array",
+        "hash": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
       }
     },
-    "npm:@esbuild/linux-x64": {
+    "npm:@jest/reporters": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-x64",
+      "name": "npm:@jest/reporters",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-x64",
-        "hash": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A=="
+        "version": "29.7.0",
+        "packageName": "@jest/reporters",
+        "hash": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg=="
       }
     },
-    "npm:@isaacs/cliui": {
+    "npm:@babel/plugin-transform-private-methods": {
       "type": "npm",
-      "name": "npm:@isaacs/cliui",
+      "name": "npm:@babel/plugin-transform-private-methods",
       "data": {
-        "version": "8.0.2",
-        "packageName": "@isaacs/cliui",
-        "hash": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-private-methods",
+        "hash": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA=="
       }
     },
-    "npm:serve-static@1.13.2": {
+    "npm:@material/circular-progress": {
       "type": "npm",
-      "name": "npm:serve-static@1.13.2",
+      "name": "npm:@material/circular-progress",
       "data": {
-        "version": "1.13.2",
-        "packageName": "serve-static",
-        "hash": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/circular-progress",
+        "hash": "sha512-+QTfyExPWzgm2tqMInd32qQOftsC1b8MUhAhZSfuecYBfqAc7KZkQEKa2nm4y8EHKMFWe8/DcxLV6IxMBLgHwA=="
       }
     },
-    "npm:supports-color@8.1.1": {
+    "npm:dequal": {
       "type": "npm",
-      "name": "npm:supports-color@8.1.1",
+      "name": "npm:dequal",
       "data": {
-        "version": "8.1.1",
-        "packageName": "supports-color",
-        "hash": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="
+        "version": "2.0.3",
+        "packageName": "dequal",
+        "hash": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
       }
     },
-    "npm:@angular-devkit/architect": {
+    "npm:@babel/plugin-syntax-top-level-await": {
       "type": "npm",
-      "name": "npm:@angular-devkit/architect",
+      "name": "npm:@babel/plugin-syntax-top-level-await",
       "data": {
-        "version": "0.1700.1",
-        "packageName": "@angular-devkit/architect",
-        "hash": "sha512-w84luzQNRjlt7XxX3+jyzcwBBv3gAjjvFWTjN1E5mlpDCUXgYmQ3CMowFHeu0U06HD5Sapap9p2l6GoajuZK5Q=="
+        "version": "7.14.5",
+        "packageName": "@babel/plugin-syntax-top-level-await",
+        "hash": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw=="
       }
     },
-    "npm:@sigstore/protobuf-specs": {
+    "npm:cosmiconfig@7.1.0": {
       "type": "npm",
-      "name": "npm:@sigstore/protobuf-specs",
+      "name": "npm:cosmiconfig@7.1.0",
       "data": {
-        "version": "0.2.1",
-        "packageName": "@sigstore/protobuf-specs",
-        "hash": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A=="
+        "version": "7.1.0",
+        "packageName": "cosmiconfig",
+        "hash": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="
       }
     },
     "npm:regenerator-transform": {
@@ -6998,877 +7088,895 @@
         "hash": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg=="
       }
     },
-    "npm:postcss-minify-font-values": {
+    "npm:resp-modifier": {
       "type": "npm",
-      "name": "npm:postcss-minify-font-values",
+      "name": "npm:resp-modifier",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-minify-font-values",
-        "hash": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA=="
+        "version": "6.0.2",
+        "packageName": "resp-modifier",
+        "hash": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw=="
       }
     },
-    "npm:strong-log-transformer": {
+    "npm:@material/banner": {
       "type": "npm",
-      "name": "npm:strong-log-transformer",
+      "name": "npm:@material/banner",
       "data": {
-        "version": "2.1.0",
-        "packageName": "strong-log-transformer",
-        "hash": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/banner",
+        "hash": "sha512-PBLgH7JEbEpTkLy33oyWXUhIFmSsdOrR6Gn6qIgQRo1qrnk5RSBGW2gEq4Z6793vjxM107gKudDb23E4Fcu4vg=="
       }
     },
-    "npm:resolve-from": {
+    "npm:@babel/plugin-syntax-optional-chaining": {
       "type": "npm",
-      "name": "npm:resolve-from",
+      "name": "npm:@babel/plugin-syntax-optional-chaining",
       "data": {
-        "version": "5.0.0",
-        "packageName": "resolve-from",
-        "hash": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-optional-chaining",
+        "hash": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg=="
       }
     },
-    "npm:has-property-descriptors": {
+    "npm:less@4.1.3": {
       "type": "npm",
-      "name": "npm:has-property-descriptors",
+      "name": "npm:less@4.1.3",
       "data": {
-        "version": "1.0.1",
-        "packageName": "has-property-descriptors",
-        "hash": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg=="
+        "version": "4.1.3",
+        "packageName": "less",
+        "hash": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA=="
       }
     },
-    "npm:schema-utils@3.3.0": {
+    "npm:minimatch@3.0.5": {
       "type": "npm",
-      "name": "npm:schema-utils@3.3.0",
+      "name": "npm:minimatch@3.0.5",
       "data": {
-        "version": "3.3.0",
-        "packageName": "schema-utils",
-        "hash": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg=="
+        "version": "3.0.5",
+        "packageName": "minimatch",
+        "hash": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw=="
       }
     },
-    "npm:duplexer": {
+    "npm:uvu": {
       "type": "npm",
-      "name": "npm:duplexer",
+      "name": "npm:uvu",
       "data": {
-        "version": "0.1.2",
-        "packageName": "duplexer",
-        "hash": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
+        "version": "0.5.6",
+        "packageName": "uvu",
+        "hash": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA=="
       }
     },
-    "npm:clipboard": {
+    "npm:d3-random": {
       "type": "npm",
-      "name": "npm:clipboard",
+      "name": "npm:d3-random",
       "data": {
-        "version": "2.0.11",
-        "packageName": "clipboard",
-        "hash": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw=="
+        "version": "3.0.1",
+        "packageName": "d3-random",
+        "hash": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="
       }
     },
-    "npm:@esbuild/win32-x64": {
+    "npm:@babel/plugin-transform-computed-properties": {
       "type": "npm",
-      "name": "npm:@esbuild/win32-x64",
+      "name": "npm:@babel/plugin-transform-computed-properties",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/win32-x64",
-        "hash": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-computed-properties",
+        "hash": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg=="
       }
     },
-    "npm:@babel/plugin-proposal-private-property-in-object": {
+    "npm:strip-ansi@7.1.0": {
       "type": "npm",
-      "name": "npm:@babel/plugin-proposal-private-property-in-object",
+      "name": "npm:strip-ansi@7.1.0",
       "data": {
-        "version": "7.21.0-placeholder-for-preset-env.2",
-        "packageName": "@babel/plugin-proposal-private-property-in-object",
-        "hash": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w=="
+        "version": "7.1.0",
+        "packageName": "strip-ansi",
+        "hash": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="
       }
     },
-    "npm:istanbul-lib-source-maps": {
+    "npm:color-name": {
       "type": "npm",
-      "name": "npm:istanbul-lib-source-maps",
+      "name": "npm:color-name",
       "data": {
-        "version": "4.0.1",
-        "packageName": "istanbul-lib-source-maps",
-        "hash": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw=="
+        "version": "1.1.3",
+        "packageName": "color-name",
+        "hash": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
       }
     },
-    "npm:sax@1.2.4": {
+    "npm:babel-plugin-polyfill-corejs3": {
       "type": "npm",
-      "name": "npm:sax@1.2.4",
+      "name": "npm:babel-plugin-polyfill-corejs3",
       "data": {
-        "version": "1.2.4",
-        "packageName": "sax",
-        "hash": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+        "version": "0.8.6",
+        "packageName": "babel-plugin-polyfill-corejs3",
+        "hash": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ=="
       }
     },
-    "npm:jiti": {
+    "npm:css-what": {
       "type": "npm",
-      "name": "npm:jiti",
+      "name": "npm:css-what",
       "data": {
-        "version": "1.20.0",
-        "packageName": "jiti",
-        "hash": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA=="
+        "version": "6.1.0",
+        "packageName": "css-what",
+        "hash": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
       }
     },
-    "npm:@jest/reporters": {
+    "npm:istanbul-lib-report": {
       "type": "npm",
-      "name": "npm:@jest/reporters",
+      "name": "npm:istanbul-lib-report",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/reporters",
-        "hash": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg=="
+        "version": "3.0.1",
+        "packageName": "istanbul-lib-report",
+        "hash": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw=="
       }
     },
-    "npm:signal-exit": {
+    "npm:istanbul-reports": {
       "type": "npm",
-      "name": "npm:signal-exit",
+      "name": "npm:istanbul-reports",
       "data": {
-        "version": "3.0.7",
-        "packageName": "signal-exit",
-        "hash": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+        "version": "3.1.6",
+        "packageName": "istanbul-reports",
+        "hash": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg=="
       }
     },
-    "npm:@typescript-eslint/utils": {
+    "npm:@babel/plugin-transform-typeof-symbol": {
       "type": "npm",
-      "name": "npm:@typescript-eslint/utils",
+      "name": "npm:@babel/plugin-transform-typeof-symbol",
       "data": {
-        "version": "6.11.0",
-        "packageName": "@typescript-eslint/utils",
-        "hash": "sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-typeof-symbol",
+        "hash": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA=="
       }
     },
-    "npm:json-stable-stringify-without-jsonify": {
+    "npm:@babel/helper-split-export-declaration": {
       "type": "npm",
-      "name": "npm:json-stable-stringify-without-jsonify",
+      "name": "npm:@babel/helper-split-export-declaration",
       "data": {
-        "version": "1.0.1",
-        "packageName": "json-stable-stringify-without-jsonify",
-        "hash": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
+        "version": "7.22.6",
+        "packageName": "@babel/helper-split-export-declaration",
+        "hash": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g=="
       }
     },
-    "npm:postcss-ordered-values": {
+    "npm:bonjour-service": {
       "type": "npm",
-      "name": "npm:postcss-ordered-values",
+      "name": "npm:bonjour-service",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-ordered-values",
-        "hash": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg=="
+        "version": "1.1.1",
+        "packageName": "bonjour-service",
+        "hash": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg=="
       }
     },
-    "npm:faye-websocket": {
+    "npm:@jest/fake-timers": {
       "type": "npm",
-      "name": "npm:faye-websocket",
+      "name": "npm:@jest/fake-timers",
       "data": {
-        "version": "0.11.4",
-        "packageName": "faye-websocket",
-        "hash": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g=="
+        "version": "29.7.0",
+        "packageName": "@jest/fake-timers",
+        "hash": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ=="
       }
     },
-    "npm:jest-docblock": {
+    "npm:@nx/nx-win32-x64-msvc@17.1.2": {
       "type": "npm",
-      "name": "npm:jest-docblock",
+      "name": "npm:@nx/nx-win32-x64-msvc@17.1.2",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-docblock",
-        "hash": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-win32-x64-msvc",
+        "hash": "sha512-oxKCKunuo4wRusMlNu7PlhBijhtNy7eBZPAWyqUsdfnb+CjY2QncjCguW3fnsG9gHQFCa+y0b1WkSkvJ5G1DiQ=="
       }
     },
-    "npm:@babel/highlight": {
+    "npm:babel-plugin-macros@3.1.0": {
       "type": "npm",
-      "name": "npm:@babel/highlight",
+      "name": "npm:babel-plugin-macros@3.1.0",
       "data": {
-        "version": "7.22.20",
-        "packageName": "@babel/highlight",
-        "hash": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg=="
+        "version": "3.1.0",
+        "packageName": "babel-plugin-macros",
+        "hash": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="
       }
     },
-    "npm:@trysound/sax": {
+    "npm:cjs-module-lexer": {
       "type": "npm",
-      "name": "npm:@trysound/sax",
+      "name": "npm:cjs-module-lexer",
       "data": {
-        "version": "0.2.0",
-        "packageName": "@trysound/sax",
-        "hash": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
+        "version": "1.2.3",
+        "packageName": "cjs-module-lexer",
+        "hash": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ=="
       }
     },
-    "npm:keyv": {
+    "npm:faye-websocket": {
       "type": "npm",
-      "name": "npm:keyv",
+      "name": "npm:faye-websocket",
       "data": {
-        "version": "4.5.4",
-        "packageName": "keyv",
-        "hash": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="
+        "version": "0.11.4",
+        "packageName": "faye-websocket",
+        "hash": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g=="
       }
     },
-    "npm:spdy": {
+    "npm:identity-obj-proxy": {
       "type": "npm",
-      "name": "npm:spdy",
+      "name": "npm:identity-obj-proxy",
       "data": {
-        "version": "4.0.2",
-        "packageName": "spdy",
-        "hash": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA=="
+        "version": "3.0.0",
+        "packageName": "identity-obj-proxy",
+        "hash": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA=="
       }
     },
-    "npm:buffer": {
+    "npm:schema-utils": {
       "type": "npm",
-      "name": "npm:buffer",
+      "name": "npm:schema-utils",
       "data": {
-        "version": "5.7.1",
-        "packageName": "buffer",
-        "hash": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="
+        "version": "4.2.0",
+        "packageName": "schema-utils",
+        "hash": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw=="
       }
     },
-    "npm:indent-string": {
+    "npm:uuid": {
       "type": "npm",
-      "name": "npm:indent-string",
+      "name": "npm:uuid",
+      "data": {
+        "version": "8.3.2",
+        "packageName": "uuid",
+        "hash": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+      }
+    },
+    "npm:micromark-factory-label": {
+      "type": "npm",
+      "name": "npm:micromark-factory-label",
       "data": {
-        "version": "4.0.0",
-        "packageName": "indent-string",
-        "hash": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
+        "version": "1.1.0",
+        "packageName": "micromark-factory-label",
+        "hash": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w=="
       }
     },
-    "npm:@babel/preset-env": {
+    "npm:@floating-ui/dom": {
       "type": "npm",
-      "name": "npm:@babel/preset-env",
+      "name": "npm:@floating-ui/dom",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/preset-env",
-        "hash": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ=="
+        "version": "1.5.1",
+        "packageName": "@floating-ui/dom",
+        "hash": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw=="
       }
     },
-    "npm:corser": {
+    "npm:micromatch": {
       "type": "npm",
-      "name": "npm:corser",
+      "name": "npm:micromatch",
       "data": {
-        "version": "2.0.1",
-        "packageName": "corser",
-        "hash": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ=="
+        "version": "4.0.5",
+        "packageName": "micromatch",
+        "hash": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA=="
       }
     },
-    "npm:is-lambda": {
+    "npm:@material/floating-label": {
       "type": "npm",
-      "name": "npm:is-lambda",
+      "name": "npm:@material/floating-label",
       "data": {
-        "version": "1.0.1",
-        "packageName": "is-lambda",
-        "hash": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/floating-label",
+        "hash": "sha512-832qZ/qxKx0KUatoeVY3Q2NmboVgiWBG0/1VsbJyodHrgQWfnBOHgLE+M322o6uM3OhvO+kWm4iYbvwhmLZGsw=="
       }
     },
-    "npm:@ng-bootstrap/ng-bootstrap": {
+    "npm:get-stream": {
       "type": "npm",
-      "name": "npm:@ng-bootstrap/ng-bootstrap",
+      "name": "npm:get-stream",
       "data": {
-        "version": "16.0.0-rc.2",
-        "packageName": "@ng-bootstrap/ng-bootstrap",
-        "hash": "sha512-XQUOr6OfAYA9FK1e9tsKJiuKYGkNeO3vCkbCryWDWZzWaehvOWLcB214RUVBeoxynd4c/n2PmQRGnKcJLTAeSA=="
+        "version": "6.0.1",
+        "packageName": "get-stream",
+        "hash": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
       }
     },
-    "npm:@angular/router": {
+    "npm:array-flatten@1.1.1": {
       "type": "npm",
-      "name": "npm:@angular/router",
+      "name": "npm:array-flatten@1.1.1",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/router",
-        "hash": "sha512-zw31XXMqLJ1CcHxDtEl2/FTJXeRbbnLM8oHtCPzbbxTkhAlnXxSYxjds0+1IMmpzz/v9qGBhYvUt8ZfZhqDBHQ=="
+        "version": "1.1.1",
+        "packageName": "array-flatten",
+        "hash": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
       }
     },
-    "npm:@jridgewell/gen-mapping": {
+    "npm:readable-stream": {
       "type": "npm",
-      "name": "npm:@jridgewell/gen-mapping",
+      "name": "npm:readable-stream",
       "data": {
-        "version": "0.3.3",
-        "packageName": "@jridgewell/gen-mapping",
-        "hash": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ=="
+        "version": "3.6.2",
+        "packageName": "readable-stream",
+        "hash": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="
       }
     },
-    "npm:@nx/nx-linux-x64-gnu": {
+    "npm:color-name@1.1.4": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-x64-gnu",
+      "name": "npm:color-name@1.1.4",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-linux-x64-gnu",
-        "hash": "sha512-PISrHjLTxv5w8bz50vPZH6puYos88xu28o4IbVyYWrUrhoFsAx9Zbn1D6gWDPMSaKJU32v1l+5bTciQjQJU8fQ=="
+        "version": "1.1.4",
+        "packageName": "color-name",
+        "hash": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
       }
     },
-    "npm:micromark-factory-space": {
+    "npm:glob@7.1.4": {
       "type": "npm",
-      "name": "npm:micromark-factory-space",
+      "name": "npm:glob@7.1.4",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-factory-space",
-        "hash": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ=="
+        "version": "7.1.4",
+        "packageName": "glob",
+        "hash": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A=="
       }
     },
-    "npm:minimatch": {
+    "npm:once": {
       "type": "npm",
-      "name": "npm:minimatch",
+      "name": "npm:once",
       "data": {
-        "version": "3.1.2",
-        "packageName": "minimatch",
-        "hash": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
+        "version": "1.4.0",
+        "packageName": "once",
+        "hash": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
       }
     },
-    "npm:minipass": {
+    "npm:p-try": {
       "type": "npm",
-      "name": "npm:minipass",
+      "name": "npm:p-try",
       "data": {
-        "version": "7.0.4",
-        "packageName": "minipass",
-        "hash": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ=="
+        "version": "2.2.0",
+        "packageName": "p-try",
+        "hash": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
       }
     },
-    "npm:bser": {
+    "npm:picomatch@3.0.1": {
       "type": "npm",
-      "name": "npm:bser",
+      "name": "npm:picomatch@3.0.1",
       "data": {
-        "version": "2.1.1",
-        "packageName": "bser",
-        "hash": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ=="
+        "version": "3.0.1",
+        "packageName": "picomatch",
+        "hash": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag=="
       }
     },
-    "npm:safevalues": {
+    "npm:@babel/traverse": {
       "type": "npm",
-      "name": "npm:safevalues",
+      "name": "npm:@babel/traverse",
       "data": {
-        "version": "0.3.4",
-        "packageName": "safevalues",
-        "hash": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw=="
+        "version": "7.23.2",
+        "packageName": "@babel/traverse",
+        "hash": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw=="
       }
     },
-    "npm:webpack-sources": {
+    "npm:@material/slider": {
       "type": "npm",
-      "name": "npm:webpack-sources",
+      "name": "npm:@material/slider",
       "data": {
-        "version": "3.2.3",
-        "packageName": "webpack-sources",
-        "hash": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/slider",
+        "hash": "sha512-is1BSBpxaXBBv+wSVpe9WGWmWl59yJEeDNubTES2UFD0er3BmA+PdKkL09vvytDnBcbKf77TbxaRiUSGVaKUQA=="
       }
     },
-    "npm:supports-color@7.2.0": {
+    "npm:lines-and-columns@2.0.3": {
       "type": "npm",
-      "name": "npm:supports-color@7.2.0",
+      "name": "npm:lines-and-columns@2.0.3",
       "data": {
-        "version": "7.2.0",
-        "packageName": "supports-color",
-        "hash": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
+        "version": "2.0.3",
+        "packageName": "lines-and-columns",
+        "hash": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w=="
       }
     },
-    "npm:ua-parser-js": {
+    "npm:proxy-addr": {
       "type": "npm",
-      "name": "npm:ua-parser-js",
+      "name": "npm:proxy-addr",
       "data": {
-        "version": "0.7.36",
-        "packageName": "ua-parser-js",
-        "hash": "sha512-CPPLoCts2p7D8VbybttE3P2ylv0OBZEAy7a12DsulIEcAiMtWJy+PBgMXgWDI80D5UwqE8oQPHYnk13tm38M2Q=="
+        "version": "2.0.7",
+        "packageName": "proxy-addr",
+        "hash": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="
       }
     },
-    "npm:content-type": {
+    "npm:socket.io-adapter": {
       "type": "npm",
-      "name": "npm:content-type",
+      "name": "npm:socket.io-adapter",
       "data": {
-        "version": "1.0.5",
-        "packageName": "content-type",
-        "hash": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
+        "version": "2.5.2",
+        "packageName": "socket.io-adapter",
+        "hash": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA=="
       }
     },
-    "npm:human-signals": {
+    "npm:parse-node-version": {
       "type": "npm",
-      "name": "npm:human-signals",
+      "name": "npm:parse-node-version",
       "data": {
-        "version": "2.1.0",
-        "packageName": "human-signals",
-        "hash": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
+        "version": "1.0.1",
+        "packageName": "parse-node-version",
+        "hash": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
       }
     },
-    "npm:piscina": {
+    "npm:@babel/plugin-transform-shorthand-properties": {
       "type": "npm",
-      "name": "npm:piscina",
+      "name": "npm:@babel/plugin-transform-shorthand-properties",
       "data": {
-        "version": "4.1.0",
-        "packageName": "piscina",
-        "hash": "sha512-sjbLMi3sokkie+qmtZpkfMCUJTpbxJm/wvaPzU28vmYSsTSW8xk9JcFUsbqGJdtPpIQ9tuj+iDcTtgZjwnOSig=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-shorthand-properties",
+        "hash": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA=="
       }
     },
-    "npm:postcss": {
+    "npm:socket.io-parser": {
       "type": "npm",
-      "name": "npm:postcss",
+      "name": "npm:socket.io-parser",
       "data": {
-        "version": "8.4.31",
-        "packageName": "postcss",
-        "hash": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="
+        "version": "4.2.4",
+        "packageName": "socket.io-parser",
+        "hash": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew=="
       }
     },
-    "npm:@nx/cypress": {
+    "npm:stream-throttle": {
       "type": "npm",
-      "name": "npm:@nx/cypress",
+      "name": "npm:stream-throttle",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/cypress",
-        "hash": "sha512-5UoGGTPPsckeFTyu79DjmatAb4npHCGYgcHDbebRZDqifB99LRTKa/ZxcWNFdUiwZp4Buig5QM5MnhkjyjYpZg=="
+        "version": "0.1.3",
+        "packageName": "stream-throttle",
+        "hash": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ=="
       }
     },
-    "npm:fork-ts-checker-webpack-plugin": {
+    "npm:@nx/nx-linux-x64-gnu": {
       "type": "npm",
-      "name": "npm:fork-ts-checker-webpack-plugin",
+      "name": "npm:@nx/nx-linux-x64-gnu",
       "data": {
-        "version": "7.2.13",
-        "packageName": "fork-ts-checker-webpack-plugin",
-        "hash": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-linux-x64-gnu",
+        "hash": "sha512-PISrHjLTxv5w8bz50vPZH6puYos88xu28o4IbVyYWrUrhoFsAx9Zbn1D6gWDPMSaKJU32v1l+5bTciQjQJU8fQ=="
       }
     },
-    "npm:babel-plugin-macros@3.1.0": {
+    "npm:@eslint/eslintrc": {
       "type": "npm",
-      "name": "npm:babel-plugin-macros@3.1.0",
+      "name": "npm:@eslint/eslintrc",
       "data": {
-        "version": "3.1.0",
-        "packageName": "babel-plugin-macros",
-        "hash": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="
+        "version": "2.1.3",
+        "packageName": "@eslint/eslintrc",
+        "hash": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA=="
       }
     },
-    "npm:get-caller-file": {
+    "npm:p-retry": {
       "type": "npm",
-      "name": "npm:get-caller-file",
+      "name": "npm:p-retry",
       "data": {
-        "version": "2.0.5",
-        "packageName": "get-caller-file",
-        "hash": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+        "version": "4.6.2",
+        "packageName": "p-retry",
+        "hash": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="
       }
     },
-    "npm:karma-jasmine": {
+    "npm:find-cache-dir": {
       "type": "npm",
-      "name": "npm:karma-jasmine",
+      "name": "npm:find-cache-dir",
       "data": {
-        "version": "5.1.0",
-        "packageName": "karma-jasmine",
-        "hash": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ=="
+        "version": "4.0.0",
+        "packageName": "find-cache-dir",
+        "hash": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg=="
       }
     },
-    "npm:@babel/plugin-syntax-class-properties": {
+    "npm:@webassemblyjs/ast": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-class-properties",
+      "name": "npm:@webassemblyjs/ast",
       "data": {
-        "version": "7.12.13",
-        "packageName": "@babel/plugin-syntax-class-properties",
-        "hash": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/ast",
+        "hash": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q=="
       }
     },
-    "npm:mimic-fn": {
+    "npm:@tsconfig/node16": {
       "type": "npm",
-      "name": "npm:mimic-fn",
+      "name": "npm:@tsconfig/node16",
       "data": {
-        "version": "2.1.0",
-        "packageName": "mimic-fn",
-        "hash": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+        "version": "1.0.4",
+        "packageName": "@tsconfig/node16",
+        "hash": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="
       }
     },
-    "npm:immutable": {
+    "npm:statuses@1.3.1": {
       "type": "npm",
-      "name": "npm:immutable",
+      "name": "npm:statuses@1.3.1",
       "data": {
-        "version": "4.3.4",
-        "packageName": "immutable",
-        "hash": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA=="
+        "version": "1.3.1",
+        "packageName": "statuses",
+        "hash": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg=="
       }
     },
-    "npm:postcss-minify-gradients": {
+    "npm:@tsconfig/node10": {
       "type": "npm",
-      "name": "npm:postcss-minify-gradients",
+      "name": "npm:@tsconfig/node10",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-minify-gradients",
-        "hash": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA=="
+        "version": "1.0.9",
+        "packageName": "@tsconfig/node10",
+        "hash": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
       }
     },
-    "npm:terser-webpack-plugin": {
+    "npm:retry@0.13.1": {
       "type": "npm",
-      "name": "npm:terser-webpack-plugin",
+      "name": "npm:retry@0.13.1",
       "data": {
-        "version": "5.3.9",
-        "packageName": "terser-webpack-plugin",
-        "hash": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA=="
+        "version": "0.13.1",
+        "packageName": "retry",
+        "hash": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="
       }
     },
-    "npm:semver": {
+    "npm:@material/dialog": {
       "type": "npm",
-      "name": "npm:semver",
+      "name": "npm:@material/dialog",
       "data": {
-        "version": "7.5.4",
-        "packageName": "semver",
-        "hash": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/dialog",
+        "hash": "sha512-4lyxd+5ccOEMUGKzZcssaYyzkCsYTpYCSQSANR0toQPLv3voDwKMfA709uZI6+nL7Re6Xdf7jx8qe+QpTTjVcw=="
       }
     },
-    "npm:glob": {
+    "npm:cytoscape": {
       "type": "npm",
-      "name": "npm:glob",
+      "name": "npm:cytoscape",
       "data": {
-        "version": "7.2.3",
-        "packageName": "glob",
-        "hash": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
+        "version": "3.28.1",
+        "packageName": "cytoscape",
+        "hash": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg=="
       }
     },
-    "npm:collect-v8-coverage": {
+    "npm:@material/tokens": {
       "type": "npm",
-      "name": "npm:collect-v8-coverage",
+      "name": "npm:@material/tokens",
       "data": {
-        "version": "1.0.2",
-        "packageName": "collect-v8-coverage",
-        "hash": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/tokens",
+        "hash": "sha512-+5iGfQ51YSb0Qau8uC6/jHXCSC3enKaQKDf/iPHfuXAe04UznW3tmm1/Ju227aZXNISTJcnQYa2rpm1M14MeUg=="
       }
     },
-    "npm:cacache": {
+    "npm:@esbuild/freebsd-x64": {
       "type": "npm",
-      "name": "npm:cacache",
+      "name": "npm:@esbuild/freebsd-x64",
       "data": {
-        "version": "18.0.0",
-        "packageName": "cacache",
-        "hash": "sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/freebsd-x64",
+        "hash": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ=="
       }
     },
-    "npm:istanbul-lib-report": {
+    "npm:@material/feature-targeting": {
       "type": "npm",
-      "name": "npm:istanbul-lib-report",
+      "name": "npm:@material/feature-targeting",
       "data": {
-        "version": "3.0.1",
-        "packageName": "istanbul-lib-report",
-        "hash": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/feature-targeting",
+        "hash": "sha512-/SU9X5y8CRp6RS9qnjnM/N5qfsJ8bYILpR841eZmN6DLqMupaM9Yy7Mx8+v/QvpBLLhk+jmu79nFzwkwW54d6Q=="
       }
     },
-    "npm:@pkgjs/parseargs": {
+    "npm:csso": {
       "type": "npm",
-      "name": "npm:@pkgjs/parseargs",
+      "name": "npm:csso",
       "data": {
-        "version": "0.11.0",
-        "packageName": "@pkgjs/parseargs",
-        "hash": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="
+        "version": "5.0.5",
+        "packageName": "csso",
+        "hash": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="
       }
     },
-    "npm:resolve.exports@2.0.2": {
+    "npm:postcss-normalize-unicode": {
       "type": "npm",
-      "name": "npm:resolve.exports@2.0.2",
+      "name": "npm:postcss-normalize-unicode",
       "data": {
-        "version": "2.0.2",
-        "packageName": "resolve.exports",
-        "hash": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg=="
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-unicode",
+        "hash": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg=="
       }
     },
-    "npm:@esbuild/android-arm@0.18.20": {
+    "npm:reflect-metadata": {
       "type": "npm",
-      "name": "npm:@esbuild/android-arm@0.18.20",
+      "name": "npm:reflect-metadata",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/android-arm",
-        "hash": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="
+        "version": "0.1.13",
+        "packageName": "reflect-metadata",
+        "hash": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
       }
     },
-    "npm:postcss-discard-comments": {
+    "npm:fs-extra@10.1.0": {
       "type": "npm",
-      "name": "npm:postcss-discard-comments",
+      "name": "npm:fs-extra@10.1.0",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-discard-comments",
-        "hash": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw=="
+        "version": "10.1.0",
+        "packageName": "fs-extra",
+        "hash": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="
       }
     },
-    "npm:@material/elevation": {
+    "npm:glob-parent": {
       "type": "npm",
-      "name": "npm:@material/elevation",
+      "name": "npm:glob-parent",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/elevation",
-        "hash": "sha512-lwPIOb8fHyOljIWYcVLPT73dPIEOKat/CXu6gqYIVMQgZQIksQNUA7z1O3l7apkRSuYUOYSXqrgU7AnWP4KcJg=="
+        "version": "5.1.2",
+        "packageName": "glob-parent",
+        "hash": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
       }
     },
-    "npm:yargs@17.1.1": {
+    "npm:@material/menu-surface": {
       "type": "npm",
-      "name": "npm:yargs@17.1.1",
+      "name": "npm:@material/menu-surface",
       "data": {
-        "version": "17.1.1",
-        "packageName": "yargs",
-        "hash": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/menu-surface",
+        "hash": "sha512-4h4wZ0Rs7qBg1Otldw8ljp+LCULNL42pqbqcTXhKAkJM7pHcSw4k7IfoThSRLU3+V8T3/+qiAXyeQix2OGHzwg=="
       }
     },
-    "npm:@types/unist": {
+    "npm:detect-newline": {
       "type": "npm",
-      "name": "npm:@types/unist",
+      "name": "npm:detect-newline",
       "data": {
-        "version": "2.0.10",
-        "packageName": "@types/unist",
-        "hash": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+        "version": "3.1.0",
+        "packageName": "detect-newline",
+        "hash": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA=="
       }
     },
-    "npm:postcss-normalize-url": {
+    "npm:heap": {
       "type": "npm",
-      "name": "npm:postcss-normalize-url",
+      "name": "npm:heap",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-url",
-        "hash": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw=="
+        "version": "0.2.7",
+        "packageName": "heap",
+        "hash": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
       }
     },
-    "npm:detect-port": {
+    "npm:@types/express-serve-static-core": {
       "type": "npm",
-      "name": "npm:detect-port",
+      "name": "npm:@types/express-serve-static-core",
       "data": {
-        "version": "1.5.1",
-        "packageName": "detect-port",
-        "hash": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ=="
+        "version": "4.17.39",
+        "packageName": "@types/express-serve-static-core",
+        "hash": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ=="
       }
     },
-    "npm:@webassemblyjs/helper-api-error": {
+    "npm:string_decoder@1.1.1": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/helper-api-error",
+      "name": "npm:string_decoder@1.1.1",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/helper-api-error",
-        "hash": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q=="
+        "version": "1.1.1",
+        "packageName": "string_decoder",
+        "hash": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
       }
     },
-    "npm:core-util-is": {
+    "npm:cli-cursor": {
       "type": "npm",
-      "name": "npm:core-util-is",
+      "name": "npm:cli-cursor",
       "data": {
-        "version": "1.0.3",
-        "packageName": "core-util-is",
-        "hash": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+        "version": "3.1.0",
+        "packageName": "cli-cursor",
+        "hash": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="
       }
     },
-    "npm:sax": {
+    "npm:gopd": {
       "type": "npm",
-      "name": "npm:sax",
+      "name": "npm:gopd",
       "data": {
-        "version": "1.3.0",
-        "packageName": "sax",
-        "hash": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+        "version": "1.0.1",
+        "packageName": "gopd",
+        "hash": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA=="
       }
     },
-    "npm:rfdc": {
+    "npm:mrmime": {
       "type": "npm",
-      "name": "npm:rfdc",
+      "name": "npm:mrmime",
       "data": {
-        "version": "1.3.0",
-        "packageName": "rfdc",
-        "hash": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
+        "version": "1.0.1",
+        "packageName": "mrmime",
+        "hash": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw=="
       }
     },
-    "npm:shebang-regex": {
+    "npm:acorn-walk": {
       "type": "npm",
-      "name": "npm:shebang-regex",
+      "name": "npm:acorn-walk",
       "data": {
-        "version": "3.0.0",
-        "packageName": "shebang-regex",
-        "hash": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+        "version": "8.3.0",
+        "packageName": "acorn-walk",
+        "hash": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA=="
       }
     },
-    "npm:ts-dedent": {
+    "npm:form-data@4.0.0": {
       "type": "npm",
-      "name": "npm:ts-dedent",
+      "name": "npm:form-data@4.0.0",
       "data": {
-        "version": "2.2.0",
-        "packageName": "ts-dedent",
-        "hash": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="
+        "version": "4.0.0",
+        "packageName": "form-data",
+        "hash": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww=="
       }
     },
-    "npm:json-buffer": {
+    "npm:@jridgewell/gen-mapping": {
       "type": "npm",
-      "name": "npm:json-buffer",
+      "name": "npm:@jridgewell/gen-mapping",
       "data": {
-        "version": "3.0.1",
-        "packageName": "json-buffer",
-        "hash": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+        "version": "0.3.3",
+        "packageName": "@jridgewell/gen-mapping",
+        "hash": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ=="
       }
     },
-    "npm:stylus-loader": {
+    "npm:kleur": {
       "type": "npm",
-      "name": "npm:stylus-loader",
+      "name": "npm:kleur",
       "data": {
-        "version": "7.1.3",
-        "packageName": "stylus-loader",
-        "hash": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw=="
+        "version": "4.1.5",
+        "packageName": "kleur",
+        "hash": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
       }
     },
-    "npm:get-package-type": {
+    "npm:mkdirp": {
       "type": "npm",
-      "name": "npm:get-package-type",
+      "name": "npm:mkdirp",
       "data": {
-        "version": "0.1.0",
-        "packageName": "get-package-type",
-        "hash": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q=="
+        "version": "0.5.6",
+        "packageName": "mkdirp",
+        "hash": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
       }
     },
-    "npm:harmony-reflect": {
+    "npm:postcss-selector-parser": {
       "type": "npm",
-      "name": "npm:harmony-reflect",
+      "name": "npm:postcss-selector-parser",
       "data": {
-        "version": "1.6.2",
-        "packageName": "harmony-reflect",
-        "hash": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g=="
+        "version": "6.0.13",
+        "packageName": "postcss-selector-parser",
+        "hash": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ=="
       }
     },
-    "npm:end-of-stream": {
+    "npm:prelude-ls": {
       "type": "npm",
-      "name": "npm:end-of-stream",
+      "name": "npm:prelude-ls",
       "data": {
-        "version": "1.4.4",
-        "packageName": "end-of-stream",
-        "hash": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="
+        "version": "1.2.1",
+        "packageName": "prelude-ls",
+        "hash": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
       }
     },
-    "npm:postcss-merge-rules": {
+    "npm:esutils": {
       "type": "npm",
-      "name": "npm:postcss-merge-rules",
+      "name": "npm:esutils",
       "data": {
-        "version": "6.0.1",
-        "packageName": "postcss-merge-rules",
-        "hash": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw=="
+        "version": "2.0.3",
+        "packageName": "esutils",
+        "hash": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
       }
     },
-    "npm:dom-serialize": {
+    "npm:sax": {
       "type": "npm",
-      "name": "npm:dom-serialize",
+      "name": "npm:sax",
       "data": {
-        "version": "2.2.1",
-        "packageName": "dom-serialize",
-        "hash": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ=="
+        "version": "1.3.0",
+        "packageName": "sax",
+        "hash": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
       }
     },
-    "npm:validate-npm-package-name": {
+    "npm:unicode-canonical-property-names-ecmascript": {
       "type": "npm",
-      "name": "npm:validate-npm-package-name",
+      "name": "npm:unicode-canonical-property-names-ecmascript",
       "data": {
-        "version": "5.0.0",
-        "packageName": "validate-npm-package-name",
-        "hash": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ=="
+        "version": "2.0.0",
+        "packageName": "unicode-canonical-property-names-ecmascript",
+        "hash": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ=="
       }
     },
-    "npm:make-dir@3.1.0": {
+    "npm:aggregate-error": {
       "type": "npm",
-      "name": "npm:make-dir@3.1.0",
+      "name": "npm:aggregate-error",
       "data": {
         "version": "3.1.0",
-        "packageName": "make-dir",
-        "hash": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw=="
+        "packageName": "aggregate-error",
+        "hash": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="
       }
     },
-    "npm:cookie": {
+    "npm:@sigstore/bundle": {
       "type": "npm",
-      "name": "npm:cookie",
+      "name": "npm:@sigstore/bundle",
       "data": {
-        "version": "0.4.2",
-        "packageName": "cookie",
-        "hash": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
+        "version": "2.1.0",
+        "packageName": "@sigstore/bundle",
+        "hash": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng=="
       }
     },
-    "npm:@sigstore/tuf": {
+    "npm:postcss-reduce-transforms": {
       "type": "npm",
-      "name": "npm:@sigstore/tuf",
+      "name": "npm:postcss-reduce-transforms",
       "data": {
-        "version": "2.2.0",
-        "packageName": "@sigstore/tuf",
-        "hash": "sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA=="
+        "version": "6.0.0",
+        "packageName": "postcss-reduce-transforms",
+        "hash": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w=="
       }
     },
-    "npm:glob@7.1.4": {
+    "npm:d3-drag": {
       "type": "npm",
-      "name": "npm:glob@7.1.4",
+      "name": "npm:d3-drag",
       "data": {
-        "version": "7.1.4",
-        "packageName": "glob",
-        "hash": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A=="
+        "version": "3.0.0",
+        "packageName": "d3-drag",
+        "hash": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="
       }
     },
-    "npm:events": {
+    "npm:base64-js": {
       "type": "npm",
-      "name": "npm:events",
+      "name": "npm:base64-js",
       "data": {
-        "version": "3.3.0",
-        "packageName": "events",
-        "hash": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
+        "version": "1.5.1",
+        "packageName": "base64-js",
+        "hash": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
       }
     },
-    "npm:chalk": {
+    "npm:array-union@2.1.0": {
       "type": "npm",
-      "name": "npm:chalk",
+      "name": "npm:array-union@2.1.0",
       "data": {
-        "version": "2.4.2",
-        "packageName": "chalk",
-        "hash": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
+        "version": "2.1.0",
+        "packageName": "array-union",
+        "hash": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
       }
     },
-    "npm:source-map-support@0.5.19": {
+    "npm:less": {
       "type": "npm",
-      "name": "npm:source-map-support@0.5.19",
+      "name": "npm:less",
       "data": {
-        "version": "0.5.19",
-        "packageName": "source-map-support",
-        "hash": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw=="
+        "version": "4.2.0",
+        "packageName": "less",
+        "hash": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA=="
       }
     },
-    "npm:eazy-logger": {
+    "npm:escalade": {
       "type": "npm",
-      "name": "npm:eazy-logger",
+      "name": "npm:escalade",
       "data": {
-        "version": "4.0.1",
-        "packageName": "eazy-logger",
-        "hash": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw=="
+        "version": "3.1.1",
+        "packageName": "escalade",
+        "hash": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
       }
     },
-    "npm:cjs-module-lexer": {
+    "npm:@babel/plugin-transform-template-literals": {
       "type": "npm",
-      "name": "npm:cjs-module-lexer",
+      "name": "npm:@babel/plugin-transform-template-literals",
       "data": {
-        "version": "1.2.3",
-        "packageName": "cjs-module-lexer",
-        "hash": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-template-literals",
+        "hash": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA=="
       }
     },
-    "npm:@esbuild/freebsd-x64@0.18.20": {
+    "npm:@babel/plugin-transform-async-generator-functions": {
       "type": "npm",
-      "name": "npm:@esbuild/freebsd-x64@0.18.20",
+      "name": "npm:@babel/plugin-transform-async-generator-functions",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/freebsd-x64",
-        "hash": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="
+        "version": "7.23.2",
+        "packageName": "@babel/plugin-transform-async-generator-functions",
+        "hash": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ=="
       }
     },
-    "npm:error-ex": {
+    "npm:supports-preserve-symlinks-flag": {
       "type": "npm",
-      "name": "npm:error-ex",
+      "name": "npm:supports-preserve-symlinks-flag",
       "data": {
-        "version": "1.3.2",
-        "packageName": "error-ex",
-        "hash": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="
+        "version": "1.0.0",
+        "packageName": "supports-preserve-symlinks-flag",
+        "hash": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
       }
     },
-    "npm:pacote": {
+    "npm:@phenomnomnominal/tsquery": {
       "type": "npm",
-      "name": "npm:pacote",
+      "name": "npm:@phenomnomnominal/tsquery",
       "data": {
-        "version": "17.0.4",
-        "packageName": "pacote",
-        "hash": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg=="
+        "version": "5.0.1",
+        "packageName": "@phenomnomnominal/tsquery",
+        "hash": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA=="
       }
     },
-    "npm:@typescript-eslint/types": {
+    "npm:@nx/web": {
       "type": "npm",
-      "name": "npm:@typescript-eslint/types",
+      "name": "npm:@nx/web",
       "data": {
-        "version": "6.11.0",
-        "packageName": "@typescript-eslint/types",
-        "hash": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA=="
+        "version": "17.1.2",
+        "packageName": "@nx/web",
+        "hash": "sha512-TJIY3uyBUCO9F15v1iWU5Lm6qvNBGzyLI0cNKB4Xl6H5mJA3bxW92NlRM++8mS9hSpw2OLEVN5jA2q+pbRzk8Q=="
       }
     },
-    "npm:convert-source-map@2.0.0": {
+    "npm:@types/estree": {
       "type": "npm",
-      "name": "npm:convert-source-map@2.0.0",
+      "name": "npm:@types/estree",
       "data": {
-        "version": "2.0.0",
-        "packageName": "convert-source-map",
-        "hash": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+        "version": "1.0.3",
+        "packageName": "@types/estree",
+        "hash": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ=="
       }
     },
-    "npm:ajv-formats": {
+    "npm:axios@0.21.4": {
       "type": "npm",
-      "name": "npm:ajv-formats",
+      "name": "npm:axios@0.21.4",
       "data": {
-        "version": "2.1.1",
-        "packageName": "ajv-formats",
-        "hash": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="
+        "version": "0.21.4",
+        "packageName": "axios",
+        "hash": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg=="
+      }
+    },
+    "npm:buffer": {
+      "type": "npm",
+      "name": "npm:buffer",
+      "data": {
+        "version": "5.7.1",
+        "packageName": "buffer",
+        "hash": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="
       }
     },
     "npm:locate-path@6.0.0": {
@@ -7880,508 +7988,490 @@
         "hash": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="
       }
     },
-    "npm:@babel/plugin-transform-optional-catch-binding": {
-      "type": "npm",
-      "name": "npm:@babel/plugin-transform-optional-catch-binding",
-      "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-optional-catch-binding",
-        "hash": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ=="
-      }
-    },
-    "npm:ora@5.3.0": {
-      "type": "npm",
-      "name": "npm:ora@5.3.0",
-      "data": {
-        "version": "5.3.0",
-        "packageName": "ora",
-        "hash": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g=="
-      }
-    },
-    "npm:@types/stack-utils": {
+    "npm:extend": {
       "type": "npm",
-      "name": "npm:@types/stack-utils",
+      "name": "npm:extend",
       "data": {
-        "version": "2.0.3",
-        "packageName": "@types/stack-utils",
-        "hash": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="
+        "version": "3.0.2",
+        "packageName": "extend",
+        "hash": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
       }
     },
-    "npm:signal-exit@4.1.0": {
+    "npm:@angular-devkit/core": {
       "type": "npm",
-      "name": "npm:signal-exit@4.1.0",
+      "name": "npm:@angular-devkit/core",
       "data": {
-        "version": "4.1.0",
-        "packageName": "signal-exit",
-        "hash": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="
+        "version": "17.0.1",
+        "packageName": "@angular-devkit/core",
+        "hash": "sha512-UjNx9fZW0oU7UaeoB0HblYz/Nm8MWtinAe39XkY+zjECLWqKAcHPotfYjucXiky1UlBUOScIKbwjMDdEY8xkuw=="
       }
     },
-    "npm:@babel/plugin-syntax-jsx": {
+    "npm:@babel/runtime": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-jsx",
+      "name": "npm:@babel/runtime",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/plugin-syntax-jsx",
-        "hash": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg=="
+        "version": "7.23.2",
+        "packageName": "@babel/runtime",
+        "hash": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg=="
       }
     },
-    "npm:parse5-sax-parser": {
+    "npm:@webassemblyjs/wasm-opt": {
       "type": "npm",
-      "name": "npm:parse5-sax-parser",
+      "name": "npm:@webassemblyjs/wasm-opt",
       "data": {
-        "version": "7.0.0",
-        "packageName": "parse5-sax-parser",
-        "hash": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/wasm-opt",
+        "hash": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g=="
       }
     },
-    "npm:source-map-js": {
+    "npm:sass-loader@12.6.0": {
       "type": "npm",
-      "name": "npm:source-map-js",
+      "name": "npm:sass-loader@12.6.0",
       "data": {
-        "version": "1.0.2",
-        "packageName": "source-map-js",
-        "hash": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+        "version": "12.6.0",
+        "packageName": "sass-loader",
+        "hash": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA=="
       }
     },
-    "npm:color-name@1.1.4": {
+    "npm:core-js-compat": {
       "type": "npm",
-      "name": "npm:color-name@1.1.4",
+      "name": "npm:core-js-compat",
       "data": {
-        "version": "1.1.4",
-        "packageName": "color-name",
-        "hash": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        "version": "3.33.1",
+        "packageName": "core-js-compat",
+        "hash": "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ=="
       }
     },
-    "npm:onetime": {
+    "npm:@esbuild/linux-arm": {
       "type": "npm",
-      "name": "npm:onetime",
+      "name": "npm:@esbuild/linux-arm",
       "data": {
-        "version": "5.1.2",
-        "packageName": "onetime",
-        "hash": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-arm",
+        "hash": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ=="
       }
     },
-    "npm:@material/ripple": {
+    "npm:http-proxy-middleware": {
       "type": "npm",
-      "name": "npm:@material/ripple",
+      "name": "npm:http-proxy-middleware",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/ripple",
-        "hash": "sha512-Vl615/PIBpBD+IOI9Xypz0SV3RsmYJYSNx890Rih7irhUOaPsOUBmTYOWF5AsGBynqLcXoTNVhK92drYLKtJwQ=="
+        "version": "2.0.6",
+        "packageName": "http-proxy-middleware",
+        "hash": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw=="
       }
     },
-    "npm:debug": {
+    "npm:is-binary-path": {
       "type": "npm",
-      "name": "npm:debug",
+      "name": "npm:is-binary-path",
       "data": {
-        "version": "4.3.4",
-        "packageName": "debug",
-        "hash": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
+        "version": "2.1.0",
+        "packageName": "is-binary-path",
+        "hash": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="
       }
     },
-    "npm:karma": {
+    "npm:http-server": {
       "type": "npm",
-      "name": "npm:karma",
+      "name": "npm:http-server",
       "data": {
-        "version": "6.4.2",
-        "packageName": "karma",
-        "hash": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ=="
+        "version": "14.1.1",
+        "packageName": "http-server",
+        "hash": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A=="
       }
     },
-    "npm:micromark-factory-destination": {
+    "npm:cli-spinners@2.6.1": {
       "type": "npm",
-      "name": "npm:micromark-factory-destination",
+      "name": "npm:cli-spinners@2.6.1",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-factory-destination",
-        "hash": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg=="
+        "version": "2.6.1",
+        "packageName": "cli-spinners",
+        "hash": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g=="
       }
     },
-    "npm:merge-stream": {
+    "npm:lodash.memoize": {
       "type": "npm",
-      "name": "npm:merge-stream",
+      "name": "npm:lodash.memoize",
       "data": {
-        "version": "2.0.0",
-        "packageName": "merge-stream",
-        "hash": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+        "version": "4.1.2",
+        "packageName": "lodash.memoize",
+        "hash": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
       }
     },
-    "npm:@types/yargs": {
+    "npm:node-releases": {
       "type": "npm",
-      "name": "npm:@types/yargs",
+      "name": "npm:node-releases",
       "data": {
-        "version": "17.0.31",
-        "packageName": "@types/yargs",
-        "hash": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg=="
+        "version": "2.0.13",
+        "packageName": "node-releases",
+        "hash": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
       }
     },
-    "npm:camelcase@6.3.0": {
+    "npm:requires-port": {
       "type": "npm",
-      "name": "npm:camelcase@6.3.0",
+      "name": "npm:requires-port",
       "data": {
-        "version": "6.3.0",
-        "packageName": "camelcase",
-        "hash": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
+        "version": "1.0.0",
+        "packageName": "requires-port",
+        "hash": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
       }
     },
-    "npm:extend": {
+    "npm:@esbuild/linux-s390x": {
       "type": "npm",
-      "name": "npm:extend",
+      "name": "npm:@esbuild/linux-s390x",
       "data": {
-        "version": "3.0.2",
-        "packageName": "extend",
-        "hash": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-s390x",
+        "hash": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw=="
       }
     },
-    "npm:@babel/plugin-syntax-private-property-in-object": {
+    "npm:@types/d3-scale-chromatic": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-private-property-in-object",
+      "name": "npm:@types/d3-scale-chromatic",
       "data": {
-        "version": "7.14.5",
-        "packageName": "@babel/plugin-syntax-private-property-in-object",
-        "hash": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg=="
+        "version": "3.0.3",
+        "packageName": "@types/d3-scale-chromatic",
+        "hash": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw=="
       }
     },
-    "npm:css-tree": {
+    "npm:babel-plugin-polyfill-corejs2": {
       "type": "npm",
-      "name": "npm:css-tree",
+      "name": "npm:babel-plugin-polyfill-corejs2",
       "data": {
-        "version": "2.3.1",
-        "packageName": "css-tree",
-        "hash": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="
+        "version": "0.4.6",
+        "packageName": "babel-plugin-polyfill-corejs2",
+        "hash": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q=="
       }
     },
-    "npm:handle-thing": {
+    "npm:sass-loader": {
       "type": "npm",
-      "name": "npm:handle-thing",
+      "name": "npm:sass-loader",
       "data": {
-        "version": "2.0.1",
-        "packageName": "handle-thing",
-        "hash": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="
+        "version": "13.3.2",
+        "packageName": "sass-loader",
+        "hash": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg=="
       }
     },
-    "npm:@esbuild/openbsd-x64": {
+    "npm:entities": {
       "type": "npm",
-      "name": "npm:@esbuild/openbsd-x64",
+      "name": "npm:entities",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/openbsd-x64",
-        "hash": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA=="
+        "version": "4.5.0",
+        "packageName": "entities",
+        "hash": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
       }
     },
-    "npm:send@0.16.2": {
+    "npm:detect-node": {
       "type": "npm",
-      "name": "npm:send@0.16.2",
+      "name": "npm:detect-node",
       "data": {
-        "version": "0.16.2",
-        "packageName": "send",
-        "hash": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw=="
+        "version": "2.1.0",
+        "packageName": "detect-node",
+        "hash": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
       }
     },
-    "npm:kleur": {
+    "npm:ts-api-utils": {
       "type": "npm",
-      "name": "npm:kleur",
+      "name": "npm:ts-api-utils",
       "data": {
-        "version": "4.1.5",
-        "packageName": "kleur",
-        "hash": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
+        "version": "1.0.3",
+        "packageName": "ts-api-utils",
+        "hash": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg=="
       }
     },
-    "npm:pkg-dir": {
+    "npm:@babel/helper-hoist-variables": {
       "type": "npm",
-      "name": "npm:pkg-dir",
+      "name": "npm:@babel/helper-hoist-variables",
       "data": {
-        "version": "7.0.0",
-        "packageName": "pkg-dir",
-        "hash": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA=="
+        "version": "7.22.5",
+        "packageName": "@babel/helper-hoist-variables",
+        "hash": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw=="
       }
     },
-    "npm:klona": {
+    "npm:p-limit": {
       "type": "npm",
-      "name": "npm:klona",
+      "name": "npm:p-limit",
       "data": {
-        "version": "2.0.6",
-        "packageName": "klona",
-        "hash": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="
+        "version": "2.3.0",
+        "packageName": "p-limit",
+        "hash": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
       }
     },
-    "npm:@types/istanbul-lib-coverage": {
+    "npm:http-errors": {
       "type": "npm",
-      "name": "npm:@types/istanbul-lib-coverage",
+      "name": "npm:http-errors",
       "data": {
-        "version": "2.0.6",
-        "packageName": "@types/istanbul-lib-coverage",
-        "hash": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="
+        "version": "2.0.0",
+        "packageName": "http-errors",
+        "hash": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="
       }
     },
-    "npm:browserslist": {
+    "npm:webpack-dev-server": {
       "type": "npm",
-      "name": "npm:browserslist",
+      "name": "npm:webpack-dev-server",
       "data": {
-        "version": "4.22.1",
-        "packageName": "browserslist",
-        "hash": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ=="
+        "version": "4.15.1",
+        "packageName": "webpack-dev-server",
+        "hash": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA=="
       }
     },
-    "npm:detect-newline": {
+    "npm:layout-base@2.0.1": {
       "type": "npm",
-      "name": "npm:detect-newline",
+      "name": "npm:layout-base@2.0.1",
       "data": {
-        "version": "3.1.0",
-        "packageName": "detect-newline",
-        "hash": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA=="
+        "version": "2.0.1",
+        "packageName": "layout-base",
+        "hash": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="
       }
     },
-    "npm:lodash.isfinite": {
+    "npm:@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
       "type": "npm",
-      "name": "npm:lodash.isfinite",
+      "name": "npm:@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
       "data": {
-        "version": "3.3.2",
-        "packageName": "lodash.isfinite",
-        "hash": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA=="
+        "version": "7.22.15",
+        "packageName": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+        "hash": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ=="
       }
     },
-    "npm:@nrwl/tao": {
+    "npm:postcss-normalize-timing-functions": {
       "type": "npm",
-      "name": "npm:@nrwl/tao",
-      "data": {
-        "version": "17.0.2",
-        "packageName": "@nrwl/tao",
-        "hash": "sha512-H+htIRzQR6Ibael34rhQkpNkpFFFmaSTsIzdqkBqL4j5+FzSpZh67NJnWSY8vsYQGQL8Ncc+MHvpQC+7pyfgGw=="
+      "name": "npm:postcss-normalize-timing-functions",
+      "data": {
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-timing-functions",
+        "hash": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg=="
       }
     },
-    "npm:@esbuild/android-arm64": {
+    "npm:jest-circus": {
       "type": "npm",
-      "name": "npm:@esbuild/android-arm64",
+      "name": "npm:jest-circus",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/android-arm64",
-        "hash": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ=="
+        "version": "29.7.0",
+        "packageName": "jest-circus",
+        "hash": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw=="
       }
     },
-    "npm:html-encoding-sniffer": {
+    "npm:lodash.debounce": {
       "type": "npm",
-      "name": "npm:html-encoding-sniffer",
+      "name": "npm:lodash.debounce",
       "data": {
-        "version": "3.0.0",
-        "packageName": "html-encoding-sniffer",
-        "hash": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA=="
+        "version": "4.0.8",
+        "packageName": "lodash.debounce",
+        "hash": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
       }
     },
-    "npm:portscanner": {
+    "npm:@angular-devkit/schematics": {
       "type": "npm",
-      "name": "npm:portscanner",
+      "name": "npm:@angular-devkit/schematics",
       "data": {
-        "version": "2.2.0",
-        "packageName": "portscanner",
-        "hash": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw=="
+        "version": "17.0.1",
+        "packageName": "@angular-devkit/schematics",
+        "hash": "sha512-bwgdGviRZC5X8Tl4QcjtIJAcC0p8yIhOyYVFrq4PWYvI+DfV9P6w3OFuoS6rwEoiIQR90+12iKBYMt1MfL/c0Q=="
       }
     },
-    "npm:@material/segmented-button": {
+    "npm:ansi-regex": {
       "type": "npm",
-      "name": "npm:@material/segmented-button",
+      "name": "npm:ansi-regex",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/segmented-button",
-        "hash": "sha512-oqGHs2C7C+yJW/xZf/wP8jBGLs6HcerhM3CsorLAEMH3MGuIlVC17WcisBewEWucsILYEWbySXy/7T4h6/psZA=="
+        "version": "5.0.1",
+        "packageName": "ansi-regex",
+        "hash": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
       }
     },
-    "npm:once": {
+    "npm:uuid@3.4.0": {
       "type": "npm",
-      "name": "npm:once",
+      "name": "npm:uuid@3.4.0",
       "data": {
-        "version": "1.4.0",
-        "packageName": "once",
-        "hash": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
+        "version": "3.4.0",
+        "packageName": "uuid",
+        "hash": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
       }
     },
-    "npm:@nx/nx-linux-arm-gnueabihf@17.1.2": {
+    "npm:@babel/plugin-transform-dotall-regex": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-arm-gnueabihf@17.1.2",
+      "name": "npm:@babel/plugin-transform-dotall-regex",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-linux-arm-gnueabihf",
-        "hash": "sha512-4FwqUX7NxVfJ0v7frBKNbjENz6pvp3slDfoG2/WmnAj5a6TCu7magwlg1qLQaHYJ1m/i8u7RrG0Uz4SYHWzkVw=="
+        "version": "7.23.3",
+        "packageName": "@babel/plugin-transform-dotall-regex",
+        "hash": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ=="
       }
     },
-    "npm:d3-time": {
+    "npm:@babel/plugin-transform-typescript": {
       "type": "npm",
-      "name": "npm:d3-time",
+      "name": "npm:@babel/plugin-transform-typescript",
       "data": {
-        "version": "3.1.0",
-        "packageName": "d3-time",
-        "hash": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="
+        "version": "7.23.3",
+        "packageName": "@babel/plugin-transform-typescript",
+        "hash": "sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw=="
       }
     },
-    "npm:postcss-discard-overridden": {
+    "npm:@esbuild/android-arm": {
       "type": "npm",
-      "name": "npm:postcss-discard-overridden",
+      "name": "npm:@esbuild/android-arm",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-discard-overridden",
-        "hash": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/android-arm",
+        "hash": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA=="
       }
     },
-    "npm:@babel/plugin-transform-duplicate-keys": {
+    "npm:browserslist": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-duplicate-keys",
+      "name": "npm:browserslist",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-duplicate-keys",
-        "hash": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw=="
+        "version": "4.22.1",
+        "packageName": "browserslist",
+        "hash": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ=="
       }
     },
-    "npm:@babel/plugin-transform-sticky-regex": {
+    "npm:diff": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-sticky-regex",
+      "name": "npm:diff",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-sticky-regex",
-        "hash": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw=="
+        "version": "4.0.2",
+        "packageName": "diff",
+        "hash": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
       }
     },
-    "npm:@jest/expect": {
+    "npm:sockjs": {
       "type": "npm",
-      "name": "npm:@jest/expect",
+      "name": "npm:sockjs",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/expect",
-        "hash": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ=="
+        "version": "0.3.24",
+        "packageName": "sockjs",
+        "hash": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ=="
       }
     },
-    "npm:@babel/helper-member-expression-to-functions": {
+    "npm:nx@17.1.2": {
       "type": "npm",
-      "name": "npm:@babel/helper-member-expression-to-functions",
+      "name": "npm:nx@17.1.2",
       "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/helper-member-expression-to-functions",
-        "hash": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA=="
+        "version": "17.1.2",
+        "packageName": "nx",
+        "hash": "sha512-pf94ri36cAiSzbYcPTJwQzttgAsHSjCLEni0Ilw6aVdjpoV2l6cggYxwddX7pgtCWuokVp/6KhAxVkbzvH65wg=="
       }
     },
-    "npm:mdn-data@2.0.28": {
+    "npm:@esbuild/freebsd-arm64": {
       "type": "npm",
-      "name": "npm:mdn-data@2.0.28",
+      "name": "npm:@esbuild/freebsd-arm64",
       "data": {
-        "version": "2.0.28",
-        "packageName": "mdn-data",
-        "hash": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/freebsd-arm64",
+        "hash": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ=="
       }
     },
-    "npm:expect": {
+    "npm:@popperjs/core": {
       "type": "npm",
-      "name": "npm:expect",
+      "name": "npm:@popperjs/core",
       "data": {
-        "version": "29.7.0",
-        "packageName": "expect",
-        "hash": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw=="
+        "version": "2.11.8",
+        "packageName": "@popperjs/core",
+        "hash": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="
       }
     },
-    "npm:source-map-support": {
+    "npm:@material/notched-outline": {
       "type": "npm",
-      "name": "npm:source-map-support",
+      "name": "npm:@material/notched-outline",
       "data": {
-        "version": "0.5.21",
-        "packageName": "source-map-support",
-        "hash": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/notched-outline",
+        "hash": "sha512-zmRZHJ+5cOWsBatRyK50wuht78olXySyKOJIIEmy8lxSMZefI1764u0mr8tS1KYF8vSAl5cUlwCC3/2Njz1FPg=="
       }
     },
-    "npm:@babel/core": {
+    "npm:domelementtype": {
       "type": "npm",
-      "name": "npm:@babel/core",
+      "name": "npm:domelementtype",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/core",
-        "hash": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ=="
+        "version": "2.3.0",
+        "packageName": "domelementtype",
+        "hash": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
       }
     },
-    "npm:localbase": {
+    "npm:karma-jasmine": {
       "type": "npm",
-      "name": "npm:localbase",
+      "name": "npm:karma-jasmine",
       "data": {
-        "version": "0.7.5",
-        "packageName": "localbase",
-        "hash": "sha512-LikkGiX/HdR0kZUUmoBjPMD5qyLBbO5SfQOPkZVXea3QwQTZBy5JxbRiEC1xy9tagFCfi90OP+23/V6Da/7DbQ=="
+        "version": "5.1.0",
+        "packageName": "karma-jasmine",
+        "hash": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ=="
       }
     },
-    "npm:@babel/plugin-transform-spread": {
+    "npm:fs-extra": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-spread",
+      "name": "npm:fs-extra",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-spread",
-        "hash": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg=="
+        "version": "8.1.0",
+        "packageName": "fs-extra",
+        "hash": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="
       }
     },
-    "npm:@ungap/structured-clone": {
+    "npm:regexpu-core": {
       "type": "npm",
-      "name": "npm:@ungap/structured-clone",
+      "name": "npm:regexpu-core",
       "data": {
-        "version": "1.2.0",
-        "packageName": "@ungap/structured-clone",
-        "hash": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
+        "version": "5.3.2",
+        "packageName": "regexpu-core",
+        "hash": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ=="
       }
     },
-    "npm:sade": {
+    "npm:@esbuild/linux-riscv64@0.18.20": {
       "type": "npm",
-      "name": "npm:sade",
+      "name": "npm:@esbuild/linux-riscv64@0.18.20",
       "data": {
-        "version": "1.8.1",
-        "packageName": "sade",
-        "hash": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-riscv64",
+        "hash": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="
       }
     },
-    "npm:@types/parse-json": {
+    "npm:callsites": {
       "type": "npm",
-      "name": "npm:@types/parse-json",
+      "name": "npm:callsites",
       "data": {
-        "version": "4.0.2",
-        "packageName": "@types/parse-json",
-        "hash": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
+        "version": "3.1.0",
+        "packageName": "callsites",
+        "hash": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
       }
     },
-    "npm:node-addon-api": {
+    "npm:d3-color": {
       "type": "npm",
-      "name": "npm:node-addon-api",
+      "name": "npm:d3-color",
       "data": {
-        "version": "3.2.1",
-        "packageName": "node-addon-api",
-        "hash": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
+        "version": "3.1.0",
+        "packageName": "d3-color",
+        "hash": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="
       }
     },
-    "npm:@sinonjs/fake-timers": {
+    "npm:esrecurse": {
       "type": "npm",
-      "name": "npm:@sinonjs/fake-timers",
+      "name": "npm:esrecurse",
       "data": {
-        "version": "10.3.0",
-        "packageName": "@sinonjs/fake-timers",
-        "hash": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA=="
+        "version": "4.3.0",
+        "packageName": "esrecurse",
+        "hash": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="
       }
     },
-    "npm:semver@7.5.3": {
+    "npm:tsconfig-paths": {
       "type": "npm",
-      "name": "npm:semver@7.5.3",
+      "name": "npm:tsconfig-paths",
       "data": {
-        "version": "7.5.3",
-        "packageName": "semver",
-        "hash": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ=="
+        "version": "4.2.0",
+        "packageName": "tsconfig-paths",
+        "hash": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg=="
       }
     },
-    "npm:@nx/nx-linux-x64-gnu@17.1.2": {
+    "npm:find-up@6.3.0": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-x64-gnu@17.1.2",
+      "name": "npm:find-up@6.3.0",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-linux-x64-gnu",
-        "hash": "sha512-3cC131hJ3VhuxjzzBlwIdVp46onykOo78EmnURNdLxcWOpmcKgYXn7OnVwjrglYi+JL7D0vABGKKUpt1cs6/rA=="
+        "version": "6.3.0",
+        "packageName": "find-up",
+        "hash": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw=="
       }
     },
-    "npm:source-map": {
+    "npm:union": {
       "type": "npm",
-      "name": "npm:source-map",
+      "name": "npm:union",
       "data": {
-        "version": "0.7.4",
-        "packageName": "source-map",
-        "hash": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
+        "version": "0.5.0",
+        "packageName": "union",
+        "hash": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA=="
       }
     },
     "npm:@types/body-parser": {
@@ -8393,3568 +8483,3595 @@
         "hash": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA=="
       }
     },
-    "npm:css-loader": {
+    "npm:@webassemblyjs/wasm-gen": {
       "type": "npm",
-      "name": "npm:css-loader",
+      "name": "npm:@webassemblyjs/wasm-gen",
       "data": {
-        "version": "6.8.1",
-        "packageName": "css-loader",
-        "hash": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/wasm-gen",
+        "hash": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA=="
       }
     },
-    "npm:hpack.js": {
+    "npm:stylus-loader": {
       "type": "npm",
-      "name": "npm:hpack.js",
+      "name": "npm:stylus-loader",
       "data": {
-        "version": "2.1.6",
-        "packageName": "hpack.js",
-        "hash": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ=="
+        "version": "7.1.3",
+        "packageName": "stylus-loader",
+        "hash": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw=="
       }
     },
-    "npm:katex": {
+    "npm:karma-coverage": {
       "type": "npm",
-      "name": "npm:katex",
+      "name": "npm:karma-coverage",
       "data": {
-        "version": "0.16.9",
-        "packageName": "katex",
-        "hash": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ=="
+        "version": "2.2.1",
+        "packageName": "karma-coverage",
+        "hash": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A=="
       }
     },
-    "npm:postcss-reduce-initial": {
+    "npm:p-locate@6.0.0": {
       "type": "npm",
-      "name": "npm:postcss-reduce-initial",
+      "name": "npm:p-locate@6.0.0",
       "data": {
         "version": "6.0.0",
-        "packageName": "postcss-reduce-initial",
-        "hash": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA=="
+        "packageName": "p-locate",
+        "hash": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw=="
       }
     },
-    "npm:@babel/plugin-transform-dotall-regex": {
+    "npm:stylus": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-dotall-regex",
+      "name": "npm:stylus",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/plugin-transform-dotall-regex",
-        "hash": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ=="
+        "version": "0.59.0",
+        "packageName": "stylus",
+        "hash": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg=="
       }
     },
-    "npm:lines-and-columns@2.0.4": {
+    "npm:encodeurl": {
       "type": "npm",
-      "name": "npm:lines-and-columns@2.0.4",
+      "name": "npm:encodeurl",
       "data": {
-        "version": "2.0.4",
-        "packageName": "lines-and-columns",
-        "hash": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A=="
+        "version": "1.0.2",
+        "packageName": "encodeurl",
+        "hash": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
       }
     },
-    "npm:@nx/webpack": {
+    "npm:minizlib": {
       "type": "npm",
-      "name": "npm:@nx/webpack",
+      "name": "npm:minizlib",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/webpack",
-        "hash": "sha512-i6TAKrM1TakHyqEHbtsyfyqh5nrk4xgK/aiJZT8mojOSK5ifSrcZSdlPHHbIzuLsCJt1Wo94LA//C26oBg5PTw=="
+        "version": "2.1.2",
+        "packageName": "minizlib",
+        "hash": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="
       }
     },
-    "npm:call-bind": {
+    "npm:side-channel": {
       "type": "npm",
-      "name": "npm:call-bind",
+      "name": "npm:side-channel",
       "data": {
-        "version": "1.0.5",
-        "packageName": "call-bind",
-        "hash": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ=="
+        "version": "1.0.4",
+        "packageName": "side-channel",
+        "hash": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
       }
     },
-    "npm:fast-glob": {
+    "npm:etag": {
       "type": "npm",
-      "name": "npm:fast-glob",
+      "name": "npm:etag",
       "data": {
-        "version": "3.3.1",
-        "packageName": "fast-glob",
-        "hash": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="
+        "version": "1.8.1",
+        "packageName": "etag",
+        "hash": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
       }
     },
-    "npm:media-typer": {
+    "npm:clean-stack": {
       "type": "npm",
-      "name": "npm:media-typer",
+      "name": "npm:clean-stack",
       "data": {
-        "version": "0.3.0",
-        "packageName": "media-typer",
-        "hash": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
+        "version": "2.2.0",
+        "packageName": "clean-stack",
+        "hash": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
       }
     },
-    "npm:ajv": {
+    "npm:array-union": {
       "type": "npm",
-      "name": "npm:ajv",
+      "name": "npm:array-union",
       "data": {
-        "version": "8.12.0",
-        "packageName": "ajv",
-        "hash": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA=="
+        "version": "3.0.1",
+        "packageName": "array-union",
+        "hash": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw=="
       }
     },
-    "npm:run-parallel": {
+    "npm:@nx/linter": {
       "type": "npm",
-      "name": "npm:run-parallel",
+      "name": "npm:@nx/linter",
       "data": {
-        "version": "1.2.0",
-        "packageName": "run-parallel",
-        "hash": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="
+        "version": "17.1.2",
+        "packageName": "@nx/linter",
+        "hash": "sha512-KS7jq61Fg2tiB+PDui3+zH9RANZV/rYyg1yzKe/Say7DabcZDziHmxw5t/JZE7JlTA2Kmy7HBMRgvJsqxOlukQ=="
       }
     },
-    "npm:micromatch": {
+    "npm:htmlparser2": {
       "type": "npm",
-      "name": "npm:micromatch",
+      "name": "npm:htmlparser2",
       "data": {
-        "version": "4.0.5",
-        "packageName": "micromatch",
-        "hash": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA=="
+        "version": "8.0.2",
+        "packageName": "htmlparser2",
+        "hash": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="
       }
     },
-    "npm:resp-modifier": {
+    "npm:prosemirror-commands": {
       "type": "npm",
-      "name": "npm:resp-modifier",
+      "name": "npm:prosemirror-commands",
       "data": {
-        "version": "6.0.2",
-        "packageName": "resp-modifier",
-        "hash": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw=="
+        "version": "1.5.2",
+        "packageName": "prosemirror-commands",
+        "hash": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ=="
       }
     },
-    "npm:@types/eslint": {
+    "npm:@material/theme": {
       "type": "npm",
-      "name": "npm:@types/eslint",
+      "name": "npm:@material/theme",
       "data": {
-        "version": "8.44.6",
-        "packageName": "@types/eslint",
-        "hash": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/theme",
+        "hash": "sha512-HWxC5Nhz8JZKTLTVmAsNxIGB3Kzr53+YFMg327S8/XuEDmI0RFHFvtwM9rADmyrHFBmUaVhV4iELyxFdi67c9w=="
       }
     },
-    "npm:@babel/helper-optimise-call-expression": {
+    "npm:is-plain-object": {
       "type": "npm",
-      "name": "npm:@babel/helper-optimise-call-expression",
+      "name": "npm:is-plain-object",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/helper-optimise-call-expression",
-        "hash": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw=="
+        "version": "2.0.4",
+        "packageName": "is-plain-object",
+        "hash": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="
       }
     },
-    "npm:core-js-compat": {
+    "npm:tsconfig-paths-webpack-plugin": {
       "type": "npm",
-      "name": "npm:core-js-compat",
+      "name": "npm:tsconfig-paths-webpack-plugin",
       "data": {
-        "version": "3.33.1",
-        "packageName": "core-js-compat",
-        "hash": "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ=="
+        "version": "4.0.0",
+        "packageName": "tsconfig-paths-webpack-plugin",
+        "hash": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ=="
       }
     },
-    "npm:pirates": {
+    "npm:domutils": {
       "type": "npm",
-      "name": "npm:pirates",
+      "name": "npm:domutils",
       "data": {
-        "version": "4.0.6",
-        "packageName": "pirates",
-        "hash": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg=="
+        "version": "3.1.0",
+        "packageName": "domutils",
+        "hash": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA=="
       }
     },
-    "npm:@babel/plugin-syntax-import-attributes": {
+    "npm:thunky": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-import-attributes",
+      "name": "npm:thunky",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-syntax-import-attributes",
-        "hash": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg=="
+        "version": "1.1.0",
+        "packageName": "thunky",
+        "hash": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
       }
     },
-    "npm:string-length": {
+    "npm:cors": {
       "type": "npm",
-      "name": "npm:string-length",
+      "name": "npm:cors",
       "data": {
-        "version": "4.0.2",
-        "packageName": "string-length",
-        "hash": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ=="
+        "version": "2.8.5",
+        "packageName": "cors",
+        "hash": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="
       }
     },
-    "npm:@babel/plugin-transform-nullish-coalescing-operator": {
+    "npm:@webassemblyjs/ieee754": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-nullish-coalescing-operator",
+      "name": "npm:@webassemblyjs/ieee754",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-nullish-coalescing-operator",
-        "hash": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/ieee754",
+        "hash": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg=="
       }
     },
-    "npm:source-map@0.6.1": {
+    "npm:electron-to-chromium": {
       "type": "npm",
-      "name": "npm:source-map@0.6.1",
+      "name": "npm:electron-to-chromium",
       "data": {
-        "version": "0.6.1",
-        "packageName": "source-map",
-        "hash": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        "version": "1.4.565",
+        "packageName": "electron-to-chromium",
+        "hash": "sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg=="
       }
     },
-    "npm:inherits@2.0.3": {
+    "npm:jsonparse": {
       "type": "npm",
-      "name": "npm:inherits@2.0.3",
+      "name": "npm:jsonparse",
       "data": {
-        "version": "2.0.3",
-        "packageName": "inherits",
-        "hash": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+        "version": "1.3.1",
+        "packageName": "jsonparse",
+        "hash": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg=="
       }
     },
-    "npm:@nx/nx-linux-arm64-gnu": {
+    "npm:glob": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-arm64-gnu",
+      "name": "npm:glob",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-linux-arm64-gnu",
-        "hash": "sha512-AsD1H6wt68MK1u6vkmtNaFaxDMcyuk6dpo5kq1YT9cfUd614ys3qMUjVp3P2CXxzXh+0UDZeGrc6qotNKOkpJw=="
+        "version": "7.2.3",
+        "packageName": "glob",
+        "hash": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
+      }
+    },
+    "npm:sade": {
+      "type": "npm",
+      "name": "npm:sade",
+      "data": {
+        "version": "1.8.1",
+        "packageName": "sade",
+        "hash": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="
+      }
+    },
+    "npm:@babel/plugin-syntax-unicode-sets-regex": {
+      "type": "npm",
+      "name": "npm:@babel/plugin-syntax-unicode-sets-regex",
+      "data": {
+        "version": "7.18.6",
+        "packageName": "@babel/plugin-syntax-unicode-sets-regex",
+        "hash": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg=="
       }
     },
-    "npm:wrappy": {
+    "npm:normalize-range": {
       "type": "npm",
-      "name": "npm:wrappy",
+      "name": "npm:normalize-range",
       "data": {
-        "version": "1.0.2",
-        "packageName": "wrappy",
-        "hash": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+        "version": "0.1.2",
+        "packageName": "normalize-range",
+        "hash": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="
       }
     },
-    "npm:@babel/plugin-transform-unicode-regex": {
+    "npm:raw-body@2.5.1": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-unicode-regex",
+      "name": "npm:raw-body@2.5.1",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-unicode-regex",
-        "hash": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg=="
+        "version": "2.5.1",
+        "packageName": "raw-body",
+        "hash": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig=="
       }
     },
-    "npm:@nx/nx-linux-arm64-gnu@17.1.2": {
+    "npm:jest-regex-util": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-arm64-gnu@17.1.2",
+      "name": "npm:jest-regex-util",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-linux-arm64-gnu",
-        "hash": "sha512-r6UATY0dVdxwpVJPf/f/KfRkFpMP06wC6HcfNMGbTBTKiKtsdYF42bWoSkDgtgP2bOx9FDH+Hwu3U/Rtj44FIA=="
+        "version": "29.6.3",
+        "packageName": "jest-regex-util",
+        "hash": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg=="
       }
     },
-    "npm:@types/babel__traverse": {
+    "npm:through": {
       "type": "npm",
-      "name": "npm:@types/babel__traverse",
+      "name": "npm:through",
       "data": {
-        "version": "7.20.4",
-        "packageName": "@types/babel__traverse",
-        "hash": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA=="
+        "version": "2.3.8",
+        "packageName": "through",
+        "hash": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
       }
     },
-    "npm:debug@4.3.2": {
+    "npm:@babel/helpers": {
       "type": "npm",
-      "name": "npm:debug@4.3.2",
+      "name": "npm:@babel/helpers",
       "data": {
-        "version": "4.3.2",
-        "packageName": "debug",
-        "hash": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw=="
+        "version": "7.23.2",
+        "packageName": "@babel/helpers",
+        "hash": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ=="
       }
     },
-    "npm:obuf": {
+    "npm:@nx/devkit@17.1.2": {
       "type": "npm",
-      "name": "npm:obuf",
+      "name": "npm:@nx/devkit@17.1.2",
       "data": {
-        "version": "1.1.2",
-        "packageName": "obuf",
-        "hash": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+        "version": "17.1.2",
+        "packageName": "@nx/devkit",
+        "hash": "sha512-9Izd9jsa++AaZSSlhi0zkv58k4clzE0kICurx9DjfWN6zXnD08HqJoUYCVVaeYS/SrWlQUbMig8e49BO8ZV5mw=="
       }
     },
-    "npm:fill-range": {
+    "npm:@nx/angular": {
       "type": "npm",
-      "name": "npm:fill-range",
+      "name": "npm:@nx/angular",
       "data": {
-        "version": "7.0.1",
-        "packageName": "fill-range",
-        "hash": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
+        "version": "17.1.2",
+        "packageName": "@nx/angular",
+        "hash": "sha512-qHJpeTQTJLMiDnC5hC/JC7NEYKgcyTwqx/ejyPlDjdzNbicgoPuTr4+c5gohC1wgZvuiW0bQ3FYQ2f9LVM7jRQ=="
       }
     },
-    "npm:optionator": {
+    "npm:p-limit@4.0.0": {
       "type": "npm",
-      "name": "npm:optionator",
+      "name": "npm:p-limit@4.0.0",
       "data": {
-        "version": "0.9.3",
-        "packageName": "optionator",
-        "hash": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg=="
+        "version": "4.0.0",
+        "packageName": "p-limit",
+        "hash": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ=="
       }
     },
-    "npm:y18n": {
+    "npm:immediate": {
       "type": "npm",
-      "name": "npm:y18n",
+      "name": "npm:immediate",
       "data": {
-        "version": "5.0.8",
-        "packageName": "y18n",
-        "hash": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
+        "version": "3.0.6",
+        "packageName": "immediate",
+        "hash": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
       }
     },
-    "npm:localtunnel": {
+    "npm:@schematics/angular": {
       "type": "npm",
-      "name": "npm:localtunnel",
+      "name": "npm:@schematics/angular",
       "data": {
-        "version": "2.0.2",
-        "packageName": "localtunnel",
-        "hash": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug=="
+        "version": "16.2.7",
+        "packageName": "@schematics/angular",
+        "hash": "sha512-sL+7vmwYPdo29rp99XYlm8gibqcjjOL5LKEleVQlv63SRES3HLMt7DeYivUfizcMENu/1hDtX41ig4Mu1SpNzg=="
       }
     },
-    "npm:memfs": {
+    "npm:estraverse@4.3.0": {
       "type": "npm",
-      "name": "npm:memfs",
+      "name": "npm:estraverse@4.3.0",
       "data": {
-        "version": "3.5.3",
-        "packageName": "memfs",
-        "hash": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw=="
+        "version": "4.3.0",
+        "packageName": "estraverse",
+        "hash": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
       }
     },
-    "npm:@npmcli/promise-spawn": {
+    "npm:isexe@3.1.1": {
       "type": "npm",
-      "name": "npm:@npmcli/promise-spawn",
+      "name": "npm:isexe@3.1.1",
       "data": {
-        "version": "7.0.0",
-        "packageName": "@npmcli/promise-spawn",
-        "hash": "sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ=="
+        "version": "3.1.1",
+        "packageName": "isexe",
+        "hash": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="
       }
     },
-    "npm:type-detect": {
+    "npm:@babel/plugin-transform-unicode-sets-regex": {
       "type": "npm",
-      "name": "npm:type-detect",
+      "name": "npm:@babel/plugin-transform-unicode-sets-regex",
       "data": {
-        "version": "4.0.8",
-        "packageName": "type-detect",
-        "hash": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-unicode-sets-regex",
+        "hash": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg=="
       }
     },
-    "npm:@angular/platform-browser": {
+    "npm:@esbuild/win32-x64": {
       "type": "npm",
-      "name": "npm:@angular/platform-browser",
+      "name": "npm:@esbuild/win32-x64",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/platform-browser",
-        "hash": "sha512-4SoW0yeAxgfcLIekKsvZVg/WgI5aQZyz9HGOoyBcVQ8coYoZmM9bAYQi+9zvyweqoWc+jgw72X1E8wtmMXt7Aw=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/win32-x64",
+        "hash": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw=="
       }
     },
-    "npm:minizlib": {
+    "npm:external-editor": {
       "type": "npm",
-      "name": "npm:minizlib",
+      "name": "npm:external-editor",
       "data": {
-        "version": "2.1.2",
-        "packageName": "minizlib",
-        "hash": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="
+        "version": "3.1.0",
+        "packageName": "external-editor",
+        "hash": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew=="
       }
     },
-    "npm:postcss-minify-params": {
+    "npm:jest-resolve": {
       "type": "npm",
-      "name": "npm:postcss-minify-params",
+      "name": "npm:jest-resolve",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-minify-params",
-        "hash": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ=="
+        "version": "29.7.0",
+        "packageName": "jest-resolve",
+        "hash": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA=="
       }
     },
-    "npm:@material/top-app-bar": {
+    "npm:merge2": {
       "type": "npm",
-      "name": "npm:@material/top-app-bar",
+      "name": "npm:merge2",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/top-app-bar",
-        "hash": "sha512-twQchmCa1In/FFrALPYojgeM8vmV7KH96wRY9NmPSJ046ANgPCicLBgLuSzrLETCFqAwbztqzxSG4xMBL81rYg=="
+        "version": "1.4.1",
+        "packageName": "merge2",
+        "hash": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
       }
     },
-    "npm:copy-webpack-plugin": {
+    "npm:fs-extra@3.0.1": {
       "type": "npm",
-      "name": "npm:copy-webpack-plugin",
+      "name": "npm:fs-extra@3.0.1",
       "data": {
-        "version": "11.0.0",
-        "packageName": "copy-webpack-plugin",
-        "hash": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ=="
+        "version": "3.0.1",
+        "packageName": "fs-extra",
+        "hash": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg=="
       }
     },
-    "npm:hdr-histogram-js": {
+    "npm:semver@7.5.3": {
       "type": "npm",
-      "name": "npm:hdr-histogram-js",
+      "name": "npm:semver@7.5.3",
       "data": {
-        "version": "2.0.3",
-        "packageName": "hdr-histogram-js",
-        "hash": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g=="
+        "version": "7.5.3",
+        "packageName": "semver",
+        "hash": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ=="
       }
     },
-    "npm:loader-utils@2.0.4": {
+    "npm:source-map-loader": {
       "type": "npm",
-      "name": "npm:loader-utils@2.0.4",
+      "name": "npm:source-map-loader",
       "data": {
-        "version": "2.0.4",
-        "packageName": "loader-utils",
-        "hash": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="
+        "version": "4.0.1",
+        "packageName": "source-map-loader",
+        "hash": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA=="
       }
     },
-    "npm:deepmerge": {
+    "npm:d3-scale": {
       "type": "npm",
-      "name": "npm:deepmerge",
+      "name": "npm:d3-scale",
       "data": {
-        "version": "4.3.1",
-        "packageName": "deepmerge",
-        "hash": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="
+        "version": "4.0.2",
+        "packageName": "d3-scale",
+        "hash": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="
       }
     },
-    "npm:@babel/plugin-syntax-bigint": {
+    "npm:jsesc": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-bigint",
+      "name": "npm:jsesc",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-bigint",
-        "hash": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg=="
+        "version": "2.5.2",
+        "packageName": "jsesc",
+        "hash": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
       }
     },
-    "npm:@material/animation": {
+    "npm:@jest/test-result": {
       "type": "npm",
-      "name": "npm:@material/animation",
+      "name": "npm:@jest/test-result",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/animation",
-        "hash": "sha512-0eV06UGYeuFwC/4t+yjg3LCRGRLq72ybBtJYzcBDpP4ASTjie0WmpAOFJYXRq2U5X/yxLviDMhpRemoSUjgZ0Q=="
+        "version": "29.7.0",
+        "packageName": "@jest/test-result",
+        "hash": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA=="
       }
     },
-    "npm:@material/touch-target": {
+    "npm:npm-install-checks": {
       "type": "npm",
-      "name": "npm:@material/touch-target",
+      "name": "npm:npm-install-checks",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/touch-target",
-        "hash": "sha512-ubyD1TUjZnRPEdDnk6Lrcm2ZsjnU7CV5y7IX8pj9IPawiM6bx4FkjZBxUvclbv3WiTGk5UOnwPOySYAJYAMQ1w=="
+        "version": "6.3.0",
+        "packageName": "npm-install-checks",
+        "hash": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw=="
       }
     },
-    "npm:@babel/plugin-transform-modules-umd": {
+    "npm:@assemblyscript/loader": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-modules-umd",
+      "name": "npm:@assemblyscript/loader",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-modules-umd",
-        "hash": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ=="
+        "version": "0.10.1",
+        "packageName": "@assemblyscript/loader",
+        "hash": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg=="
       }
     },
-    "npm:d3-timer": {
+    "npm:jsesc@0.5.0": {
       "type": "npm",
-      "name": "npm:d3-timer",
+      "name": "npm:jsesc@0.5.0",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-timer",
-        "hash": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="
+        "version": "0.5.0",
+        "packageName": "jsesc",
+        "hash": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA=="
       }
     },
-    "npm:escalade": {
+    "npm:flatted": {
       "type": "npm",
-      "name": "npm:escalade",
+      "name": "npm:flatted",
       "data": {
-        "version": "3.1.1",
-        "packageName": "escalade",
-        "hash": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+        "version": "3.2.9",
+        "packageName": "flatted",
+        "hash": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
       }
     },
-    "npm:@nx/nx-win32-x64-msvc": {
+    "npm:tree-kill": {
       "type": "npm",
-      "name": "npm:@nx/nx-win32-x64-msvc",
+      "name": "npm:tree-kill",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-win32-x64-msvc",
-        "hash": "sha512-XhET0BDk6fbvTBCs7m5gZii8+2WhLpiC1sZchJw4LAJN2VJBiy3I3xnvpQYGFOAWaCb/iUGpuN/qP/NlQ+LNgA=="
+        "version": "1.2.2",
+        "packageName": "tree-kill",
+        "hash": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="
       }
     },
-    "npm:validate-npm-package-license": {
+    "npm:w3c-keyname": {
       "type": "npm",
-      "name": "npm:validate-npm-package-license",
+      "name": "npm:w3c-keyname",
       "data": {
-        "version": "3.0.4",
-        "packageName": "validate-npm-package-license",
-        "hash": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="
+        "version": "2.2.8",
+        "packageName": "w3c-keyname",
+        "hash": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
       }
     },
-    "npm:async": {
+    "npm:@nx/devkit": {
       "type": "npm",
-      "name": "npm:async",
+      "name": "npm:@nx/devkit",
       "data": {
-        "version": "3.2.4",
-        "packageName": "async",
-        "hash": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
+        "version": "17.0.2",
+        "packageName": "@nx/devkit",
+        "hash": "sha512-gtJNrFtGZa96qAM4ijAvoCLj/LuUr+Jq91QITsYE4cvYL0qan4zGcAOBMclzpaXVN9pwpko+veDwHwnmp/SXTg=="
       }
     },
-    "npm:parse-node-version": {
+    "npm:@typescript-eslint/visitor-keys": {
       "type": "npm",
-      "name": "npm:parse-node-version",
+      "name": "npm:@typescript-eslint/visitor-keys",
       "data": {
-        "version": "1.0.1",
-        "packageName": "parse-node-version",
-        "hash": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
+        "version": "6.11.0",
+        "packageName": "@typescript-eslint/visitor-keys",
+        "hash": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ=="
       }
     },
-    "npm:punycode": {
+    "npm:flat-cache": {
       "type": "npm",
-      "name": "npm:punycode",
+      "name": "npm:flat-cache",
       "data": {
-        "version": "2.3.0",
-        "packageName": "punycode",
-        "hash": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
+        "version": "3.2.0",
+        "packageName": "flat-cache",
+        "hash": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="
       }
     },
-    "npm:@nx/workspace@17.1.2": {
+    "npm:@babel/plugin-transform-arrow-functions": {
       "type": "npm",
-      "name": "npm:@nx/workspace@17.1.2",
+      "name": "npm:@babel/plugin-transform-arrow-functions",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/workspace",
-        "hash": "sha512-lmdfWyspRgk7XewKU/5bjr6PieShJemDJpaSI+/H5utOeT8QeXVmNj+DDizig4eobwK0b6OXb0Vgnc7osbgjlw=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-arrow-functions",
+        "hash": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw=="
       }
     },
-    "npm:read-package-json-fast": {
+    "npm:@angular/cdk": {
       "type": "npm",
-      "name": "npm:read-package-json-fast",
+      "name": "npm:@angular/cdk",
       "data": {
-        "version": "3.0.2",
-        "packageName": "read-package-json-fast",
-        "hash": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw=="
+        "version": "17.0.0",
+        "packageName": "@angular/cdk",
+        "hash": "sha512-8F1z0YhDjKWqB29+AUh33OKr2Ts5PVUUogVXEVmmPipPDtj82iIQLbtBnR6xpWvmsw9mS3oD76EwBoUhHQgi6g=="
       }
     },
-    "npm:@material/card": {
+    "npm:d3-contour": {
       "type": "npm",
-      "name": "npm:@material/card",
+      "name": "npm:d3-contour",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/card",
-        "hash": "sha512-+rYUnBPgv5QVF6BeUs3toIRdSwFVohGmjk2ptTXMZkKxqAJt7Nr9Znbm3Ym2hD8GUHJeh3pyGFvEs6rG6JMYAw=="
+        "version": "4.0.2",
+        "packageName": "d3-contour",
+        "hash": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="
       }
     },
-    "npm:@typescript-eslint/type-utils": {
+    "npm:eventemitter3": {
       "type": "npm",
-      "name": "npm:@typescript-eslint/type-utils",
+      "name": "npm:eventemitter3",
       "data": {
-        "version": "6.11.0",
-        "packageName": "@typescript-eslint/type-utils",
-        "hash": "sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA=="
+        "version": "4.0.7",
+        "packageName": "eventemitter3",
+        "hash": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
       }
     },
-    "npm:fs-extra@10.1.0": {
+    "npm:ipaddr.js": {
       "type": "npm",
-      "name": "npm:fs-extra@10.1.0",
+      "name": "npm:ipaddr.js",
       "data": {
-        "version": "10.1.0",
-        "packageName": "fs-extra",
-        "hash": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="
+        "version": "2.1.0",
+        "packageName": "ipaddr.js",
+        "hash": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ=="
       }
     },
-    "npm:external-editor": {
+    "npm:readable-stream@2.3.8": {
       "type": "npm",
-      "name": "npm:external-editor",
+      "name": "npm:readable-stream@2.3.8",
       "data": {
-        "version": "3.1.0",
-        "packageName": "external-editor",
-        "hash": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew=="
+        "version": "2.3.8",
+        "packageName": "readable-stream",
+        "hash": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="
       }
     },
-    "npm:dompurify": {
+    "npm:regenerate-unicode-properties": {
       "type": "npm",
-      "name": "npm:dompurify",
+      "name": "npm:regenerate-unicode-properties",
       "data": {
-        "version": "3.0.6",
-        "packageName": "dompurify",
-        "hash": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w=="
+        "version": "10.1.1",
+        "packageName": "regenerate-unicode-properties",
+        "hash": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q=="
       }
     },
-    "npm:minipass-fetch": {
+    "npm:unique-filename": {
       "type": "npm",
-      "name": "npm:minipass-fetch",
+      "name": "npm:unique-filename",
       "data": {
-        "version": "3.0.4",
-        "packageName": "minipass-fetch",
-        "hash": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="
+        "version": "3.0.0",
+        "packageName": "unique-filename",
+        "hash": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g=="
       }
     },
-    "npm:mkdirp": {
+    "npm:postcss-normalize-string": {
       "type": "npm",
-      "name": "npm:mkdirp",
+      "name": "npm:postcss-normalize-string",
       "data": {
-        "version": "0.5.6",
-        "packageName": "mkdirp",
-        "hash": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-string",
+        "hash": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w=="
       }
     },
-    "npm:@npmcli/installed-package-contents": {
+    "npm:d3-array@2.12.1": {
       "type": "npm",
-      "name": "npm:@npmcli/installed-package-contents",
+      "name": "npm:d3-array@2.12.1",
       "data": {
-        "version": "2.0.2",
-        "packageName": "@npmcli/installed-package-contents",
-        "hash": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ=="
+        "version": "2.12.1",
+        "packageName": "d3-array",
+        "hash": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="
       }
     },
-    "npm:tsconfig-paths": {
+    "npm:@pkgjs/parseargs": {
       "type": "npm",
-      "name": "npm:tsconfig-paths",
+      "name": "npm:@pkgjs/parseargs",
       "data": {
-        "version": "4.2.0",
-        "packageName": "tsconfig-paths",
-        "hash": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg=="
+        "version": "0.11.0",
+        "packageName": "@pkgjs/parseargs",
+        "hash": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="
       }
     },
-    "npm:@nx/nx-freebsd-x64@17.1.2": {
+    "npm:@material/typography": {
       "type": "npm",
-      "name": "npm:@nx/nx-freebsd-x64@17.1.2",
+      "name": "npm:@material/typography",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-freebsd-x64",
-        "hash": "sha512-6rDuFHJREVg5XpcM5RlE8pHP4bgcbns8sSemF/g75SV4iEkBqxRvSe88oBtF44b7IpX2zdONRDV4qQcRf3DxRg=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/typography",
+        "hash": "sha512-eXzBl9ROzWZ+41nan5pCrn1C/Zq3o/VsrLFaGv8fdRmhRR6/wHMeuvCCwGf5VtEmWdAE9FpJzRU/4ZPiJCJUyg=="
       }
     },
-    "npm:source-map-loader": {
+    "npm:@babel/plugin-transform-spread": {
       "type": "npm",
-      "name": "npm:source-map-loader",
+      "name": "npm:@babel/plugin-transform-spread",
       "data": {
-        "version": "4.0.1",
-        "packageName": "source-map-loader",
-        "hash": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-spread",
+        "hash": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg=="
       }
     },
-    "npm:read-cache": {
+    "npm:imurmurhash": {
       "type": "npm",
-      "name": "npm:read-cache",
+      "name": "npm:imurmurhash",
       "data": {
-        "version": "1.0.0",
-        "packageName": "read-cache",
-        "hash": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="
+        "version": "0.1.4",
+        "packageName": "imurmurhash",
+        "hash": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
       }
     },
-    "npm:os-tmpdir": {
+    "npm:@socket.io/component-emitter": {
       "type": "npm",
-      "name": "npm:os-tmpdir",
+      "name": "npm:@socket.io/component-emitter",
       "data": {
-        "version": "1.0.2",
-        "packageName": "os-tmpdir",
-        "hash": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="
+        "version": "3.1.0",
+        "packageName": "@socket.io/component-emitter",
+        "hash": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
       }
     },
-    "npm:css-select": {
+    "npm:@babel/plugin-transform-optional-chaining": {
       "type": "npm",
-      "name": "npm:css-select",
+      "name": "npm:@babel/plugin-transform-optional-chaining",
       "data": {
-        "version": "5.1.0",
-        "packageName": "css-select",
-        "hash": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="
+        "version": "7.23.0",
+        "packageName": "@babel/plugin-transform-optional-chaining",
+        "hash": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g=="
       }
     },
-    "npm:fs-extra@3.0.1": {
+    "npm:pkg-dir@4.2.0": {
       "type": "npm",
-      "name": "npm:fs-extra@3.0.1",
+      "name": "npm:pkg-dir@4.2.0",
       "data": {
-        "version": "3.0.1",
-        "packageName": "fs-extra",
-        "hash": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg=="
+        "version": "4.2.0",
+        "packageName": "pkg-dir",
+        "hash": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ=="
       }
     },
-    "npm:@material/banner": {
+    "npm:@babel/plugin-syntax-async-generators": {
       "type": "npm",
-      "name": "npm:@material/banner",
+      "name": "npm:@babel/plugin-syntax-async-generators",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/banner",
-        "hash": "sha512-PBLgH7JEbEpTkLy33oyWXUhIFmSsdOrR6Gn6qIgQRo1qrnk5RSBGW2gEq4Z6793vjxM107gKudDb23E4Fcu4vg=="
+        "version": "7.8.4",
+        "packageName": "@babel/plugin-syntax-async-generators",
+        "hash": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw=="
       }
     },
-    "npm:@esbuild/win32-arm64": {
+    "npm:content-type": {
       "type": "npm",
-      "name": "npm:@esbuild/win32-arm64",
+      "name": "npm:content-type",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/win32-arm64",
-        "hash": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg=="
+        "version": "1.0.5",
+        "packageName": "content-type",
+        "hash": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
       }
     },
-    "npm:http-proxy-agent": {
+    "npm:d3-dispatch": {
       "type": "npm",
-      "name": "npm:http-proxy-agent",
+      "name": "npm:d3-dispatch",
       "data": {
-        "version": "7.0.0",
-        "packageName": "http-proxy-agent",
-        "hash": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ=="
+        "version": "3.0.1",
+        "packageName": "d3-dispatch",
+        "hash": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="
       }
     },
-    "npm:locate-path@7.2.0": {
+    "npm:is-fullwidth-code-point": {
       "type": "npm",
-      "name": "npm:locate-path@7.2.0",
+      "name": "npm:is-fullwidth-code-point",
       "data": {
-        "version": "7.2.0",
-        "packageName": "locate-path",
-        "hash": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA=="
+        "version": "3.0.0",
+        "packageName": "is-fullwidth-code-point",
+        "hash": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
       }
     },
-    "npm:acorn-walk": {
+    "npm:@humanwhocodes/module-importer": {
       "type": "npm",
-      "name": "npm:acorn-walk",
+      "name": "npm:@humanwhocodes/module-importer",
       "data": {
-        "version": "8.3.0",
-        "packageName": "acorn-walk",
-        "hash": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA=="
+        "version": "1.0.1",
+        "packageName": "@humanwhocodes/module-importer",
+        "hash": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
       }
     },
-    "npm:setprototypeof@1.1.0": {
+    "npm:npm-bundled": {
       "type": "npm",
-      "name": "npm:setprototypeof@1.1.0",
+      "name": "npm:npm-bundled",
       "data": {
-        "version": "1.1.0",
-        "packageName": "setprototypeof",
-        "hash": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+        "version": "3.0.0",
+        "packageName": "npm-bundled",
+        "hash": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ=="
       }
     },
-    "npm:wcwidth": {
+    "npm:@xtuc/long": {
       "type": "npm",
-      "name": "npm:wcwidth",
+      "name": "npm:@xtuc/long",
       "data": {
-        "version": "1.0.1",
-        "packageName": "wcwidth",
-        "hash": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="
+        "version": "4.2.2",
+        "packageName": "@xtuc/long",
+        "hash": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
       }
     },
-    "npm:exit": {
+    "npm:path-to-regexp": {
       "type": "npm",
-      "name": "npm:exit",
+      "name": "npm:path-to-regexp",
       "data": {
-        "version": "0.1.2",
-        "packageName": "exit",
-        "hash": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ=="
+        "version": "0.1.7",
+        "packageName": "path-to-regexp",
+        "hash": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
       }
     },
-    "npm:cssesc": {
+    "npm:esprima": {
       "type": "npm",
-      "name": "npm:cssesc",
+      "name": "npm:esprima",
       "data": {
-        "version": "3.0.0",
-        "packageName": "cssesc",
-        "hash": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+        "version": "4.0.1",
+        "packageName": "esprima",
+        "hash": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
       }
     },
-    "npm:abab": {
+    "npm:commander@7.2.0": {
       "type": "npm",
-      "name": "npm:abab",
+      "name": "npm:commander@7.2.0",
       "data": {
-        "version": "2.0.6",
-        "packageName": "abab",
-        "hash": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
+        "version": "7.2.0",
+        "packageName": "commander",
+        "hash": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
       }
     },
-    "npm:json-parse-even-better-errors": {
+    "npm:create-require": {
       "type": "npm",
-      "name": "npm:json-parse-even-better-errors",
+      "name": "npm:create-require",
       "data": {
-        "version": "2.3.1",
-        "packageName": "json-parse-even-better-errors",
-        "hash": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+        "version": "1.1.1",
+        "packageName": "create-require",
+        "hash": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
       }
     },
-    "npm:object-inspect": {
+    "npm:string-length": {
       "type": "npm",
-      "name": "npm:object-inspect",
+      "name": "npm:string-length",
       "data": {
-        "version": "1.13.1",
-        "packageName": "object-inspect",
-        "hash": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
+        "version": "4.0.2",
+        "packageName": "string-length",
+        "hash": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ=="
       }
     },
-    "npm:unicode-match-property-value-ecmascript": {
+    "npm:@babel/plugin-syntax-jsx": {
       "type": "npm",
-      "name": "npm:unicode-match-property-value-ecmascript",
+      "name": "npm:@babel/plugin-syntax-jsx",
       "data": {
-        "version": "2.1.0",
-        "packageName": "unicode-match-property-value-ecmascript",
-        "hash": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA=="
+        "version": "7.23.3",
+        "packageName": "@babel/plugin-syntax-jsx",
+        "hash": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg=="
       }
     },
-    "npm:union": {
+    "npm:diff@5.1.0": {
       "type": "npm",
-      "name": "npm:union",
+      "name": "npm:diff@5.1.0",
       "data": {
-        "version": "0.5.0",
-        "packageName": "union",
-        "hash": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA=="
+        "version": "5.1.0",
+        "packageName": "diff",
+        "hash": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw=="
       }
     },
-    "npm:@types/express": {
+    "npm:@ng-bootstrap/ng-bootstrap": {
       "type": "npm",
-      "name": "npm:@types/express",
+      "name": "npm:@ng-bootstrap/ng-bootstrap",
       "data": {
-        "version": "4.17.20",
-        "packageName": "@types/express",
-        "hash": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw=="
+        "version": "16.0.0-rc.2",
+        "packageName": "@ng-bootstrap/ng-bootstrap",
+        "hash": "sha512-XQUOr6OfAYA9FK1e9tsKJiuKYGkNeO3vCkbCryWDWZzWaehvOWLcB214RUVBeoxynd4c/n2PmQRGnKcJLTAeSA=="
       }
     },
-    "npm:prismjs": {
+    "npm:micromark-util-chunked": {
       "type": "npm",
-      "name": "npm:prismjs",
+      "name": "npm:micromark-util-chunked",
       "data": {
-        "version": "1.29.0",
-        "packageName": "prismjs",
-        "hash": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-chunked",
+        "hash": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ=="
       }
     },
-    "npm:depd@1.1.2": {
+    "npm:proc-log": {
       "type": "npm",
-      "name": "npm:depd@1.1.2",
+      "name": "npm:proc-log",
       "data": {
-        "version": "1.1.2",
-        "packageName": "depd",
-        "hash": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
+        "version": "3.0.0",
+        "packageName": "proc-log",
+        "hash": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A=="
       }
     },
-    "npm:path-exists": {
+    "npm:tar-stream": {
       "type": "npm",
-      "name": "npm:path-exists",
+      "name": "npm:tar-stream",
       "data": {
-        "version": "4.0.0",
-        "packageName": "path-exists",
-        "hash": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+        "version": "2.2.0",
+        "packageName": "tar-stream",
+        "hash": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="
       }
     },
-    "npm:@nx/js": {
+    "npm:@babel/plugin-transform-function-name": {
       "type": "npm",
-      "name": "npm:@nx/js",
+      "name": "npm:@babel/plugin-transform-function-name",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/js",
-        "hash": "sha512-3fPiOEw+iD1Bc+AvfdGgMSCYDYxAGmZ01lHp/RERTyCHroEoMiq8yiTBbET6TPOvKOBMXA+pR2Ux04QA3S4N6Q=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-function-name",
+        "hash": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg=="
       }
     },
-    "npm:openurl": {
+    "npm:@material/snackbar": {
       "type": "npm",
-      "name": "npm:openurl",
+      "name": "npm:@material/snackbar",
       "data": {
-        "version": "1.1.1",
-        "packageName": "openurl",
-        "hash": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/snackbar",
+        "hash": "sha512-2NAtC1qozR/uajszZnPy08Ej8HNnpgvCjNCBerDN4SLH2Q0/aWrVrUjqRCp2ayAvsX+szoroGbCboMhaWRzDuQ=="
       }
     },
-    "npm:d3-shape@1.3.7": {
+    "npm:@npmcli/agent": {
       "type": "npm",
-      "name": "npm:d3-shape@1.3.7",
+      "name": "npm:@npmcli/agent",
       "data": {
-        "version": "1.3.7",
-        "packageName": "d3-shape",
-        "hash": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="
+        "version": "2.2.0",
+        "packageName": "@npmcli/agent",
+        "hash": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q=="
       }
     },
-    "npm:mute-stream": {
+    "npm:@babel/helper-builder-binary-assignment-operator-visitor": {
       "type": "npm",
-      "name": "npm:mute-stream",
+      "name": "npm:@babel/helper-builder-binary-assignment-operator-visitor",
       "data": {
-        "version": "1.0.0",
-        "packageName": "mute-stream",
-        "hash": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA=="
+        "version": "7.22.15",
+        "packageName": "@babel/helper-builder-binary-assignment-operator-visitor",
+        "hash": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw=="
       }
     },
-    "npm:buffer-from": {
+    "npm:@types/http-errors": {
       "type": "npm",
-      "name": "npm:buffer-from",
+      "name": "npm:@types/http-errors",
       "data": {
-        "version": "1.1.2",
-        "packageName": "buffer-from",
-        "hash": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+        "version": "2.0.3",
+        "packageName": "@types/http-errors",
+        "hash": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA=="
       }
     },
-    "npm:lodash.debounce": {
+    "npm:immutable": {
       "type": "npm",
-      "name": "npm:lodash.debounce",
+      "name": "npm:immutable",
       "data": {
-        "version": "4.0.8",
-        "packageName": "lodash.debounce",
-        "hash": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+        "version": "4.3.4",
+        "packageName": "immutable",
+        "hash": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA=="
       }
     },
-    "npm:neo-async": {
+    "npm:babel-plugin-istanbul": {
       "type": "npm",
-      "name": "npm:neo-async",
+      "name": "npm:babel-plugin-istanbul",
       "data": {
-        "version": "2.6.2",
-        "packageName": "neo-async",
-        "hash": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+        "version": "6.1.1",
+        "packageName": "babel-plugin-istanbul",
+        "hash": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA=="
       }
     },
-    "npm:ent": {
+    "npm:dom-serializer": {
       "type": "npm",
-      "name": "npm:ent",
+      "name": "npm:dom-serializer",
       "data": {
-        "version": "2.2.0",
-        "packageName": "ent",
-        "hash": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA=="
+        "version": "2.0.0",
+        "packageName": "dom-serializer",
+        "hash": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="
       }
     },
-    "npm:parseurl": {
+    "npm:is-number": {
       "type": "npm",
-      "name": "npm:parseurl",
+      "name": "npm:is-number",
       "data": {
-        "version": "1.3.3",
-        "packageName": "parseurl",
-        "hash": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        "version": "7.0.0",
+        "packageName": "is-number",
+        "hash": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
       }
     },
-    "npm:css-tree@2.2.1": {
+    "npm:mini-css-extract-plugin@2.4.7": {
       "type": "npm",
-      "name": "npm:css-tree@2.2.1",
-      "data": {
-        "version": "2.2.1",
-        "packageName": "css-tree",
-        "hash": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="
+      "name": "npm:mini-css-extract-plugin@2.4.7",
+      "data": {
+        "version": "2.4.7",
+        "packageName": "mini-css-extract-plugin",
+        "hash": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg=="
       }
     },
-    "npm:jest-diff": {
+    "npm:json-stable-stringify-without-jsonify": {
       "type": "npm",
-      "name": "npm:jest-diff",
+      "name": "npm:json-stable-stringify-without-jsonify",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-diff",
-        "hash": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw=="
+        "version": "1.0.1",
+        "packageName": "json-stable-stringify-without-jsonify",
+        "hash": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
       }
     },
-    "npm:@babel/helper-define-polyfill-provider": {
+    "npm:yargs": {
       "type": "npm",
-      "name": "npm:@babel/helper-define-polyfill-provider",
+      "name": "npm:yargs",
       "data": {
-        "version": "0.4.3",
-        "packageName": "@babel/helper-define-polyfill-provider",
-        "hash": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug=="
+        "version": "17.7.2",
+        "packageName": "yargs",
+        "hash": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="
       }
     },
-    "npm:cosmiconfig": {
+    "npm:portscanner": {
       "type": "npm",
-      "name": "npm:cosmiconfig",
+      "name": "npm:portscanner",
       "data": {
-        "version": "8.3.6",
-        "packageName": "cosmiconfig",
-        "hash": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA=="
+        "version": "2.2.0",
+        "packageName": "portscanner",
+        "hash": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw=="
       }
     },
-    "npm:uuid@3.4.0": {
+    "npm:@babel/plugin-transform-block-scoped-functions": {
       "type": "npm",
-      "name": "npm:uuid@3.4.0",
+      "name": "npm:@babel/plugin-transform-block-scoped-functions",
       "data": {
-        "version": "3.4.0",
-        "packageName": "uuid",
-        "hash": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-block-scoped-functions",
+        "hash": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA=="
       }
     },
-    "npm:path-scurry": {
+    "npm:@babel/plugin-syntax-class-static-block": {
       "type": "npm",
-      "name": "npm:path-scurry",
+      "name": "npm:@babel/plugin-syntax-class-static-block",
       "data": {
-        "version": "1.10.1",
-        "packageName": "path-scurry",
-        "hash": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="
+        "version": "7.14.5",
+        "packageName": "@babel/plugin-syntax-class-static-block",
+        "hash": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw=="
       }
     },
-    "npm:react-is": {
+    "npm:error-ex": {
       "type": "npm",
-      "name": "npm:react-is",
+      "name": "npm:error-ex",
       "data": {
-        "version": "18.2.0",
-        "packageName": "react-is",
-        "hash": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+        "version": "1.3.2",
+        "packageName": "error-ex",
+        "hash": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="
       }
     },
-    "npm:eslint-visitor-keys": {
+    "npm:@nx/jest": {
       "type": "npm",
-      "name": "npm:eslint-visitor-keys",
+      "name": "npm:@nx/jest",
       "data": {
-        "version": "3.4.3",
-        "packageName": "eslint-visitor-keys",
-        "hash": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
+        "version": "17.1.2",
+        "packageName": "@nx/jest",
+        "hash": "sha512-rgwowVMbSR9/U9yzTX2LqDFpsvQ9QkWC/dEpn2jHXMYEU5qu0rbW6mnKSuQ+sHN4Fn6UgesFrYAZCwEPx+izpQ=="
       }
     },
-    "npm:webpack-dev-server": {
+    "npm:leven": {
       "type": "npm",
-      "name": "npm:webpack-dev-server",
+      "name": "npm:leven",
       "data": {
-        "version": "4.15.1",
-        "packageName": "webpack-dev-server",
-        "hash": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA=="
+        "version": "3.1.0",
+        "packageName": "leven",
+        "hash": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
       }
     },
-    "npm:@material/tooltip": {
+    "npm:postcss-convert-values": {
       "type": "npm",
-      "name": "npm:@material/tooltip",
+      "name": "npm:postcss-convert-values",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/tooltip",
-        "hash": "sha512-Ja2Z4aZQkYWD6InXA+MG4M9zdKR6dYsXXlYzQppYpfcQzXylZqh5Y7WBLulG5fA2o83pHVwILfwFZM7j7ht08Q=="
+        "version": "6.0.0",
+        "packageName": "postcss-convert-values",
+        "hash": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw=="
       }
     },
-    "npm:@jridgewell/resolve-uri": {
+    "npm:reusify": {
       "type": "npm",
-      "name": "npm:@jridgewell/resolve-uri",
+      "name": "npm:reusify",
       "data": {
-        "version": "3.1.1",
-        "packageName": "@jridgewell/resolve-uri",
-        "hash": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA=="
+        "version": "1.0.4",
+        "packageName": "reusify",
+        "hash": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
       }
     },
-    "npm:p-retry": {
+    "npm:emittery": {
       "type": "npm",
-      "name": "npm:p-retry",
+      "name": "npm:emittery",
       "data": {
-        "version": "4.6.2",
-        "packageName": "p-retry",
-        "hash": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="
+        "version": "0.13.1",
+        "packageName": "emittery",
+        "hash": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ=="
       }
     },
-    "npm:content-disposition": {
+    "npm:d3-time": {
       "type": "npm",
-      "name": "npm:content-disposition",
+      "name": "npm:d3-time",
       "data": {
-        "version": "0.5.4",
-        "packageName": "content-disposition",
-        "hash": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="
+        "version": "3.1.0",
+        "packageName": "d3-time",
+        "hash": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="
       }
     },
-    "npm:browser-sync": {
+    "npm:jest-watcher": {
       "type": "npm",
-      "name": "npm:browser-sync",
+      "name": "npm:jest-watcher",
       "data": {
-        "version": "2.29.3",
-        "packageName": "browser-sync",
-        "hash": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg=="
+        "version": "29.7.0",
+        "packageName": "jest-watcher",
+        "hash": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g=="
       }
     },
-    "npm:compressible": {
+    "npm:parse5-html-rewriting-stream": {
       "type": "npm",
-      "name": "npm:compressible",
+      "name": "npm:parse5-html-rewriting-stream",
       "data": {
-        "version": "2.0.18",
-        "packageName": "compressible",
-        "hash": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="
+        "version": "7.0.0",
+        "packageName": "parse5-html-rewriting-stream",
+        "hash": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg=="
       }
     },
-    "npm:concat-map": {
+    "npm:@material/card": {
       "type": "npm",
-      "name": "npm:concat-map",
+      "name": "npm:@material/card",
       "data": {
-        "version": "0.0.1",
-        "packageName": "concat-map",
-        "hash": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/card",
+        "hash": "sha512-+rYUnBPgv5QVF6BeUs3toIRdSwFVohGmjk2ptTXMZkKxqAJt7Nr9Znbm3Ym2hD8GUHJeh3pyGFvEs6rG6JMYAw=="
       }
     },
-    "npm:@material/base": {
+    "npm:postcss-normalize-whitespace": {
       "type": "npm",
-      "name": "npm:@material/base",
+      "name": "npm:postcss-normalize-whitespace",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/base",
-        "hash": "sha512-/ob3v3IFU8q2gGdVNWw5kNPjW2mRTeBIz1YdhGWUmRxKn2Kl8bdLOvrAmZtQMmPn/4cGXvinxpec/zVBWQKDkA=="
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-whitespace",
+        "hash": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw=="
       }
     },
-    "npm:inherits": {
+    "npm:express": {
       "type": "npm",
-      "name": "npm:inherits",
+      "name": "npm:express",
       "data": {
-        "version": "2.0.4",
-        "packageName": "inherits",
-        "hash": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        "version": "4.18.2",
+        "packageName": "express",
+        "hash": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ=="
       }
     },
-    "npm:@eslint/eslintrc": {
+    "npm:os-tmpdir": {
       "type": "npm",
-      "name": "npm:@eslint/eslintrc",
+      "name": "npm:os-tmpdir",
       "data": {
-        "version": "2.1.3",
-        "packageName": "@eslint/eslintrc",
-        "hash": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA=="
+        "version": "1.0.2",
+        "packageName": "os-tmpdir",
+        "hash": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="
       }
     },
-    "npm:serve-static": {
+    "npm:@tsconfig/node12": {
       "type": "npm",
-      "name": "npm:serve-static",
+      "name": "npm:@tsconfig/node12",
       "data": {
-        "version": "1.15.0",
-        "packageName": "serve-static",
-        "hash": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g=="
+        "version": "1.0.11",
+        "packageName": "@tsconfig/node12",
+        "hash": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="
       }
     },
-    "npm:escape-string-regexp@5.0.0": {
+    "npm:strip-final-newline": {
       "type": "npm",
-      "name": "npm:escape-string-regexp@5.0.0",
+      "name": "npm:strip-final-newline",
       "data": {
-        "version": "5.0.0",
-        "packageName": "escape-string-regexp",
-        "hash": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
+        "version": "2.0.0",
+        "packageName": "strip-final-newline",
+        "hash": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
       }
     },
-    "npm:proc-log": {
+    "npm:media-typer": {
       "type": "npm",
-      "name": "npm:proc-log",
+      "name": "npm:media-typer",
       "data": {
-        "version": "3.0.0",
-        "packageName": "proc-log",
-        "hash": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A=="
+        "version": "0.3.0",
+        "packageName": "media-typer",
+        "hash": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
       }
     },
-    "npm:regjsparser": {
+    "npm:jest-snapshot": {
       "type": "npm",
-      "name": "npm:regjsparser",
+      "name": "npm:jest-snapshot",
       "data": {
-        "version": "0.9.1",
-        "packageName": "regjsparser",
-        "hash": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ=="
+        "version": "29.7.0",
+        "packageName": "jest-snapshot",
+        "hash": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw=="
       }
     },
-    "npm:easy-extender": {
+    "npm:lie": {
       "type": "npm",
-      "name": "npm:easy-extender",
+      "name": "npm:lie",
       "data": {
-        "version": "2.3.4",
-        "packageName": "easy-extender",
-        "hash": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q=="
+        "version": "3.1.1",
+        "packageName": "lie",
+        "hash": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw=="
       }
     },
-    "npm:safer-buffer": {
+    "npm:source-map@0.6.1": {
       "type": "npm",
-      "name": "npm:safer-buffer",
+      "name": "npm:source-map@0.6.1",
       "data": {
-        "version": "2.1.2",
-        "packageName": "safer-buffer",
-        "hash": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+        "version": "0.6.1",
+        "packageName": "source-map",
+        "hash": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
       }
     },
-    "npm:@nx/linter": {
+    "npm:fs-monkey": {
       "type": "npm",
-      "name": "npm:@nx/linter",
+      "name": "npm:fs-monkey",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/linter",
-        "hash": "sha512-KS7jq61Fg2tiB+PDui3+zH9RANZV/rYyg1yzKe/Say7DabcZDziHmxw5t/JZE7JlTA2Kmy7HBMRgvJsqxOlukQ=="
+        "version": "1.0.5",
+        "packageName": "fs-monkey",
+        "hash": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew=="
       }
     },
-    "npm:wrap-ansi": {
+    "npm:@babel/plugin-transform-numeric-separator": {
       "type": "npm",
-      "name": "npm:wrap-ansi",
+      "name": "npm:@babel/plugin-transform-numeric-separator",
       "data": {
-        "version": "7.0.0",
-        "packageName": "wrap-ansi",
-        "hash": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-numeric-separator",
+        "hash": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg=="
       }
     },
-    "npm:vary": {
+    "npm:wrap-ansi@8.1.0": {
       "type": "npm",
-      "name": "npm:vary",
+      "name": "npm:wrap-ansi@8.1.0",
       "data": {
-        "version": "1.1.2",
-        "packageName": "vary",
-        "hash": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
+        "version": "8.1.0",
+        "packageName": "wrap-ansi",
+        "hash": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="
       }
     },
-    "npm:mime": {
+    "npm:connect": {
       "type": "npm",
-      "name": "npm:mime",
+      "name": "npm:connect",
       "data": {
-        "version": "2.6.0",
-        "packageName": "mime",
-        "hash": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
+        "version": "3.7.0",
+        "packageName": "connect",
+        "hash": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ=="
       }
     },
-    "npm:@babel/plugin-syntax-numeric-separator": {
+    "npm:ajv-formats": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-numeric-separator",
+      "name": "npm:ajv-formats",
       "data": {
-        "version": "7.10.4",
-        "packageName": "@babel/plugin-syntax-numeric-separator",
-        "hash": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug=="
+        "version": "2.1.1",
+        "packageName": "ajv-formats",
+        "hash": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="
       }
     },
-    "npm:abbrev": {
+    "npm:less-loader": {
       "type": "npm",
-      "name": "npm:abbrev",
+      "name": "npm:less-loader",
       "data": {
-        "version": "2.0.0",
-        "packageName": "abbrev",
-        "hash": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="
+        "version": "11.1.0",
+        "packageName": "less-loader",
+        "hash": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug=="
       }
     },
-    "npm:@material/data-table": {
+    "npm:node-machine-id": {
       "type": "npm",
-      "name": "npm:@material/data-table",
+      "name": "npm:node-machine-id",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/data-table",
-        "hash": "sha512-89qVOjR7gqby6fsmh7tKj29SjQ2sGLXu2IzCeX3Vni4mz+xxo5dv11jxYNADvdgJDfhyDJFPh1FlqAH7O09nFA=="
+        "version": "1.1.12",
+        "packageName": "node-machine-id",
+        "hash": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ=="
       }
     },
-    "npm:ansi-escapes": {
+    "npm:unicode-property-aliases-ecmascript": {
       "type": "npm",
-      "name": "npm:ansi-escapes",
+      "name": "npm:unicode-property-aliases-ecmascript",
       "data": {
-        "version": "4.3.2",
-        "packageName": "ansi-escapes",
-        "hash": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="
+        "version": "2.1.0",
+        "packageName": "unicode-property-aliases-ecmascript",
+        "hash": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="
       }
     },
-    "npm:find-up": {
+    "npm:@types/connect-history-api-fallback": {
       "type": "npm",
-      "name": "npm:find-up",
+      "name": "npm:@types/connect-history-api-fallback",
       "data": {
-        "version": "4.1.0",
-        "packageName": "find-up",
-        "hash": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="
+        "version": "1.5.2",
+        "packageName": "@types/connect-history-api-fallback",
+        "hash": "sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q=="
       }
     },
-    "npm:is-generator-fn": {
+    "npm:@zkochan/js-yaml": {
       "type": "npm",
-      "name": "npm:is-generator-fn",
+      "name": "npm:@zkochan/js-yaml",
       "data": {
-        "version": "2.1.0",
-        "packageName": "is-generator-fn",
-        "hash": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ=="
+        "version": "0.0.6",
+        "packageName": "@zkochan/js-yaml",
+        "hash": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg=="
       }
     },
-    "npm:jest-regex-util": {
+    "npm:compression": {
       "type": "npm",
-      "name": "npm:jest-regex-util",
+      "name": "npm:compression",
       "data": {
-        "version": "29.6.3",
-        "packageName": "jest-regex-util",
-        "hash": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg=="
+        "version": "1.7.4",
+        "packageName": "compression",
+        "hash": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ=="
       }
     },
-    "npm:inflight": {
+    "npm:@babel/plugin-syntax-class-properties": {
       "type": "npm",
-      "name": "npm:inflight",
+      "name": "npm:@babel/plugin-syntax-class-properties",
       "data": {
-        "version": "1.0.6",
-        "packageName": "inflight",
-        "hash": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
+        "version": "7.12.13",
+        "packageName": "@babel/plugin-syntax-class-properties",
+        "hash": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA=="
       }
     },
-    "npm:file-entry-cache": {
+    "npm:internmap@1.0.1": {
       "type": "npm",
-      "name": "npm:file-entry-cache",
+      "name": "npm:internmap@1.0.1",
       "data": {
-        "version": "6.0.1",
-        "packageName": "file-entry-cache",
-        "hash": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="
+        "version": "1.0.1",
+        "packageName": "internmap",
+        "hash": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
       }
     },
-    "npm:graphemer": {
+    "npm:resolve-url-loader": {
       "type": "npm",
-      "name": "npm:graphemer",
+      "name": "npm:resolve-url-loader",
       "data": {
-        "version": "1.4.0",
-        "packageName": "graphemer",
-        "hash": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
+        "version": "5.0.0",
+        "packageName": "resolve-url-loader",
+        "hash": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg=="
       }
     },
-    "npm:@webassemblyjs/leb128": {
+    "npm:d3-quadtree": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/leb128",
+      "name": "npm:d3-quadtree",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/leb128",
-        "hash": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ=="
+        "version": "3.0.1",
+        "packageName": "d3-quadtree",
+        "hash": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="
       }
     },
-    "npm:@babel/plugin-syntax-async-generators": {
+    "npm:istanbul-lib-source-maps": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-async-generators",
+      "name": "npm:istanbul-lib-source-maps",
       "data": {
-        "version": "7.8.4",
-        "packageName": "@babel/plugin-syntax-async-generators",
-        "hash": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw=="
+        "version": "4.0.1",
+        "packageName": "istanbul-lib-source-maps",
+        "hash": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw=="
       }
     },
-    "npm:micromark-util-html-tag-name": {
+    "npm:@types/stack-utils": {
       "type": "npm",
-      "name": "npm:micromark-util-html-tag-name",
+      "name": "npm:@types/stack-utils",
       "data": {
-        "version": "1.2.0",
-        "packageName": "micromark-util-html-tag-name",
-        "hash": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q=="
+        "version": "2.0.3",
+        "packageName": "@types/stack-utils",
+        "hash": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="
       }
     },
-    "npm:tuf-js": {
+    "npm:html-encoding-sniffer": {
       "type": "npm",
-      "name": "npm:tuf-js",
+      "name": "npm:html-encoding-sniffer",
       "data": {
-        "version": "2.1.0",
-        "packageName": "tuf-js",
-        "hash": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA=="
+        "version": "3.0.0",
+        "packageName": "html-encoding-sniffer",
+        "hash": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA=="
       }
     },
-    "npm:promise-inflight": {
+    "npm:postcss-discard-duplicates": {
       "type": "npm",
-      "name": "npm:promise-inflight",
+      "name": "npm:postcss-discard-duplicates",
       "data": {
-        "version": "1.0.1",
-        "packageName": "promise-inflight",
-        "hash": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
+        "version": "6.0.0",
+        "packageName": "postcss-discard-duplicates",
+        "hash": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA=="
       }
     },
-    "npm:normalize-package-data": {
+    "npm:emoji-regex": {
       "type": "npm",
-      "name": "npm:normalize-package-data",
+      "name": "npm:emoji-regex",
       "data": {
-        "version": "6.0.0",
-        "packageName": "normalize-package-data",
-        "hash": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg=="
+        "version": "8.0.0",
+        "packageName": "emoji-regex",
+        "hash": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
       }
     },
-    "npm:detect-node": {
+    "npm:@babel/plugin-syntax-logical-assignment-operators": {
       "type": "npm",
-      "name": "npm:detect-node",
+      "name": "npm:@babel/plugin-syntax-logical-assignment-operators",
       "data": {
-        "version": "2.1.0",
-        "packageName": "detect-node",
-        "hash": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+        "version": "7.10.4",
+        "packageName": "@babel/plugin-syntax-logical-assignment-operators",
+        "hash": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig=="
       }
     },
-    "npm:node-releases": {
+    "npm:ci-info": {
       "type": "npm",
-      "name": "npm:node-releases",
+      "name": "npm:ci-info",
       "data": {
-        "version": "2.0.13",
-        "packageName": "node-releases",
-        "hash": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
+        "version": "3.9.0",
+        "packageName": "ci-info",
+        "hash": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="
       }
     },
-    "npm:@eslint/js": {
+    "npm:estraverse": {
       "type": "npm",
-      "name": "npm:@eslint/js",
+      "name": "npm:estraverse",
       "data": {
-        "version": "8.53.0",
-        "packageName": "@eslint/js",
-        "hash": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w=="
+        "version": "5.3.0",
+        "packageName": "estraverse",
+        "hash": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
       }
     },
-    "npm:@material/circular-progress": {
+    "npm:source-map-support@0.5.13": {
       "type": "npm",
-      "name": "npm:@material/circular-progress",
+      "name": "npm:source-map-support@0.5.13",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/circular-progress",
-        "hash": "sha512-+QTfyExPWzgm2tqMInd32qQOftsC1b8MUhAhZSfuecYBfqAc7KZkQEKa2nm4y8EHKMFWe8/DcxLV6IxMBLgHwA=="
+        "version": "0.5.13",
+        "packageName": "source-map-support",
+        "hash": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w=="
       }
     },
-    "npm:@esbuild/linux-ppc64": {
+    "npm:read-cache": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-ppc64",
+      "name": "npm:read-cache",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-ppc64",
-        "hash": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q=="
+        "version": "1.0.0",
+        "packageName": "read-cache",
+        "hash": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="
       }
     },
-    "npm:@esbuild/netbsd-x64": {
+    "npm:resolve.exports": {
       "type": "npm",
-      "name": "npm:@esbuild/netbsd-x64",
+      "name": "npm:resolve.exports",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/netbsd-x64",
-        "hash": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g=="
+        "version": "1.1.0",
+        "packageName": "resolve.exports",
+        "hash": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ=="
       }
     },
-    "npm:make-dir": {
+    "npm:yargs@17.1.1": {
       "type": "npm",
-      "name": "npm:make-dir",
+      "name": "npm:yargs@17.1.1",
       "data": {
-        "version": "4.0.0",
-        "packageName": "make-dir",
-        "hash": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw=="
+        "version": "17.1.1",
+        "packageName": "yargs",
+        "hash": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ=="
       }
     },
-    "npm:minipass-collect": {
+    "npm:babel-plugin-macros": {
       "type": "npm",
-      "name": "npm:minipass-collect",
+      "name": "npm:babel-plugin-macros",
       "data": {
-        "version": "1.0.2",
-        "packageName": "minipass-collect",
-        "hash": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA=="
+        "version": "2.8.0",
+        "packageName": "babel-plugin-macros",
+        "hash": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg=="
       }
     },
-    "npm:d3-array@2.12.1": {
+    "npm:mermaid": {
       "type": "npm",
-      "name": "npm:d3-array@2.12.1",
+      "name": "npm:mermaid",
       "data": {
-        "version": "2.12.1",
-        "packageName": "d3-array",
-        "hash": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="
+        "version": "10.6.1",
+        "packageName": "mermaid",
+        "hash": "sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A=="
       }
     },
-    "npm:@assemblyscript/loader": {
+    "npm:@esbuild/linux-s390x@0.18.20": {
       "type": "npm",
-      "name": "npm:@assemblyscript/loader",
+      "name": "npm:@esbuild/linux-s390x@0.18.20",
       "data": {
-        "version": "0.10.1",
-        "packageName": "@assemblyscript/loader",
-        "hash": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-s390x",
+        "hash": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="
       }
     },
-    "npm:d3-brush": {
+    "npm:mkdirp@1.0.4": {
       "type": "npm",
-      "name": "npm:d3-brush",
+      "name": "npm:mkdirp@1.0.4",
       "data": {
-        "version": "3.0.0",
-        "packageName": "d3-brush",
-        "hash": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="
+        "version": "1.0.4",
+        "packageName": "mkdirp",
+        "hash": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
       }
     },
-    "npm:@tsconfig/node14": {
+    "npm:ajv@6.12.6": {
       "type": "npm",
-      "name": "npm:@tsconfig/node14",
+      "name": "npm:ajv@6.12.6",
       "data": {
-        "version": "1.0.3",
-        "packageName": "@tsconfig/node14",
-        "hash": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="
+        "version": "6.12.6",
+        "packageName": "ajv",
+        "hash": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="
       }
     },
-    "npm:d3-interpolate": {
+    "npm:fsevents": {
       "type": "npm",
-      "name": "npm:d3-interpolate",
+      "name": "npm:fsevents",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-interpolate",
-        "hash": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="
+        "version": "2.3.3",
+        "packageName": "fsevents",
+        "hash": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="
       }
     },
-    "npm:ip": {
+    "npm:jest-mock": {
       "type": "npm",
-      "name": "npm:ip",
+      "name": "npm:jest-mock",
       "data": {
-        "version": "2.0.0",
-        "packageName": "ip",
-        "hash": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+        "version": "29.7.0",
+        "packageName": "jest-mock",
+        "hash": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw=="
       }
     },
-    "npm:@nrwl/devkit@17.1.2": {
+    "npm:yargs-parser": {
       "type": "npm",
-      "name": "npm:@nrwl/devkit@17.1.2",
+      "name": "npm:yargs-parser",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/devkit",
-        "hash": "sha512-INPZk4qts3xNJt8E9fttuVTufXdigPUOvUiAiPJmR2oUGDF8SeOlIYNForbz+XMRvxyIVtf45O32azUsgeZe3Q=="
+        "version": "21.1.1",
+        "packageName": "yargs-parser",
+        "hash": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
       }
     },
-    "npm:fast-deep-equal": {
+    "npm:micromark-factory-title": {
       "type": "npm",
-      "name": "npm:fast-deep-equal",
+      "name": "npm:micromark-factory-title",
       "data": {
-        "version": "3.1.3",
-        "packageName": "fast-deep-equal",
-        "hash": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+        "version": "1.1.0",
+        "packageName": "micromark-factory-title",
+        "hash": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ=="
       }
     },
-    "npm:@babel/plugin-transform-unicode-sets-regex": {
+    "npm:http-cache-semantics": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-unicode-sets-regex",
+      "name": "npm:http-cache-semantics",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-unicode-sets-regex",
-        "hash": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg=="
+        "version": "4.1.1",
+        "packageName": "http-cache-semantics",
+        "hash": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
       }
     },
-    "npm:@esbuild/linux-x64@0.18.20": {
+    "npm:@babel/preset-typescript": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-x64@0.18.20",
+      "name": "npm:@babel/preset-typescript",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-x64",
-        "hash": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="
+        "version": "7.23.3",
+        "packageName": "@babel/preset-typescript",
+        "hash": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ=="
       }
     },
-    "npm:ansi-regex@6.0.1": {
+    "npm:encoding": {
       "type": "npm",
-      "name": "npm:ansi-regex@6.0.1",
+      "name": "npm:encoding",
       "data": {
-        "version": "6.0.1",
-        "packageName": "ansi-regex",
-        "hash": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
+        "version": "0.1.13",
+        "packageName": "encoding",
+        "hash": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="
       }
     },
-    "npm:https-proxy-agent": {
+    "npm:eslint": {
       "type": "npm",
-      "name": "npm:https-proxy-agent",
+      "name": "npm:eslint",
       "data": {
-        "version": "7.0.2",
-        "packageName": "https-proxy-agent",
-        "hash": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA=="
+        "version": "8.53.0",
+        "packageName": "eslint",
+        "hash": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag=="
       }
     },
-    "npm:gensync": {
+    "npm:webpack-sources": {
       "type": "npm",
-      "name": "npm:gensync",
+      "name": "npm:webpack-sources",
       "data": {
-        "version": "1.0.0-beta.2",
-        "packageName": "gensync",
-        "hash": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+        "version": "3.2.3",
+        "packageName": "webpack-sources",
+        "hash": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
       }
     },
-    "npm:yargs-parser": {
+    "npm:fast-json-stable-stringify": {
       "type": "npm",
-      "name": "npm:yargs-parser",
+      "name": "npm:fast-json-stable-stringify",
       "data": {
-        "version": "21.1.1",
-        "packageName": "yargs-parser",
-        "hash": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
+        "version": "2.1.0",
+        "packageName": "fast-json-stable-stringify",
+        "hash": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
       }
     },
-    "npm:@babel/generator": {
+    "npm:yallist": {
       "type": "npm",
-      "name": "npm:@babel/generator",
+      "name": "npm:yallist",
       "data": {
-        "version": "7.23.0",
-        "packageName": "@babel/generator",
-        "hash": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g=="
+        "version": "3.1.1",
+        "packageName": "yallist",
+        "hash": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
       }
     },
-    "npm:pkg-dir@4.2.0": {
+    "npm:@babel/plugin-transform-json-strings": {
       "type": "npm",
-      "name": "npm:pkg-dir@4.2.0",
+      "name": "npm:@babel/plugin-transform-json-strings",
       "data": {
-        "version": "4.2.0",
-        "packageName": "pkg-dir",
-        "hash": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-json-strings",
+        "hash": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw=="
       }
     },
-    "npm:json-parse-even-better-errors@3.0.0": {
+    "npm:d3-delaunay": {
       "type": "npm",
-      "name": "npm:json-parse-even-better-errors@3.0.0",
+      "name": "npm:d3-delaunay",
       "data": {
-        "version": "3.0.0",
-        "packageName": "json-parse-even-better-errors",
-        "hash": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA=="
+        "version": "6.0.4",
+        "packageName": "d3-delaunay",
+        "hash": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="
       }
     },
-    "npm:shallow-clone": {
+    "npm:@babel/plugin-proposal-private-property-in-object": {
       "type": "npm",
-      "name": "npm:shallow-clone",
+      "name": "npm:@babel/plugin-proposal-private-property-in-object",
       "data": {
-        "version": "3.0.1",
-        "packageName": "shallow-clone",
-        "hash": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="
+        "version": "7.21.0-placeholder-for-preset-env.2",
+        "packageName": "@babel/plugin-proposal-private-property-in-object",
+        "hash": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w=="
       }
     },
-    "npm:is-wsl": {
+    "npm:@esbuild/linux-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:is-wsl",
+      "name": "npm:@esbuild/linux-x64@0.18.20",
       "data": {
-        "version": "2.2.0",
-        "packageName": "is-wsl",
-        "hash": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-x64",
+        "hash": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="
       }
     },
-    "npm:layout-base": {
+    "npm:ansi-styles@6.2.1": {
       "type": "npm",
-      "name": "npm:layout-base",
+      "name": "npm:ansi-styles@6.2.1",
       "data": {
-        "version": "1.0.2",
-        "packageName": "layout-base",
-        "hash": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
+        "version": "6.2.1",
+        "packageName": "ansi-styles",
+        "hash": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="
       }
     },
-    "npm:unicode-property-aliases-ecmascript": {
+    "npm:@nx/nx-darwin-arm64": {
       "type": "npm",
-      "name": "npm:unicode-property-aliases-ecmascript",
+      "name": "npm:@nx/nx-darwin-arm64",
       "data": {
-        "version": "2.1.0",
-        "packageName": "unicode-property-aliases-ecmascript",
-        "hash": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-darwin-arm64",
+        "hash": "sha512-OSZLRfV8VplYPEqMcIg3mbAsJXlXEHKrdlJ0KUTk8Hih2+wl7cxuSEwG7X7qfBUOz+ognxaqicL+hueNrgwjlQ=="
       }
     },
-    "npm:diff@5.1.0": {
+    "npm:yaml": {
       "type": "npm",
-      "name": "npm:diff@5.1.0",
+      "name": "npm:yaml",
       "data": {
-        "version": "5.1.0",
-        "packageName": "diff",
-        "hash": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw=="
+        "version": "1.10.2",
+        "packageName": "yaml",
+        "hash": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
       }
     },
-    "npm:update-browserslist-db": {
+    "npm:isobject": {
       "type": "npm",
-      "name": "npm:update-browserslist-db",
+      "name": "npm:isobject",
       "data": {
-        "version": "1.0.13",
-        "packageName": "update-browserslist-db",
-        "hash": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg=="
+        "version": "3.0.1",
+        "packageName": "isobject",
+        "hash": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
       }
     },
-    "npm:webpack-merge": {
+    "npm:escape-string-regexp@2.0.0": {
       "type": "npm",
-      "name": "npm:webpack-merge",
+      "name": "npm:escape-string-regexp@2.0.0",
       "data": {
-        "version": "5.10.0",
-        "packageName": "webpack-merge",
-        "hash": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA=="
+        "version": "2.0.0",
+        "packageName": "escape-string-regexp",
+        "hash": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
       }
     },
-    "npm:jsonfile@3.0.1": {
+    "npm:@babel/plugin-transform-class-static-block": {
       "type": "npm",
-      "name": "npm:jsonfile@3.0.1",
+      "name": "npm:@babel/plugin-transform-class-static-block",
       "data": {
-        "version": "3.0.1",
-        "packageName": "jsonfile",
-        "hash": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-class-static-block",
+        "hash": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g=="
       }
     },
-    "npm:picocolors": {
+    "npm:@typescript-eslint/utils": {
       "type": "npm",
-      "name": "npm:picocolors",
+      "name": "npm:@typescript-eslint/utils",
       "data": {
-        "version": "1.0.0",
-        "packageName": "picocolors",
-        "hash": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+        "version": "6.11.0",
+        "packageName": "@typescript-eslint/utils",
+        "hash": "sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g=="
       }
     },
-    "npm:micromark-util-combine-extensions": {
+    "npm:babel-plugin-jest-hoist": {
       "type": "npm",
-      "name": "npm:micromark-util-combine-extensions",
+      "name": "npm:babel-plugin-jest-hoist",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-combine-extensions",
-        "hash": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA=="
+        "version": "29.6.3",
+        "packageName": "babel-plugin-jest-hoist",
+        "hash": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg=="
       }
     },
-    "npm:copy-webpack-plugin@10.2.4": {
+    "npm:locate-path@7.2.0": {
       "type": "npm",
-      "name": "npm:copy-webpack-plugin@10.2.4",
+      "name": "npm:locate-path@7.2.0",
       "data": {
-        "version": "10.2.4",
-        "packageName": "copy-webpack-plugin",
-        "hash": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg=="
+        "version": "7.2.0",
+        "packageName": "locate-path",
+        "hash": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA=="
       }
     },
-    "npm:image-size": {
+    "npm:@babel/plugin-transform-class-properties": {
       "type": "npm",
-      "name": "npm:image-size",
+      "name": "npm:@babel/plugin-transform-class-properties",
       "data": {
-        "version": "0.5.5",
-        "packageName": "image-size",
-        "hash": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-class-properties",
+        "hash": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ=="
       }
     },
-    "npm:cross-spawn": {
+    "npm:fastq": {
       "type": "npm",
-      "name": "npm:cross-spawn",
+      "name": "npm:fastq",
       "data": {
-        "version": "7.0.3",
-        "packageName": "cross-spawn",
-        "hash": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="
+        "version": "1.15.0",
+        "packageName": "fastq",
+        "hash": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw=="
       }
     },
-    "npm:web-worker": {
+    "npm:@material/layout-grid": {
       "type": "npm",
-      "name": "npm:web-worker",
+      "name": "npm:@material/layout-grid",
       "data": {
-        "version": "1.2.0",
-        "packageName": "web-worker",
-        "hash": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/layout-grid",
+        "hash": "sha512-bkfxZuVzgtjEJgR3n8pvDQbe88ffULDJ5d2DF34IR8SOiRmQcj7UzqAt95XwIUcWlfisLCoIryP4U8XSpFb1EQ=="
       }
     },
-    "npm:nopt": {
+    "npm:axios": {
       "type": "npm",
-      "name": "npm:nopt",
+      "name": "npm:axios",
       "data": {
-        "version": "7.2.0",
-        "packageName": "nopt",
-        "hash": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA=="
+        "version": "1.6.0",
+        "packageName": "axios",
+        "hash": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg=="
       }
     },
-    "npm:proxy-addr": {
+    "npm:v8-compile-cache": {
       "type": "npm",
-      "name": "npm:proxy-addr",
+      "name": "npm:v8-compile-cache",
       "data": {
-        "version": "2.0.7",
-        "packageName": "proxy-addr",
-        "hash": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="
+        "version": "2.3.0",
+        "packageName": "v8-compile-cache",
+        "hash": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
       }
     },
-    "npm:@babel/plugin-transform-shorthand-properties": {
+    "npm:webpack-node-externals": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-shorthand-properties",
+      "name": "npm:webpack-node-externals",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-shorthand-properties",
-        "hash": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA=="
+        "version": "3.0.0",
+        "packageName": "webpack-node-externals",
+        "hash": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ=="
       }
     },
-    "npm:@material/tab": {
+    "npm:decode-named-character-reference": {
       "type": "npm",
-      "name": "npm:@material/tab",
+      "name": "npm:decode-named-character-reference",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/tab",
-        "hash": "sha512-HGLK774uMeLnhbjDJBOjft7S6SurZnKb+6Und88OMDUVUEG6MkFBAKQQr09iBIeLE2sUAiGQhBVQtb7LJKwolQ=="
+        "version": "1.0.2",
+        "packageName": "decode-named-character-reference",
+        "hash": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg=="
       }
     },
-    "npm:@babel/plugin-transform-class-properties": {
+    "npm:postcss-minify-font-values": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-class-properties",
+      "name": "npm:postcss-minify-font-values",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-class-properties",
-        "hash": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ=="
+        "version": "6.0.0",
+        "packageName": "postcss-minify-font-values",
+        "hash": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA=="
       }
     },
-    "npm:@cspotcode/source-map-support": {
+    "npm:yn": {
       "type": "npm",
-      "name": "npm:@cspotcode/source-map-support",
+      "name": "npm:yn",
       "data": {
-        "version": "0.8.1",
-        "packageName": "@cspotcode/source-map-support",
-        "hash": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="
+        "version": "3.1.1",
+        "packageName": "yn",
+        "hash": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
       }
     },
-    "npm:@babel/plugin-transform-member-expression-literals": {
+    "npm:localbase": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-member-expression-literals",
+      "name": "npm:localbase",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-member-expression-literals",
-        "hash": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew=="
+        "version": "0.7.5",
+        "packageName": "localbase",
+        "hash": "sha512-LikkGiX/HdR0kZUUmoBjPMD5qyLBbO5SfQOPkZVXea3QwQTZBy5JxbRiEC1xy9tagFCfi90OP+23/V6Da/7DbQ=="
       }
     },
-    "npm:chalk@4.1.2": {
+    "npm:karma": {
       "type": "npm",
-      "name": "npm:chalk@4.1.2",
+      "name": "npm:karma",
       "data": {
-        "version": "4.1.2",
-        "packageName": "chalk",
-        "hash": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
+        "version": "6.4.2",
+        "packageName": "karma",
+        "hash": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ=="
       }
     },
-    "npm:minimatch@9.0.3": {
+    "npm:@angular/compiler-cli": {
       "type": "npm",
-      "name": "npm:minimatch@9.0.3",
+      "name": "npm:@angular/compiler-cli",
       "data": {
-        "version": "9.0.3",
-        "packageName": "minimatch",
-        "hash": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="
+        "version": "17.0.3",
+        "packageName": "@angular/compiler-cli",
+        "hash": "sha512-oj7KJBFgs6ulT1/A/xkkDHBOB0c7o9HV2Mn5pUosXBo2VgcGYeuJeXffC+mFr5FyiRO1sUanw4vSWnLzK1U0pQ=="
       }
     },
-    "npm:dom-serializer": {
+    "npm:debug@4.3.2": {
       "type": "npm",
-      "name": "npm:dom-serializer",
+      "name": "npm:debug@4.3.2",
       "data": {
-        "version": "2.0.0",
-        "packageName": "dom-serializer",
-        "hash": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="
+        "version": "4.3.2",
+        "packageName": "debug",
+        "hash": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw=="
       }
     },
-    "npm:jest-runner": {
+    "npm:log-symbols": {
       "type": "npm",
-      "name": "npm:jest-runner",
+      "name": "npm:log-symbols",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-runner",
-        "hash": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ=="
+        "version": "4.1.0",
+        "packageName": "log-symbols",
+        "hash": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="
       }
     },
-    "npm:@material/floating-label": {
+    "npm:serve-index": {
       "type": "npm",
-      "name": "npm:@material/floating-label",
+      "name": "npm:serve-index",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/floating-label",
-        "hash": "sha512-832qZ/qxKx0KUatoeVY3Q2NmboVgiWBG0/1VsbJyodHrgQWfnBOHgLE+M322o6uM3OhvO+kWm4iYbvwhmLZGsw=="
+        "version": "1.9.1",
+        "packageName": "serve-index",
+        "hash": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw=="
       }
     },
-    "npm:http-proxy-middleware": {
+    "npm:@jridgewell/resolve-uri": {
       "type": "npm",
-      "name": "npm:http-proxy-middleware",
+      "name": "npm:@jridgewell/resolve-uri",
       "data": {
-        "version": "2.0.6",
-        "packageName": "http-proxy-middleware",
-        "hash": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw=="
+        "version": "3.1.1",
+        "packageName": "@jridgewell/resolve-uri",
+        "hash": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA=="
       }
     },
-    "npm:postcss-normalize-whitespace": {
+    "npm:@babel/plugin-transform-unicode-property-regex": {
       "type": "npm",
-      "name": "npm:postcss-normalize-whitespace",
+      "name": "npm:@babel/plugin-transform-unicode-property-regex",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-whitespace",
-        "hash": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-unicode-property-regex",
+        "hash": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A=="
       }
     },
-    "npm:make-fetch-happen": {
+    "npm:gensync": {
       "type": "npm",
-      "name": "npm:make-fetch-happen",
+      "name": "npm:gensync",
       "data": {
-        "version": "13.0.0",
-        "packageName": "make-fetch-happen",
-        "hash": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="
+        "version": "1.0.0-beta.2",
+        "packageName": "gensync",
+        "hash": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
       }
     },
-    "npm:p-locate@5.0.0": {
+    "npm:cssnano": {
       "type": "npm",
-      "name": "npm:p-locate@5.0.0",
+      "name": "npm:cssnano",
       "data": {
-        "version": "5.0.0",
-        "packageName": "p-locate",
-        "hash": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
+        "version": "6.0.1",
+        "packageName": "cssnano",
+        "hash": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg=="
       }
     },
-    "npm:server-destroy": {
+    "npm:unicode-match-property-ecmascript": {
       "type": "npm",
-      "name": "npm:server-destroy",
+      "name": "npm:unicode-match-property-ecmascript",
       "data": {
-        "version": "1.0.1",
-        "packageName": "server-destroy",
-        "hash": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ=="
+        "version": "2.0.0",
+        "packageName": "unicode-match-property-ecmascript",
+        "hash": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q=="
       }
     },
-    "npm:streamroller": {
+    "npm:parse5@7.1.2": {
       "type": "npm",
-      "name": "npm:streamroller",
+      "name": "npm:parse5@7.1.2",
       "data": {
-        "version": "3.1.5",
-        "packageName": "streamroller",
-        "hash": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw=="
+        "version": "7.1.2",
+        "packageName": "parse5",
+        "hash": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw=="
       }
     },
-    "npm:tiny-emitter": {
+    "npm:depd": {
       "type": "npm",
-      "name": "npm:tiny-emitter",
+      "name": "npm:depd",
       "data": {
-        "version": "2.1.0",
-        "packageName": "tiny-emitter",
-        "hash": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+        "version": "2.0.0",
+        "packageName": "depd",
+        "hash": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
       }
     },
-    "npm:@esbuild/netbsd-x64@0.18.20": {
+    "npm:clone": {
       "type": "npm",
-      "name": "npm:@esbuild/netbsd-x64@0.18.20",
+      "name": "npm:clone",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/netbsd-x64",
-        "hash": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="
+        "version": "1.0.4",
+        "packageName": "clone",
+        "hash": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="
       }
     },
-    "npm:@xtuc/long": {
+    "npm:@angular/common": {
       "type": "npm",
-      "name": "npm:@xtuc/long",
+      "name": "npm:@angular/common",
       "data": {
-        "version": "4.2.2",
-        "packageName": "@xtuc/long",
-        "hash": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
+        "version": "17.0.3",
+        "packageName": "@angular/common",
+        "hash": "sha512-AD/d1n0hNisHDhIeBsW2ERZI9ChjiOuZ3IiGwcYKmlcOHTrZTJPAh/ZMgahv24rArlNVax7bT+Ik8+sJedGcEQ=="
       }
     },
-    "npm:randombytes": {
+    "npm:has-property-descriptors": {
       "type": "npm",
-      "name": "npm:randombytes",
+      "name": "npm:has-property-descriptors",
       "data": {
-        "version": "2.1.0",
-        "packageName": "randombytes",
-        "hash": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="
+        "version": "1.0.1",
+        "packageName": "has-property-descriptors",
+        "hash": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg=="
       }
     },
-    "npm:@esbuild/linux-loong64": {
+    "npm:@material/line-ripple": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-loong64",
+      "name": "npm:@material/line-ripple",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-loong64",
-        "hash": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/line-ripple",
+        "hash": "sha512-20WmwRrejmtOdI37+959UqEVIjbMtAXlkDOkfCIA3OUhp+oZSjVkCqKxI16jxxVlnzJ353fy8xeSKzOHe4sExQ=="
       }
     },
-    "npm:escape-string-regexp": {
+    "npm:@nx/nx-linux-x64-musl@17.1.2": {
       "type": "npm",
-      "name": "npm:escape-string-regexp",
+      "name": "npm:@nx/nx-linux-x64-musl@17.1.2",
       "data": {
-        "version": "1.0.5",
-        "packageName": "escape-string-regexp",
-        "hash": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-linux-x64-musl",
+        "hash": "sha512-1UrR87ByhE0zSXt0C+RNT5ZiAsctOSWZwPYQAGolz8K70BxomDeRVtIaRog5KK5SHlEd1ILvgsmrhovjLjrJNw=="
       }
     },
-    "npm:autoprefixer": {
+    "npm:postcss-value-parser": {
       "type": "npm",
-      "name": "npm:autoprefixer",
+      "name": "npm:postcss-value-parser",
       "data": {
-        "version": "10.4.16",
-        "packageName": "autoprefixer",
-        "hash": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ=="
+        "version": "4.2.0",
+        "packageName": "postcss-value-parser",
+        "hash": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
       }
     },
-    "npm:body-parser@1.20.1": {
+    "npm:minipass-json-stream": {
       "type": "npm",
-      "name": "npm:body-parser@1.20.1",
+      "name": "npm:minipass-json-stream",
       "data": {
-        "version": "1.20.1",
-        "packageName": "body-parser",
-        "hash": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw=="
+        "version": "1.0.1",
+        "packageName": "minipass-json-stream",
+        "hash": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg=="
       }
     },
-    "npm:isexe@3.1.1": {
+    "npm:jest-runtime": {
       "type": "npm",
-      "name": "npm:isexe@3.1.1",
+      "name": "npm:jest-runtime",
       "data": {
-        "version": "3.1.1",
-        "packageName": "isexe",
-        "hash": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="
+        "version": "29.7.0",
+        "packageName": "jest-runtime",
+        "hash": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ=="
       }
     },
-    "npm:esbuild@0.18.20": {
+    "npm:isexe": {
       "type": "npm",
-      "name": "npm:esbuild@0.18.20",
+      "name": "npm:isexe",
       "data": {
-        "version": "0.18.20",
-        "packageName": "esbuild",
-        "hash": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="
+        "version": "2.0.0",
+        "packageName": "isexe",
+        "hash": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
       }
     },
-    "npm:@jridgewell/trace-mapping": {
+    "npm:ansi-html-community": {
       "type": "npm",
-      "name": "npm:@jridgewell/trace-mapping",
+      "name": "npm:ansi-html-community",
       "data": {
-        "version": "0.3.20",
-        "packageName": "@jridgewell/trace-mapping",
-        "hash": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q=="
+        "version": "0.0.8",
+        "packageName": "ansi-html-community",
+        "hash": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw=="
       }
     },
-    "npm:strip-bom": {
+    "npm:inherits": {
       "type": "npm",
-      "name": "npm:strip-bom",
+      "name": "npm:inherits",
       "data": {
-        "version": "4.0.0",
-        "packageName": "strip-bom",
-        "hash": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w=="
+        "version": "2.0.4",
+        "packageName": "inherits",
+        "hash": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
       }
     },
-    "npm:yn": {
+    "npm:regjsparser": {
       "type": "npm",
-      "name": "npm:yn",
+      "name": "npm:regjsparser",
       "data": {
-        "version": "3.1.1",
-        "packageName": "yn",
-        "hash": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
+        "version": "0.9.1",
+        "packageName": "regjsparser",
+        "hash": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ=="
       }
     },
-    "npm:lodash.uniq": {
+    "npm:@nx/nx-win32-arm64-msvc": {
       "type": "npm",
-      "name": "npm:lodash.uniq",
+      "name": "npm:@nx/nx-win32-arm64-msvc",
       "data": {
-        "version": "4.5.0",
-        "packageName": "lodash.uniq",
-        "hash": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-win32-arm64-msvc",
+        "hash": "sha512-Sc3sQUcS5xdk05PABe/knG6orG5rmHZdSUj6SMRpvYfN2tM3ziNn6/wCF/LJoW6n70OxrOEXXwLSRK/5WigXbA=="
       }
     },
-    "npm:tapable": {
+    "npm:@jest/source-map": {
       "type": "npm",
-      "name": "npm:tapable",
+      "name": "npm:@jest/source-map",
       "data": {
-        "version": "2.2.1",
-        "packageName": "tapable",
-        "hash": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
+        "version": "29.6.3",
+        "packageName": "@jest/source-map",
+        "hash": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw=="
       }
     },
-    "npm:nx": {
+    "npm:spdy-transport": {
       "type": "npm",
-      "name": "npm:nx",
+      "name": "npm:spdy-transport",
       "data": {
-        "version": "17.0.2",
-        "packageName": "nx",
-        "hash": "sha512-utk9ufxLlRd210nEV6cKjMLVK0gup2ZMlNT41lLgUX/gp3Q59G1NkyLo3o29DxBh3AhNJ9q5MKgybmzDNdpudA=="
+        "version": "3.0.0",
+        "packageName": "spdy-transport",
+        "hash": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw=="
       }
     },
-    "npm:path-exists@5.0.0": {
+    "npm:babel-jest": {
       "type": "npm",
-      "name": "npm:path-exists@5.0.0",
+      "name": "npm:babel-jest",
       "data": {
-        "version": "5.0.0",
-        "packageName": "path-exists",
-        "hash": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="
+        "version": "29.7.0",
+        "packageName": "babel-jest",
+        "hash": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg=="
       }
     },
-    "npm:execa": {
+    "npm:@types/cors": {
       "type": "npm",
-      "name": "npm:execa",
+      "name": "npm:@types/cors",
       "data": {
-        "version": "5.1.1",
-        "packageName": "execa",
-        "hash": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="
+        "version": "2.8.15",
+        "packageName": "@types/cors",
+        "hash": "sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw=="
       }
     },
-    "npm:@material/typography": {
+    "npm:@esbuild/openbsd-x64": {
       "type": "npm",
-      "name": "npm:@material/typography",
+      "name": "npm:@esbuild/openbsd-x64",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/typography",
-        "hash": "sha512-eXzBl9ROzWZ+41nan5pCrn1C/Zq3o/VsrLFaGv8fdRmhRR6/wHMeuvCCwGf5VtEmWdAE9FpJzRU/4ZPiJCJUyg=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/openbsd-x64",
+        "hash": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA=="
       }
     },
-    "npm:js-yaml@4.1.0": {
+    "npm:defaults": {
       "type": "npm",
-      "name": "npm:js-yaml@4.1.0",
+      "name": "npm:defaults",
       "data": {
-        "version": "4.1.0",
-        "packageName": "js-yaml",
-        "hash": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="
+        "version": "1.0.4",
+        "packageName": "defaults",
+        "hash": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="
       }
     },
-    "npm:@material/chips": {
+    "npm:foreground-child": {
       "type": "npm",
-      "name": "npm:@material/chips",
+      "name": "npm:foreground-child",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/chips",
-        "hash": "sha512-TiV9WJ5taEHPGWPhXbxJvUJhLzThg+VpK7aAlvL4RurtmJ7pURuEdRS4Z6o0OEqi3wKQ4z/+K44kZUn/+9HALg=="
+        "version": "3.1.1",
+        "packageName": "foreground-child",
+        "hash": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg=="
       }
     },
-    "npm:universalify@2.0.0": {
+    "npm:sigstore": {
       "type": "npm",
-      "name": "npm:universalify@2.0.0",
+      "name": "npm:sigstore",
       "data": {
-        "version": "2.0.0",
-        "packageName": "universalify",
-        "hash": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
+        "version": "2.1.0",
+        "packageName": "sigstore",
+        "hash": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw=="
       }
     },
-    "npm:@types/bonjour": {
+    "npm:babel-plugin-const-enum": {
       "type": "npm",
-      "name": "npm:@types/bonjour",
+      "name": "npm:babel-plugin-const-enum",
       "data": {
-        "version": "3.5.12",
-        "packageName": "@types/bonjour",
-        "hash": "sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg=="
+        "version": "1.2.0",
+        "packageName": "babel-plugin-const-enum",
+        "hash": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg=="
       }
     },
-    "npm:is-extglob": {
+    "npm:unist-util-stringify-position": {
       "type": "npm",
-      "name": "npm:is-extglob",
+      "name": "npm:unist-util-stringify-position",
       "data": {
-        "version": "2.1.1",
-        "packageName": "is-extglob",
-        "hash": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+        "version": "3.0.3",
+        "packageName": "unist-util-stringify-position",
+        "hash": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg=="
       }
     },
-    "npm:promise-retry": {
+    "npm:@babel/highlight": {
       "type": "npm",
-      "name": "npm:promise-retry",
+      "name": "npm:@babel/highlight",
       "data": {
-        "version": "2.0.1",
-        "packageName": "promise-retry",
-        "hash": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g=="
+        "version": "7.22.20",
+        "packageName": "@babel/highlight",
+        "hash": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg=="
       }
     },
-    "npm:find-cache-dir@3.3.2": {
+    "npm:@floating-ui/utils": {
       "type": "npm",
-      "name": "npm:find-cache-dir@3.3.2",
+      "name": "npm:@floating-ui/utils",
       "data": {
-        "version": "3.3.2",
-        "packageName": "find-cache-dir",
-        "hash": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig=="
+        "version": "0.1.6",
+        "packageName": "@floating-ui/utils",
+        "hash": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
       }
     },
-    "npm:@ampproject/remapping": {
+    "npm:@babel/helper-wrap-function": {
       "type": "npm",
-      "name": "npm:@ampproject/remapping",
+      "name": "npm:@babel/helper-wrap-function",
       "data": {
-        "version": "2.2.1",
-        "packageName": "@ampproject/remapping",
-        "hash": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg=="
+        "version": "7.22.20",
+        "packageName": "@babel/helper-wrap-function",
+        "hash": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw=="
       }
     },
-    "npm:@esbuild/sunos-x64": {
+    "npm:robust-predicates": {
       "type": "npm",
-      "name": "npm:@esbuild/sunos-x64",
+      "name": "npm:robust-predicates",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/sunos-x64",
-        "hash": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg=="
+        "version": "3.0.2",
+        "packageName": "robust-predicates",
+        "hash": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
       }
     },
-    "npm:@material/progress-indicator": {
+    "npm:jsonfile@6.1.0": {
       "type": "npm",
-      "name": "npm:@material/progress-indicator",
+      "name": "npm:jsonfile@6.1.0",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/progress-indicator",
-        "hash": "sha512-92HM5niUnqG5Y3M/xkscBD+2lkaWPDcIRPo0RHPYcyldL+EhWRv/sdQpfdiXw/h3uvKSowKxBMCHm8krAyf+sQ=="
+        "version": "6.1.0",
+        "packageName": "jsonfile",
+        "hash": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="
       }
     },
-    "npm:@nodelib/fs.scandir": {
+    "npm:@typescript-eslint/typescript-estree": {
       "type": "npm",
-      "name": "npm:@nodelib/fs.scandir",
+      "name": "npm:@typescript-eslint/typescript-estree",
       "data": {
-        "version": "2.1.5",
-        "packageName": "@nodelib/fs.scandir",
-        "hash": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="
+        "version": "6.11.0",
+        "packageName": "@typescript-eslint/typescript-estree",
+        "hash": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ=="
       }
     },
-    "npm:karma-jasmine-html-reporter": {
+    "npm:@nx/nx-freebsd-x64": {
       "type": "npm",
-      "name": "npm:karma-jasmine-html-reporter",
+      "name": "npm:@nx/nx-freebsd-x64",
       "data": {
-        "version": "2.1.0",
-        "packageName": "karma-jasmine-html-reporter",
-        "hash": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ=="
+        "version": "17.0.2",
+        "packageName": "@nx/nx-freebsd-x64",
+        "hash": "sha512-+mta0J2G2byd+rfZ275oZs0aYXC/s92nI9ySBFQFQZnKJ6bsAagdZHe+uETsnE4xdhFXD8kvNMJU1WTGlyFyjg=="
       }
     },
-    "npm:@babel/helpers": {
+    "npm:@babel/plugin-transform-private-property-in-object": {
       "type": "npm",
-      "name": "npm:@babel/helpers",
+      "name": "npm:@babel/plugin-transform-private-property-in-object",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/helpers",
-        "hash": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ=="
+        "version": "7.22.11",
+        "packageName": "@babel/plugin-transform-private-property-in-object",
+        "hash": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ=="
       }
     },
-    "npm:source-map-loader@3.0.2": {
+    "npm:http-errors@1.6.3": {
       "type": "npm",
-      "name": "npm:source-map-loader@3.0.2",
+      "name": "npm:http-errors@1.6.3",
       "data": {
-        "version": "3.0.2",
-        "packageName": "source-map-loader",
-        "hash": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg=="
+        "version": "1.6.3",
+        "packageName": "http-errors",
+        "hash": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A=="
       }
     },
-    "npm:@xtuc/ieee754": {
+    "npm:@babel/plugin-syntax-import-meta": {
       "type": "npm",
-      "name": "npm:@xtuc/ieee754",
+      "name": "npm:@babel/plugin-syntax-import-meta",
       "data": {
-        "version": "1.2.0",
-        "packageName": "@xtuc/ieee754",
-        "hash": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+        "version": "7.10.4",
+        "packageName": "@babel/plugin-syntax-import-meta",
+        "hash": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g=="
       }
     },
-    "npm:async@2.6.4": {
+    "npm:@esbuild/android-arm@0.18.20": {
       "type": "npm",
-      "name": "npm:async@2.6.4",
+      "name": "npm:@esbuild/android-arm@0.18.20",
       "data": {
-        "version": "2.6.4",
-        "packageName": "async",
-        "hash": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/android-arm",
+        "hash": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="
       }
     },
-    "npm:statuses@1.3.1": {
+    "npm:d3-selection": {
       "type": "npm",
-      "name": "npm:statuses@1.3.1",
+      "name": "npm:d3-selection",
       "data": {
-        "version": "1.3.1",
-        "packageName": "statuses",
-        "hash": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg=="
+        "version": "3.0.0",
+        "packageName": "d3-selection",
+        "hash": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="
       }
     },
-    "npm:di": {
+    "npm:supports-color": {
       "type": "npm",
-      "name": "npm:di",
+      "name": "npm:supports-color",
       "data": {
-        "version": "0.0.1",
-        "packageName": "di",
-        "hash": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA=="
+        "version": "5.5.0",
+        "packageName": "supports-color",
+        "hash": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
       }
     },
-    "npm:socket.io-client": {
+    "npm:layout-base": {
       "type": "npm",
-      "name": "npm:socket.io-client",
+      "name": "npm:layout-base",
       "data": {
-        "version": "4.7.2",
-        "packageName": "socket.io-client",
-        "hash": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w=="
+        "version": "1.0.2",
+        "packageName": "layout-base",
+        "hash": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
       }
     },
-    "npm:esutils": {
+    "npm:@nx/nx-linux-arm64-musl@17.1.2": {
       "type": "npm",
-      "name": "npm:esutils",
+      "name": "npm:@nx/nx-linux-arm64-musl@17.1.2",
       "data": {
-        "version": "2.0.3",
-        "packageName": "esutils",
-        "hash": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-linux-arm64-musl",
+        "hash": "sha512-MXGYY/KCzQhbj5UKwnRO2/GhByOkRlI+EeH1Mazam8wZ1BiBfcVWZoOUybIlxxes1o4cAnkZwB527tCmwrHvGw=="
       }
     },
-    "npm:node-gyp": {
+    "npm:npm-run-path": {
       "type": "npm",
-      "name": "npm:node-gyp",
+      "name": "npm:npm-run-path",
       "data": {
-        "version": "10.0.1",
-        "packageName": "node-gyp",
-        "hash": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg=="
+        "version": "4.0.1",
+        "packageName": "npm-run-path",
+        "hash": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="
       }
     },
-    "npm:@angular/cdk": {
+    "npm:pacote": {
       "type": "npm",
-      "name": "npm:@angular/cdk",
+      "name": "npm:pacote",
       "data": {
-        "version": "17.0.0",
-        "packageName": "@angular/cdk",
-        "hash": "sha512-8F1z0YhDjKWqB29+AUh33OKr2Ts5PVUUogVXEVmmPipPDtj82iIQLbtBnR6xpWvmsw9mS3oD76EwBoUhHQgi6g=="
+        "version": "17.0.4",
+        "packageName": "pacote",
+        "hash": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg=="
       }
     },
-    "npm:@angular/cli": {
+    "npm:regenerate": {
       "type": "npm",
-      "name": "npm:@angular/cli",
+      "name": "npm:regenerate",
       "data": {
-        "version": "17.0.1",
-        "packageName": "@angular/cli",
-        "hash": "sha512-3iJWw+bpr/8y1ZY1m0wGfukffQVmD6DJUNubB297NCq1bJyUj+uwBuDnpIH+vidJvPBEEY+9XPJr0Jnd6+i7rg=="
+        "version": "1.4.2",
+        "packageName": "regenerate",
+        "hash": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
       }
     },
-    "npm:@sigstore/sign": {
+    "npm:spdx-correct": {
       "type": "npm",
-      "name": "npm:@sigstore/sign",
+      "name": "npm:spdx-correct",
       "data": {
-        "version": "2.2.0",
-        "packageName": "@sigstore/sign",
-        "hash": "sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA=="
+        "version": "3.2.0",
+        "packageName": "spdx-correct",
+        "hash": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="
       }
     },
-    "npm:errno": {
+    "npm:@babel/helper-annotate-as-pure": {
       "type": "npm",
-      "name": "npm:errno",
+      "name": "npm:@babel/helper-annotate-as-pure",
       "data": {
-        "version": "0.1.8",
-        "packageName": "errno",
-        "hash": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A=="
+        "version": "7.22.5",
+        "packageName": "@babel/helper-annotate-as-pure",
+        "hash": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg=="
       }
     },
-    "npm:supports-color": {
+    "npm:adjust-sourcemap-loader": {
       "type": "npm",
-      "name": "npm:supports-color",
+      "name": "npm:adjust-sourcemap-loader",
       "data": {
-        "version": "5.5.0",
-        "packageName": "supports-color",
-        "hash": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
+        "version": "4.0.0",
+        "packageName": "adjust-sourcemap-loader",
+        "hash": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A=="
       }
     },
-    "npm:which@2.0.2": {
+    "npm:asynckit": {
       "type": "npm",
-      "name": "npm:which@2.0.2",
+      "name": "npm:asynckit",
       "data": {
-        "version": "2.0.2",
-        "packageName": "which",
-        "hash": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
+        "version": "0.4.0",
+        "packageName": "asynckit",
+        "hash": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
       }
     },
-    "npm:ansi-colors": {
+    "npm:make-dir": {
       "type": "npm",
-      "name": "npm:ansi-colors",
+      "name": "npm:make-dir",
       "data": {
-        "version": "4.1.3",
-        "packageName": "ansi-colors",
-        "hash": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="
+        "version": "4.0.0",
+        "packageName": "make-dir",
+        "hash": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw=="
       }
     },
-    "npm:@nrwl/workspace": {
+    "npm:semver@6.3.1": {
       "type": "npm",
-      "name": "npm:@nrwl/workspace",
+      "name": "npm:semver@6.3.1",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nrwl/workspace",
-        "hash": "sha512-ntX+cE6Gs1MOdG027MHkueyEze4yNbRy54uXhWhOCUy5gcP4eNmsrxOOccajP7tVrvAW83wrp9PXJ1wQhNWOYA=="
+        "version": "6.3.1",
+        "packageName": "semver",
+        "hash": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
       }
     },
-    "npm:@types/mdast": {
+    "npm:@material/menu": {
       "type": "npm",
-      "name": "npm:@types/mdast",
+      "name": "npm:@material/menu",
       "data": {
-        "version": "3.0.15",
-        "packageName": "@types/mdast",
-        "hash": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/menu",
+        "hash": "sha512-2HOHQAIdWQtXjSvEIrW3lnbcIwFf5XaQhFzCEZ04FcSGApc4iLwsmRFVW3PzWx+mVrUrEfO/K42DVULIX9J1Pg=="
       }
     },
-    "npm:babel-plugin-istanbul": {
+    "npm:jest-leak-detector": {
       "type": "npm",
-      "name": "npm:babel-plugin-istanbul",
+      "name": "npm:jest-leak-detector",
       "data": {
-        "version": "6.1.1",
-        "packageName": "babel-plugin-istanbul",
-        "hash": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA=="
+        "version": "29.7.0",
+        "packageName": "jest-leak-detector",
+        "hash": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw=="
       }
     },
-    "npm:ci-info": {
+    "npm:minipass-sized": {
       "type": "npm",
-      "name": "npm:ci-info",
+      "name": "npm:minipass-sized",
       "data": {
-        "version": "3.9.0",
-        "packageName": "ci-info",
-        "hash": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="
+        "version": "1.0.3",
+        "packageName": "minipass-sized",
+        "hash": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g=="
       }
     },
-    "npm:array-flatten": {
+    "npm:@types/babel__template": {
       "type": "npm",
-      "name": "npm:array-flatten",
+      "name": "npm:@types/babel__template",
       "data": {
-        "version": "2.1.2",
-        "packageName": "array-flatten",
-        "hash": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
+        "version": "7.4.4",
+        "packageName": "@types/babel__template",
+        "hash": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="
       }
     },
-    "npm:@angular/material": {
+    "npm:enquirer": {
       "type": "npm",
-      "name": "npm:@angular/material",
-      "data": {
-        "version": "17.0.0",
-        "packageName": "@angular/material",
-        "hash": "sha512-rd7H7NhkDPDiyLHADm2FHOJlmgaWV7ZYNYPe/4yTXlt++GTSLhKus+PTCZYVsKGlA3mxDhNnC1RY+fdjtx/G2A=="
+      "name": "npm:enquirer",
+      "data": {
+        "version": "2.3.6",
+        "packageName": "enquirer",
+        "hash": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg=="
       }
     },
-    "npm:dotenv": {
+    "npm:on-headers": {
       "type": "npm",
-      "name": "npm:dotenv",
+      "name": "npm:on-headers",
       "data": {
-        "version": "16.3.1",
-        "packageName": "dotenv",
-        "hash": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ=="
+        "version": "1.0.2",
+        "packageName": "on-headers",
+        "hash": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
       }
     },
-    "npm:@babel/helper-compilation-targets": {
+    "npm:spdx-exceptions": {
       "type": "npm",
-      "name": "npm:@babel/helper-compilation-targets",
+      "name": "npm:spdx-exceptions",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/helper-compilation-targets",
-        "hash": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw=="
+        "version": "2.3.0",
+        "packageName": "spdx-exceptions",
+        "hash": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
       }
     },
-    "npm:is-unicode-supported@1.3.0": {
+    "npm:@babel/helper-remap-async-to-generator": {
       "type": "npm",
-      "name": "npm:is-unicode-supported@1.3.0",
+      "name": "npm:@babel/helper-remap-async-to-generator",
       "data": {
-        "version": "1.3.0",
-        "packageName": "is-unicode-supported",
-        "hash": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="
+        "version": "7.22.20",
+        "packageName": "@babel/helper-remap-async-to-generator",
+        "hash": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw=="
       }
     },
-    "npm:yallist@4.0.0": {
+    "npm:@angular/material": {
       "type": "npm",
-      "name": "npm:yallist@4.0.0",
+      "name": "npm:@angular/material",
       "data": {
-        "version": "4.0.0",
-        "packageName": "yallist",
-        "hash": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+        "version": "17.0.0",
+        "packageName": "@angular/material",
+        "hash": "sha512-rd7H7NhkDPDiyLHADm2FHOJlmgaWV7ZYNYPe/4yTXlt++GTSLhKus+PTCZYVsKGlA3mxDhNnC1RY+fdjtx/G2A=="
       }
     },
-    "npm:@esbuild/linux-ia32": {
+    "npm:@nx/nx-win32-arm64-msvc@17.1.2": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-ia32",
+      "name": "npm:@nx/nx-win32-arm64-msvc@17.1.2",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/linux-ia32",
-        "hash": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-win32-arm64-msvc",
+        "hash": "sha512-2M7FfzfPGAN7tCUWZilPGNk/RbbGcA00MKOA4MDqMwJtLobW8KqfMedilRNTEuyNibejOHwvGzA9T/Ac/ahHgA=="
       }
     },
-    "npm:@socket.io/component-emitter": {
+    "npm:array-flatten": {
       "type": "npm",
-      "name": "npm:@socket.io/component-emitter",
+      "name": "npm:array-flatten",
       "data": {
-        "version": "3.1.0",
-        "packageName": "@socket.io/component-emitter",
-        "hash": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+        "version": "2.1.2",
+        "packageName": "array-flatten",
+        "hash": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
       }
     },
-    "npm:d3-contour": {
+    "npm:@material/data-table": {
       "type": "npm",
-      "name": "npm:d3-contour",
+      "name": "npm:@material/data-table",
       "data": {
-        "version": "4.0.2",
-        "packageName": "d3-contour",
-        "hash": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/data-table",
+        "hash": "sha512-89qVOjR7gqby6fsmh7tKj29SjQ2sGLXu2IzCeX3Vni4mz+xxo5dv11jxYNADvdgJDfhyDJFPh1FlqAH7O09nFA=="
       }
     },
-    "npm:@vitejs/plugin-basic-ssl": {
+    "npm:exit": {
       "type": "npm",
-      "name": "npm:@vitejs/plugin-basic-ssl",
+      "name": "npm:exit",
       "data": {
-        "version": "1.0.1",
-        "packageName": "@vitejs/plugin-basic-ssl",
-        "hash": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A=="
+        "version": "0.1.2",
+        "packageName": "exit",
+        "hash": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ=="
       }
     },
-    "npm:escape-string-regexp@2.0.0": {
+    "npm:source-map-js": {
       "type": "npm",
-      "name": "npm:escape-string-regexp@2.0.0",
+      "name": "npm:source-map-js",
       "data": {
-        "version": "2.0.0",
-        "packageName": "escape-string-regexp",
-        "hash": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+        "version": "1.0.2",
+        "packageName": "source-map-js",
+        "hash": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
       }
     },
-    "npm:jest-util": {
+    "npm:@esbuild/freebsd-arm64@0.18.20": {
       "type": "npm",
-      "name": "npm:jest-util",
+      "name": "npm:@esbuild/freebsd-arm64@0.18.20",
       "data": {
-        "version": "29.7.0",
-        "packageName": "jest-util",
-        "hash": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/freebsd-arm64",
+        "hash": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="
       }
     },
-    "npm:ua-parser-js@1.0.37": {
+    "npm:eventemitter-asyncresource": {
       "type": "npm",
-      "name": "npm:ua-parser-js@1.0.37",
+      "name": "npm:eventemitter-asyncresource",
       "data": {
-        "version": "1.0.37",
-        "packageName": "ua-parser-js",
-        "hash": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ=="
+        "version": "1.0.0",
+        "packageName": "eventemitter-asyncresource",
+        "hash": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ=="
       }
     },
-    "npm:yargs-parser@20.2.9": {
+    "npm:@babel/plugin-transform-property-literals": {
       "type": "npm",
-      "name": "npm:yargs-parser@20.2.9",
+      "name": "npm:@babel/plugin-transform-property-literals",
       "data": {
-        "version": "20.2.9",
-        "packageName": "yargs-parser",
-        "hash": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-property-literals",
+        "hash": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ=="
       }
     },
-    "npm:npm-bundled": {
+    "npm:@material/focus-ring": {
       "type": "npm",
-      "name": "npm:npm-bundled",
+      "name": "npm:@material/focus-ring",
       "data": {
-        "version": "3.0.0",
-        "packageName": "npm-bundled",
-        "hash": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/focus-ring",
+        "hash": "sha512-ar0BtACFS3K14k/enAg0ePeEA/f/RJY4Ji4L/00Dw/B3XVpNRbqLH49jkcbtcQjdTS0FEyk2sWSNMZl6wVi0/A=="
       }
     },
-    "npm:@types/yargs-parser": {
+    "npm:dompurify": {
       "type": "npm",
-      "name": "npm:@types/yargs-parser",
+      "name": "npm:dompurify",
       "data": {
-        "version": "21.0.3",
-        "packageName": "@types/yargs-parser",
-        "hash": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="
+        "version": "3.0.6",
+        "packageName": "dompurify",
+        "hash": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w=="
       }
     },
-    "npm:fast-json-stable-stringify": {
+    "npm:graphemer": {
       "type": "npm",
-      "name": "npm:fast-json-stable-stringify",
+      "name": "npm:graphemer",
       "data": {
-        "version": "2.1.0",
-        "packageName": "fast-json-stable-stringify",
-        "hash": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+        "version": "1.4.0",
+        "packageName": "graphemer",
+        "hash": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
       }
     },
-    "npm:@humanwhocodes/object-schema": {
+    "npm:binary-extensions": {
       "type": "npm",
-      "name": "npm:@humanwhocodes/object-schema",
+      "name": "npm:binary-extensions",
       "data": {
-        "version": "2.0.1",
-        "packageName": "@humanwhocodes/object-schema",
-        "hash": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw=="
+        "version": "2.2.0",
+        "packageName": "binary-extensions",
+        "hash": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
       }
     },
-    "npm:electron-to-chromium": {
+    "npm:@nodelib/fs.stat": {
       "type": "npm",
-      "name": "npm:electron-to-chromium",
+      "name": "npm:@nodelib/fs.stat",
       "data": {
-        "version": "1.4.565",
-        "packageName": "electron-to-chromium",
-        "hash": "sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg=="
+        "version": "2.0.5",
+        "packageName": "@nodelib/fs.stat",
+        "hash": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
       }
     },
-    "npm:postcss-normalize-positions": {
+    "npm:camelcase": {
       "type": "npm",
-      "name": "npm:postcss-normalize-positions",
+      "name": "npm:camelcase",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-normalize-positions",
-        "hash": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg=="
+        "version": "5.3.1",
+        "packageName": "camelcase",
+        "hash": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
       }
     },
-    "npm:socket.io-parser": {
+    "npm:clipboard": {
       "type": "npm",
-      "name": "npm:socket.io-parser",
+      "name": "npm:clipboard",
       "data": {
-        "version": "4.2.4",
-        "packageName": "socket.io-parser",
-        "hash": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew=="
+        "version": "2.0.11",
+        "packageName": "clipboard",
+        "hash": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw=="
       }
     },
-    "npm:to-fast-properties": {
+    "npm:@babel/plugin-syntax-decorators": {
       "type": "npm",
-      "name": "npm:to-fast-properties",
+      "name": "npm:@babel/plugin-syntax-decorators",
       "data": {
-        "version": "2.0.0",
-        "packageName": "to-fast-properties",
-        "hash": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+        "version": "7.23.3",
+        "packageName": "@babel/plugin-syntax-decorators",
+        "hash": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA=="
       }
     },
-    "npm:destroy": {
+    "npm:@esbuild/freebsd-x64@0.18.20": {
       "type": "npm",
-      "name": "npm:destroy",
+      "name": "npm:@esbuild/freebsd-x64@0.18.20",
       "data": {
-        "version": "1.2.0",
-        "packageName": "destroy",
-        "hash": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/freebsd-x64",
+        "hash": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="
       }
     },
-    "npm:graceful-fs": {
+    "npm:@esbuild/linux-arm@0.18.20": {
       "type": "npm",
-      "name": "npm:graceful-fs",
+      "name": "npm:@esbuild/linux-arm@0.18.20",
       "data": {
-        "version": "4.2.11",
-        "packageName": "graceful-fs",
-        "hash": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/linux-arm",
+        "hash": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="
       }
     },
-    "npm:mime-types": {
+    "npm:@esbuild/netbsd-x64": {
       "type": "npm",
-      "name": "npm:mime-types",
+      "name": "npm:@esbuild/netbsd-x64",
       "data": {
-        "version": "2.1.35",
-        "packageName": "mime-types",
-        "hash": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/netbsd-x64",
+        "hash": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g=="
       }
     },
-    "npm:npm-normalize-package-bin": {
+    "npm:cookie": {
       "type": "npm",
-      "name": "npm:npm-normalize-package-bin",
+      "name": "npm:cookie",
       "data": {
-        "version": "3.0.1",
-        "packageName": "npm-normalize-package-bin",
-        "hash": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="
+        "version": "0.4.2",
+        "packageName": "cookie",
+        "hash": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
       }
     },
-    "npm:base64-js": {
+    "npm:@babel/helper-optimise-call-expression": {
       "type": "npm",
-      "name": "npm:base64-js",
+      "name": "npm:@babel/helper-optimise-call-expression",
       "data": {
-        "version": "1.5.1",
-        "packageName": "base64-js",
-        "hash": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+        "version": "7.22.5",
+        "packageName": "@babel/helper-optimise-call-expression",
+        "hash": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw=="
       }
     },
-    "npm:d3-dispatch": {
+    "npm:ajv-keywords@3.5.2": {
       "type": "npm",
-      "name": "npm:d3-dispatch",
+      "name": "npm:ajv-keywords@3.5.2",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-dispatch",
-        "hash": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="
+        "version": "3.5.2",
+        "packageName": "ajv-keywords",
+        "hash": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
       }
     },
-    "npm:@tsconfig/node12": {
+    "npm:default-gateway": {
       "type": "npm",
-      "name": "npm:@tsconfig/node12",
+      "name": "npm:default-gateway",
       "data": {
-        "version": "1.0.11",
-        "packageName": "@tsconfig/node12",
-        "hash": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="
+        "version": "6.0.3",
+        "packageName": "default-gateway",
+        "hash": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg=="
       }
     },
-    "npm:jsesc@0.5.0": {
+    "npm:@babel/helper-environment-visitor": {
       "type": "npm",
-      "name": "npm:jsesc@0.5.0",
+      "name": "npm:@babel/helper-environment-visitor",
       "data": {
-        "version": "0.5.0",
-        "packageName": "jsesc",
-        "hash": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA=="
+        "version": "7.22.20",
+        "packageName": "@babel/helper-environment-visitor",
+        "hash": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA=="
       }
     },
-    "npm:estraverse": {
+    "npm:ajv": {
       "type": "npm",
-      "name": "npm:estraverse",
+      "name": "npm:ajv",
       "data": {
-        "version": "5.3.0",
-        "packageName": "estraverse",
-        "hash": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
+        "version": "8.12.0",
+        "packageName": "ajv",
+        "hash": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA=="
       }
     },
-    "npm:color-convert": {
+    "npm:d3-fetch": {
       "type": "npm",
-      "name": "npm:color-convert",
+      "name": "npm:d3-fetch",
       "data": {
-        "version": "1.9.3",
-        "packageName": "color-convert",
-        "hash": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
+        "version": "3.0.1",
+        "packageName": "d3-fetch",
+        "hash": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="
       }
     },
-    "npm:@nx/nx-darwin-x64@17.1.2": {
+    "npm:diff-sequences": {
       "type": "npm",
-      "name": "npm:@nx/nx-darwin-x64@17.1.2",
+      "name": "npm:diff-sequences",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-darwin-x64",
-        "hash": "sha512-QR9Jrm32UK2nLdDRtjFabfCvF5SOQJ2IuYkw6Sxe16xGZU2DS9nQku0TQO3Uy2HV1xSR7vzj7ys5z4eI2k+/mA=="
+        "version": "29.6.3",
+        "packageName": "diff-sequences",
+        "hash": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q=="
       }
     },
-    "npm:@jest/environment": {
+    "npm:@humanwhocodes/config-array": {
       "type": "npm",
-      "name": "npm:@jest/environment",
+      "name": "npm:@humanwhocodes/config-array",
       "data": {
-        "version": "29.7.0",
-        "packageName": "@jest/environment",
-        "hash": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw=="
+        "version": "0.11.13",
+        "packageName": "@humanwhocodes/config-array",
+        "hash": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ=="
       }
     },
-    "npm:cytoscape-cose-bilkent": {
+    "npm:@types/graceful-fs": {
       "type": "npm",
-      "name": "npm:cytoscape-cose-bilkent",
+      "name": "npm:@types/graceful-fs",
       "data": {
-        "version": "4.1.0",
-        "packageName": "cytoscape-cose-bilkent",
-        "hash": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="
+        "version": "4.1.9",
+        "packageName": "@types/graceful-fs",
+        "hash": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ=="
       }
     },
-    "npm:babel-jest": {
+    "npm:eslint-visitor-keys": {
       "type": "npm",
-      "name": "npm:babel-jest",
+      "name": "npm:eslint-visitor-keys",
       "data": {
-        "version": "29.7.0",
-        "packageName": "babel-jest",
-        "hash": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg=="
+        "version": "3.4.3",
+        "packageName": "eslint-visitor-keys",
+        "hash": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
       }
     },
-    "npm:@angular/common": {
+    "npm:jest-message-util": {
       "type": "npm",
-      "name": "npm:@angular/common",
+      "name": "npm:jest-message-util",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/common",
-        "hash": "sha512-AD/d1n0hNisHDhIeBsW2ERZI9ChjiOuZ3IiGwcYKmlcOHTrZTJPAh/ZMgahv24rArlNVax7bT+Ik8+sJedGcEQ=="
+        "version": "29.7.0",
+        "packageName": "jest-message-util",
+        "hash": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w=="
       }
     },
-    "npm:yocto-queue": {
+    "npm:keyv": {
       "type": "npm",
-      "name": "npm:yocto-queue",
+      "name": "npm:keyv",
       "data": {
-        "version": "1.0.0",
-        "packageName": "yocto-queue",
-        "hash": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g=="
+        "version": "4.5.4",
+        "packageName": "keyv",
+        "hash": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="
       }
     },
-    "npm:d3-dsv": {
+    "npm:minipass-flush": {
       "type": "npm",
-      "name": "npm:d3-dsv",
+      "name": "npm:minipass-flush",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-dsv",
-        "hash": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="
+        "version": "1.0.5",
+        "packageName": "minipass-flush",
+        "hash": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw=="
       }
     },
-    "npm:columnify": {
+    "npm:mitt": {
       "type": "npm",
-      "name": "npm:columnify",
+      "name": "npm:mitt",
       "data": {
-        "version": "1.6.0",
-        "packageName": "columnify",
-        "hash": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q=="
+        "version": "1.2.0",
+        "packageName": "mitt",
+        "hash": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw=="
       }
     },
-    "npm:raw-body": {
+    "npm:is-path-inside": {
       "type": "npm",
-      "name": "npm:raw-body",
+      "name": "npm:is-path-inside",
       "data": {
-        "version": "2.5.2",
-        "packageName": "raw-body",
-        "hash": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA=="
+        "version": "3.0.3",
+        "packageName": "is-path-inside",
+        "hash": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
       }
     },
-    "npm:@types/debug": {
+    "npm:npm-registry-fetch": {
       "type": "npm",
-      "name": "npm:@types/debug",
+      "name": "npm:npm-registry-fetch",
       "data": {
-        "version": "4.1.12",
-        "packageName": "@types/debug",
-        "hash": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="
+        "version": "16.1.0",
+        "packageName": "npm-registry-fetch",
+        "hash": "sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw=="
       }
     },
-    "npm:side-channel": {
+    "npm:@angular-devkit/architect": {
       "type": "npm",
-      "name": "npm:side-channel",
+      "name": "npm:@angular-devkit/architect",
       "data": {
-        "version": "1.0.4",
-        "packageName": "side-channel",
-        "hash": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
+        "version": "0.1700.1",
+        "packageName": "@angular-devkit/architect",
+        "hash": "sha512-w84luzQNRjlt7XxX3+jyzcwBBv3gAjjvFWTjN1E5mlpDCUXgYmQ3CMowFHeu0U06HD5Sapap9p2l6GoajuZK5Q=="
       }
     },
-    "npm:@babel/helper-environment-visitor": {
+    "npm:escape-string-regexp@5.0.0": {
       "type": "npm",
-      "name": "npm:@babel/helper-environment-visitor",
+      "name": "npm:escape-string-regexp@5.0.0",
       "data": {
-        "version": "7.22.20",
-        "packageName": "@babel/helper-environment-visitor",
-        "hash": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA=="
+        "version": "5.0.0",
+        "packageName": "escape-string-regexp",
+        "hash": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
       }
     },
-    "npm:@babel/plugin-transform-template-literals": {
+    "npm:jasmine-core": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-template-literals",
+      "name": "npm:jasmine-core",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-template-literals",
-        "hash": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA=="
+        "version": "4.6.0",
+        "packageName": "jasmine-core",
+        "hash": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ=="
       }
     },
-    "npm:universalify": {
+    "npm:negotiator": {
       "type": "npm",
-      "name": "npm:universalify",
+      "name": "npm:negotiator",
       "data": {
-        "version": "0.1.2",
-        "packageName": "universalify",
-        "hash": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+        "version": "0.6.3",
+        "packageName": "negotiator",
+        "hash": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
       }
     },
-    "npm:glob-parent@6.0.2": {
+    "npm:retry": {
       "type": "npm",
-      "name": "npm:glob-parent@6.0.2",
+      "name": "npm:retry",
       "data": {
-        "version": "6.0.2",
-        "packageName": "glob-parent",
-        "hash": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="
+        "version": "0.12.0",
+        "packageName": "retry",
+        "hash": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="
       }
     },
-    "npm:flat": {
+    "npm:pako": {
       "type": "npm",
-      "name": "npm:flat",
+      "name": "npm:pako",
       "data": {
-        "version": "5.0.2",
-        "packageName": "flat",
-        "hash": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
+        "version": "1.0.11",
+        "packageName": "pako",
+        "hash": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
       }
     },
-    "npm:spdx-correct": {
+    "npm:postcss-minify-gradients": {
       "type": "npm",
-      "name": "npm:spdx-correct",
+      "name": "npm:postcss-minify-gradients",
       "data": {
-        "version": "3.2.0",
-        "packageName": "spdx-correct",
-        "hash": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="
+        "version": "6.0.0",
+        "packageName": "postcss-minify-gradients",
+        "hash": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA=="
       }
     },
-    "npm:http-server": {
+    "npm:pretty-format": {
       "type": "npm",
-      "name": "npm:http-server",
+      "name": "npm:pretty-format",
       "data": {
-        "version": "14.1.1",
-        "packageName": "http-server",
-        "hash": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A=="
+        "version": "29.7.0",
+        "packageName": "pretty-format",
+        "hash": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="
       }
     },
-    "npm:@typescript-eslint/visitor-keys": {
+    "npm:@types/range-parser": {
       "type": "npm",
-      "name": "npm:@typescript-eslint/visitor-keys",
+      "name": "npm:@types/range-parser",
       "data": {
-        "version": "6.11.0",
-        "packageName": "@typescript-eslint/visitor-keys",
-        "hash": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ=="
+        "version": "1.2.6",
+        "packageName": "@types/range-parser",
+        "hash": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA=="
       }
     },
-    "npm:on-finished@2.3.0": {
+    "npm:pure-rand": {
       "type": "npm",
-      "name": "npm:on-finished@2.3.0",
+      "name": "npm:pure-rand",
       "data": {
-        "version": "2.3.0",
-        "packageName": "on-finished",
-        "hash": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww=="
+        "version": "6.0.4",
+        "packageName": "pure-rand",
+        "hash": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA=="
       }
     },
-    "npm:@nx/nx-linux-x64-musl@17.1.2": {
+    "npm:@angular-devkit/schematics@16.2.7": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-x64-musl@17.1.2",
+      "name": "npm:@angular-devkit/schematics@16.2.7",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-linux-x64-musl",
-        "hash": "sha512-1UrR87ByhE0zSXt0C+RNT5ZiAsctOSWZwPYQAGolz8K70BxomDeRVtIaRog5KK5SHlEd1ILvgsmrhovjLjrJNw=="
+        "version": "16.2.7",
+        "packageName": "@angular-devkit/schematics",
+        "hash": "sha512-zu3xHwA4w+kXHkyyjGl3i7uSU2/kKLPKuyyixw0WLcKUQCYd7TWmu8OC0qCDa42XkxP9gGL091dJFu56exgneA=="
       }
     },
-    "npm:babel-plugin-jest-hoist": {
+    "npm:argparse@2.0.1": {
       "type": "npm",
-      "name": "npm:babel-plugin-jest-hoist",
+      "name": "npm:argparse@2.0.1",
       "data": {
-        "version": "29.6.3",
-        "packageName": "babel-plugin-jest-hoist",
-        "hash": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg=="
+        "version": "2.0.1",
+        "packageName": "argparse",
+        "hash": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
       }
     },
-    "npm:@nx/jest": {
+    "npm:jest-worker@29.7.0": {
       "type": "npm",
-      "name": "npm:@nx/jest",
+      "name": "npm:jest-worker@29.7.0",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/jest",
-        "hash": "sha512-rgwowVMbSR9/U9yzTX2LqDFpsvQ9QkWC/dEpn2jHXMYEU5qu0rbW6mnKSuQ+sHN4Fn6UgesFrYAZCwEPx+izpQ=="
+        "version": "29.7.0",
+        "packageName": "jest-worker",
+        "hash": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw=="
       }
     },
-    "npm:@nrwl/angular": {
+    "npm:@types/debug": {
       "type": "npm",
-      "name": "npm:@nrwl/angular",
+      "name": "npm:@types/debug",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/angular",
-        "hash": "sha512-PyiYeMyBWzk3+ePIA9nAWpbAEjQ3xH0mqrhOXeweS3U8RYVOpVnfZ3nRGmEEqpi742xUcJiEg8lwC0YM65otPw=="
+        "version": "4.1.12",
+        "packageName": "@types/debug",
+        "hash": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="
       }
     },
-    "npm:multicast-dns": {
+    "npm:@yarnpkg/parsers": {
       "type": "npm",
-      "name": "npm:multicast-dns",
+      "name": "npm:@yarnpkg/parsers",
       "data": {
-        "version": "7.2.5",
-        "packageName": "multicast-dns",
-        "hash": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg=="
+        "version": "3.0.0-rc.46",
+        "packageName": "@yarnpkg/parsers",
+        "hash": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q=="
       }
     },
-    "npm:regenerator-runtime": {
+    "npm:@tufjs/canonical-json": {
       "type": "npm",
-      "name": "npm:regenerator-runtime",
+      "name": "npm:@tufjs/canonical-json",
       "data": {
-        "version": "0.14.0",
-        "packageName": "regenerator-runtime",
-        "hash": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
+        "version": "2.0.0",
+        "packageName": "@tufjs/canonical-json",
+        "hash": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA=="
       }
     },
-    "npm:@colors/colors": {
+    "npm:html-entities": {
       "type": "npm",
-      "name": "npm:@colors/colors",
+      "name": "npm:html-entities",
       "data": {
-        "version": "1.5.0",
-        "packageName": "@colors/colors",
-        "hash": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="
+        "version": "2.4.0",
+        "packageName": "html-entities",
+        "hash": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ=="
       }
     },
-    "npm:lru-cache@6.0.0": {
+    "npm:uuid@9.0.1": {
       "type": "npm",
-      "name": "npm:lru-cache@6.0.0",
+      "name": "npm:uuid@9.0.1",
       "data": {
-        "version": "6.0.0",
-        "packageName": "lru-cache",
-        "hash": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="
+        "version": "9.0.1",
+        "packageName": "uuid",
+        "hash": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
       }
     },
-    "npm:@babel/plugin-transform-named-capturing-groups-regex": {
+    "npm:@types/ms": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-named-capturing-groups-regex",
+      "name": "npm:@types/ms",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-named-capturing-groups-regex",
-        "hash": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ=="
+        "version": "0.7.34",
+        "packageName": "@types/ms",
+        "hash": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
       }
     },
-    "npm:whatwg-encoding": {
+    "npm:@esbuild/android-arm64": {
       "type": "npm",
-      "name": "npm:whatwg-encoding",
+      "name": "npm:@esbuild/android-arm64",
       "data": {
-        "version": "2.0.0",
-        "packageName": "whatwg-encoding",
-        "hash": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/android-arm64",
+        "hash": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ=="
       }
     },
-    "npm:@angular-devkit/build-webpack": {
+    "npm:@webassemblyjs/floating-point-hex-parser": {
       "type": "npm",
-      "name": "npm:@angular-devkit/build-webpack",
+      "name": "npm:@webassemblyjs/floating-point-hex-parser",
       "data": {
-        "version": "0.1700.1",
-        "packageName": "@angular-devkit/build-webpack",
-        "hash": "sha512-u9LTcG9Kg2J6WkF1WSoBLdDabhbKxcuHY24SouAJTwg33j6YksglL7qnofOsNxny3Gdnze2BhCjQ1GS9Y8ovXw=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/floating-point-hex-parser",
+        "hash": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw=="
       }
     },
-    "npm:@babel/plugin-syntax-optional-chaining": {
+    "npm:d3-dsv": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-optional-chaining",
+      "name": "npm:d3-dsv",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-optional-chaining",
-        "hash": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg=="
+        "version": "3.0.1",
+        "packageName": "d3-dsv",
+        "hash": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="
       }
     },
-    "npm:@babel/helper-remap-async-to-generator": {
+    "npm:micromark-factory-space": {
       "type": "npm",
-      "name": "npm:@babel/helper-remap-async-to-generator",
+      "name": "npm:micromark-factory-space",
       "data": {
-        "version": "7.22.20",
-        "packageName": "@babel/helper-remap-async-to-generator",
-        "hash": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw=="
+        "version": "1.1.0",
+        "packageName": "micromark-factory-space",
+        "hash": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ=="
       }
     },
-    "npm:yallist": {
+    "npm:prismjs": {
       "type": "npm",
-      "name": "npm:yallist",
+      "name": "npm:prismjs",
       "data": {
-        "version": "3.1.1",
-        "packageName": "yallist",
-        "hash": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+        "version": "1.29.0",
+        "packageName": "prismjs",
+        "hash": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
       }
     },
-    "npm:inquirer": {
+    "npm:methods": {
       "type": "npm",
-      "name": "npm:inquirer",
+      "name": "npm:methods",
       "data": {
-        "version": "9.2.11",
-        "packageName": "inquirer",
-        "hash": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g=="
+        "version": "1.1.2",
+        "packageName": "methods",
+        "hash": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
       }
     },
-    "npm:micromark-util-symbol": {
+    "npm:read-package-json": {
       "type": "npm",
-      "name": "npm:micromark-util-symbol",
+      "name": "npm:read-package-json",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-symbol",
-        "hash": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag=="
+        "version": "7.0.0",
+        "packageName": "read-package-json",
+        "hash": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg=="
       }
     },
-    "npm:acorn-jsx": {
+    "npm:isarray": {
       "type": "npm",
-      "name": "npm:acorn-jsx",
+      "name": "npm:isarray",
       "data": {
-        "version": "5.3.2",
-        "packageName": "acorn-jsx",
-        "hash": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
+        "version": "1.0.0",
+        "packageName": "isarray",
+        "hash": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
       }
     },
-    "npm:cytoscape": {
+    "npm:@material/image-list": {
       "type": "npm",
-      "name": "npm:cytoscape",
+      "name": "npm:@material/image-list",
       "data": {
-        "version": "3.28.1",
-        "packageName": "cytoscape",
-        "hash": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/image-list",
+        "hash": "sha512-Rcj3q7Tp7Nwbe5ht6ptTc3zqK8TSDJHaPDBf+kzi0kkh6MAB4qoHPgn+HnA+zIZ79CScU56bN7zjA6XYaZvsLw=="
       }
     },
-    "npm:@material/feature-targeting": {
+    "npm:@material/fab": {
       "type": "npm",
-      "name": "npm:@material/feature-targeting",
+      "name": "npm:@material/fab",
       "data": {
         "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/feature-targeting",
-        "hash": "sha512-/SU9X5y8CRp6RS9qnjnM/N5qfsJ8bYILpR841eZmN6DLqMupaM9Yy7Mx8+v/QvpBLLhk+jmu79nFzwkwW54d6Q=="
+        "packageName": "@material/fab",
+        "hash": "sha512-XUex3FNqxPD1i/4jITucB/RWTNkkdv52mbNmwrvbuThZlhuhyH9GzOQYTDop/b2783TPcv++xr8UUbuh8GWYzA=="
       }
     },
-    "npm:@types/graceful-fs": {
+    "npm:caniuse-lite": {
       "type": "npm",
-      "name": "npm:@types/graceful-fs",
+      "name": "npm:caniuse-lite",
       "data": {
-        "version": "4.1.9",
-        "packageName": "@types/graceful-fs",
-        "hash": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ=="
+        "version": "1.0.30001553",
+        "packageName": "caniuse-lite",
+        "hash": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A=="
       }
     },
-    "npm:mdast-util-to-string": {
+    "npm:exponential-backoff": {
       "type": "npm",
-      "name": "npm:mdast-util-to-string",
+      "name": "npm:exponential-backoff",
       "data": {
-        "version": "3.2.0",
-        "packageName": "mdast-util-to-string",
-        "hash": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg=="
+        "version": "3.1.1",
+        "packageName": "exponential-backoff",
+        "hash": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw=="
       }
     },
-    "npm:@nrwl/workspace@17.1.2": {
+    "npm:escape-string-regexp": {
       "type": "npm",
-      "name": "npm:@nrwl/workspace@17.1.2",
+      "name": "npm:escape-string-regexp",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/workspace",
-        "hash": "sha512-1MymxYcX5YPrTSuZhQ6V0MhqAFB+8Bm2O9EJHpj4VS9LKIWwDche4DkqypmhbTeAzagr5YIWqaKtPCrkP0tn8w=="
+        "version": "1.0.5",
+        "packageName": "escape-string-regexp",
+        "hash": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
       }
     },
-    "npm:@types/send": {
+    "npm:restore-cursor": {
       "type": "npm",
-      "name": "npm:@types/send",
+      "name": "npm:restore-cursor",
       "data": {
-        "version": "0.17.3",
-        "packageName": "@types/send",
-        "hash": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug=="
+        "version": "3.1.0",
+        "packageName": "restore-cursor",
+        "hash": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="
       }
     },
-    "npm:@nx/devkit": {
+    "npm:terser-webpack-plugin": {
       "type": "npm",
-      "name": "npm:@nx/devkit",
+      "name": "npm:terser-webpack-plugin",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/devkit",
-        "hash": "sha512-gtJNrFtGZa96qAM4ijAvoCLj/LuUr+Jq91QITsYE4cvYL0qan4zGcAOBMclzpaXVN9pwpko+veDwHwnmp/SXTg=="
+        "version": "5.3.9",
+        "packageName": "terser-webpack-plugin",
+        "hash": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA=="
       }
     },
-    "npm:@types/istanbul-lib-report": {
+    "npm:type-is": {
       "type": "npm",
-      "name": "npm:@types/istanbul-lib-report",
+      "name": "npm:type-is",
       "data": {
-        "version": "3.0.3",
-        "packageName": "@types/istanbul-lib-report",
-        "hash": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="
+        "version": "1.6.18",
+        "packageName": "type-is",
+        "hash": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="
       }
     },
-    "npm:cors": {
+    "npm:eastasianwidth": {
       "type": "npm",
-      "name": "npm:cors",
+      "name": "npm:eastasianwidth",
       "data": {
-        "version": "2.8.5",
-        "packageName": "cors",
-        "hash": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="
+        "version": "0.2.0",
+        "packageName": "eastasianwidth",
+        "hash": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+      }
+    },
+    "npm:eslint-scope": {
+      "type": "npm",
+      "name": "npm:eslint-scope",
+      "data": {
+        "version": "5.1.1",
+        "packageName": "eslint-scope",
+        "hash": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="
       }
     },
-    "npm:esrecurse": {
+    "npm:string-width-cjs": {
       "type": "npm",
-      "name": "npm:esrecurse",
+      "name": "npm:string-width-cjs",
       "data": {
-        "version": "4.3.0",
-        "packageName": "esrecurse",
-        "hash": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="
+        "version": "npm:string-width@4.2.3",
+        "packageName": "string-width-cjs",
+        "hash": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
       }
     },
-    "npm:micromark-util-decode-numeric-character-reference": {
+    "npm:util-deprecate": {
       "type": "npm",
-      "name": "npm:micromark-util-decode-numeric-character-reference",
+      "name": "npm:util-deprecate",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-decode-numeric-character-reference",
-        "hash": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw=="
+        "version": "1.0.2",
+        "packageName": "util-deprecate",
+        "hash": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
       }
     },
-    "npm:@nrwl/webpack": {
+    "npm:utils-merge": {
       "type": "npm",
-      "name": "npm:@nrwl/webpack",
+      "name": "npm:utils-merge",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nrwl/webpack",
-        "hash": "sha512-D8+tuyb5v56mTiX6absMoxSkSbNgjp593P4GHHu5bCaCYGMI1Rj8CYwakFIXaxaLzguBtoqC+6L2OxAQ1OwB1g=="
+        "version": "1.0.1",
+        "packageName": "utils-merge",
+        "hash": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
       }
     },
-    "npm:color-convert@2.0.1": {
+    "npm:on-finished": {
       "type": "npm",
-      "name": "npm:color-convert@2.0.1",
+      "name": "npm:on-finished",
       "data": {
-        "version": "2.0.1",
-        "packageName": "color-convert",
-        "hash": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
+        "version": "2.4.1",
+        "packageName": "on-finished",
+        "hash": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="
       }
     },
-    "npm:ansi-styles": {
+    "npm:concat-map": {
       "type": "npm",
-      "name": "npm:ansi-styles",
+      "name": "npm:concat-map",
       "data": {
-        "version": "3.2.1",
-        "packageName": "ansi-styles",
-        "hash": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
+        "version": "0.0.1",
+        "packageName": "concat-map",
+        "hash": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
       }
     },
-    "npm:csso": {
+    "npm:lodash": {
       "type": "npm",
-      "name": "npm:csso",
+      "name": "npm:lodash",
       "data": {
-        "version": "5.0.5",
-        "packageName": "csso",
-        "hash": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="
+        "version": "4.17.21",
+        "packageName": "lodash",
+        "hash": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
       }
     },
-    "npm:@ngtools/webpack": {
+    "npm:micromark-util-resolve-all": {
       "type": "npm",
-      "name": "npm:@ngtools/webpack",
+      "name": "npm:micromark-util-resolve-all",
       "data": {
-        "version": "17.0.1",
-        "packageName": "@ngtools/webpack",
-        "hash": "sha512-IfiWIBY1GntfJFV/U1CSOHZ7zF5p0zFMFzux7/iGXUXit299LTdJ5mZTe9++lFcH6dPHgEPWlinuYAfzorY4ng=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-resolve-all",
+        "hash": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA=="
       }
     },
-    "npm:@nx/nx-darwin-x64": {
+    "npm:dotenv": {
       "type": "npm",
-      "name": "npm:@nx/nx-darwin-x64",
+      "name": "npm:dotenv",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-darwin-x64",
-        "hash": "sha512-olGt5R2dWYwdl1+I2RfJ8LdZO1elqhr9yDPnMIx//ZuN6T6wJA+Wdp2P3qpM1bY0F1lI/6AgjqzRyrTLUZ9cDA=="
+        "version": "16.3.1",
+        "packageName": "dotenv",
+        "hash": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ=="
       }
     },
-    "npm:micromark-factory-title": {
+    "npm:path-key": {
       "type": "npm",
-      "name": "npm:micromark-factory-title",
+      "name": "npm:path-key",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-factory-title",
-        "hash": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ=="
+        "version": "3.1.1",
+        "packageName": "path-key",
+        "hash": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
       }
     },
-    "npm:webpack-node-externals": {
+    "npm:read-package-json-fast": {
       "type": "npm",
-      "name": "npm:webpack-node-externals",
+      "name": "npm:read-package-json-fast",
       "data": {
-        "version": "3.0.0",
-        "packageName": "webpack-node-externals",
-        "hash": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ=="
+        "version": "3.0.2",
+        "packageName": "read-package-json-fast",
+        "hash": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw=="
       }
     },
-    "npm:socket.io": {
+    "npm:@jest/types": {
       "type": "npm",
-      "name": "npm:socket.io",
+      "name": "npm:@jest/types",
       "data": {
-        "version": "4.7.2",
-        "packageName": "socket.io",
-        "hash": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw=="
+        "version": "29.6.3",
+        "packageName": "@jest/types",
+        "hash": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="
       }
     },
-    "npm:@babel/plugin-transform-dynamic-import": {
+    "npm:duplexer": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-dynamic-import",
+      "name": "npm:duplexer",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-dynamic-import",
-        "hash": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA=="
+        "version": "0.1.2",
+        "packageName": "duplexer",
+        "hash": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
       }
     },
-    "npm:@typescript-eslint/typescript-estree": {
+    "npm:character-entities": {
       "type": "npm",
-      "name": "npm:@typescript-eslint/typescript-estree",
+      "name": "npm:character-entities",
       "data": {
-        "version": "6.11.0",
-        "packageName": "@typescript-eslint/typescript-estree",
-        "hash": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ=="
+        "version": "2.0.2",
+        "packageName": "character-entities",
+        "hash": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="
       }
     },
-    "npm:js-tokens": {
+    "npm:jest-environment-node": {
       "type": "npm",
-      "name": "npm:js-tokens",
+      "name": "npm:jest-environment-node",
       "data": {
-        "version": "4.0.0",
-        "packageName": "js-tokens",
-        "hash": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+        "version": "29.7.0",
+        "packageName": "jest-environment-node",
+        "hash": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw=="
       }
     },
-    "npm:mdn-data": {
+    "npm:postcss-colormin": {
       "type": "npm",
-      "name": "npm:mdn-data",
+      "name": "npm:postcss-colormin",
       "data": {
-        "version": "2.0.30",
-        "packageName": "mdn-data",
-        "hash": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
+        "version": "6.0.0",
+        "packageName": "postcss-colormin",
+        "hash": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw=="
       }
     },
-    "npm:@tsconfig/node16": {
+    "npm:@cspotcode/source-map-support": {
       "type": "npm",
-      "name": "npm:@tsconfig/node16",
+      "name": "npm:@cspotcode/source-map-support",
       "data": {
-        "version": "1.0.4",
-        "packageName": "@tsconfig/node16",
-        "hash": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="
+        "version": "0.8.1",
+        "packageName": "@cspotcode/source-map-support",
+        "hash": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="
       }
     },
-    "npm:@types/http-proxy": {
+    "npm:@tsconfig/node14": {
       "type": "npm",
-      "name": "npm:@types/http-proxy",
+      "name": "npm:@tsconfig/node14",
       "data": {
-        "version": "1.17.13",
-        "packageName": "@types/http-proxy",
-        "hash": "sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw=="
+        "version": "1.0.3",
+        "packageName": "@tsconfig/node14",
+        "hash": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="
       }
     },
-    "npm:@esbuild/freebsd-arm64@0.18.20": {
+    "npm:colorette": {
       "type": "npm",
-      "name": "npm:@esbuild/freebsd-arm64@0.18.20",
+      "name": "npm:colorette",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/freebsd-arm64",
-        "hash": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="
+        "version": "2.0.20",
+        "packageName": "colorette",
+        "hash": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
       }
     },
-    "npm:cli-cursor": {
+    "npm:execa": {
       "type": "npm",
-      "name": "npm:cli-cursor",
+      "name": "npm:execa",
       "data": {
-        "version": "3.1.0",
-        "packageName": "cli-cursor",
-        "hash": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="
+        "version": "5.1.1",
+        "packageName": "execa",
+        "hash": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="
       }
     },
-    "npm:normalize-path": {
+    "npm:char-regex": {
       "type": "npm",
-      "name": "npm:normalize-path",
+      "name": "npm:char-regex",
       "data": {
-        "version": "3.0.0",
-        "packageName": "normalize-path",
-        "hash": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+        "version": "1.0.2",
+        "packageName": "char-regex",
+        "hash": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw=="
       }
     },
-    "npm:@material/menu": {
+    "npm:dagre-d3-es": {
       "type": "npm",
-      "name": "npm:@material/menu",
+      "name": "npm:dagre-d3-es",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/menu",
-        "hash": "sha512-2HOHQAIdWQtXjSvEIrW3lnbcIwFf5XaQhFzCEZ04FcSGApc4iLwsmRFVW3PzWx+mVrUrEfO/K42DVULIX9J1Pg=="
+        "version": "7.0.10",
+        "packageName": "dagre-d3-es",
+        "hash": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A=="
       }
     },
-    "npm:hasown": {
+    "npm:d3-time-format": {
       "type": "npm",
-      "name": "npm:hasown",
+      "name": "npm:d3-time-format",
       "data": {
-        "version": "2.0.0",
-        "packageName": "hasown",
-        "hash": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA=="
+        "version": "4.1.0",
+        "packageName": "d3-time-format",
+        "hash": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="
       }
     },
-    "npm:@npmcli/fs": {
+    "npm:harmony-reflect": {
       "type": "npm",
-      "name": "npm:@npmcli/fs",
+      "name": "npm:harmony-reflect",
       "data": {
-        "version": "3.1.0",
-        "packageName": "@npmcli/fs",
-        "hash": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w=="
+        "version": "1.6.2",
+        "packageName": "harmony-reflect",
+        "hash": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g=="
       }
     },
-    "npm:@material/focus-ring": {
+    "npm:is-glob": {
       "type": "npm",
-      "name": "npm:@material/focus-ring",
+      "name": "npm:is-glob",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/focus-ring",
-        "hash": "sha512-ar0BtACFS3K14k/enAg0ePeEA/f/RJY4Ji4L/00Dw/B3XVpNRbqLH49jkcbtcQjdTS0FEyk2sWSNMZl6wVi0/A=="
+        "version": "4.0.3",
+        "packageName": "is-glob",
+        "hash": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="
       }
     },
-    "npm:mrmime": {
+    "npm:lilconfig": {
       "type": "npm",
-      "name": "npm:mrmime",
+      "name": "npm:lilconfig",
       "data": {
-        "version": "1.0.1",
-        "packageName": "mrmime",
-        "hash": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw=="
+        "version": "2.1.0",
+        "packageName": "lilconfig",
+        "hash": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="
       }
     },
-    "npm:@babel/code-frame": {
+    "npm:@nrwl/devkit@17.1.2": {
       "type": "npm",
-      "name": "npm:@babel/code-frame",
+      "name": "npm:@nrwl/devkit@17.1.2",
       "data": {
-        "version": "7.22.13",
-        "packageName": "@babel/code-frame",
-        "hash": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w=="
+        "version": "17.1.2",
+        "packageName": "@nrwl/devkit",
+        "hash": "sha512-INPZk4qts3xNJt8E9fttuVTufXdigPUOvUiAiPJmR2oUGDF8SeOlIYNForbz+XMRvxyIVtf45O32azUsgeZe3Q=="
       }
     },
-    "npm:@nx/nx-freebsd-x64": {
+    "npm:engine.io": {
       "type": "npm",
-      "name": "npm:@nx/nx-freebsd-x64",
+      "name": "npm:engine.io",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-freebsd-x64",
-        "hash": "sha512-+mta0J2G2byd+rfZ275oZs0aYXC/s92nI9ySBFQFQZnKJ6bsAagdZHe+uETsnE4xdhFXD8kvNMJU1WTGlyFyjg=="
+        "version": "6.5.3",
+        "packageName": "engine.io",
+        "hash": "sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw=="
       }
     },
-    "npm:npm-run-path": {
+    "npm:serve-static": {
       "type": "npm",
-      "name": "npm:npm-run-path",
+      "name": "npm:serve-static",
       "data": {
-        "version": "4.0.1",
-        "packageName": "npm-run-path",
-        "hash": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="
+        "version": "1.15.0",
+        "packageName": "serve-static",
+        "hash": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g=="
       }
     },
-    "npm:isexe": {
+    "npm:lodash-es": {
       "type": "npm",
-      "name": "npm:isexe",
+      "name": "npm:lodash-es",
       "data": {
-        "version": "2.0.0",
-        "packageName": "isexe",
-        "hash": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+        "version": "4.17.21",
+        "packageName": "lodash-es",
+        "hash": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
       }
     },
-    "npm:html-escaper": {
+    "npm:socket.io": {
       "type": "npm",
-      "name": "npm:html-escaper",
+      "name": "npm:socket.io",
       "data": {
-        "version": "2.0.2",
-        "packageName": "html-escaper",
-        "hash": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="
+        "version": "4.7.2",
+        "packageName": "socket.io",
+        "hash": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw=="
       }
     },
-    "npm:char-regex": {
+    "npm:stylis": {
       "type": "npm",
-      "name": "npm:char-regex",
+      "name": "npm:stylis",
       "data": {
-        "version": "1.0.2",
-        "packageName": "char-regex",
-        "hash": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw=="
+        "version": "4.3.0",
+        "packageName": "stylis",
+        "hash": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
       }
     },
-    "npm:debug@2.6.9": {
+    "npm:prosemirror-state": {
       "type": "npm",
-      "name": "npm:debug@2.6.9",
+      "name": "npm:prosemirror-state",
       "data": {
-        "version": "2.6.9",
-        "packageName": "debug",
-        "hash": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
+        "version": "1.4.3",
+        "packageName": "prosemirror-state",
+        "hash": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q=="
       }
     },
-    "npm:enhanced-resolve": {
+    "npm:node-gyp": {
       "type": "npm",
-      "name": "npm:enhanced-resolve",
+      "name": "npm:node-gyp",
       "data": {
-        "version": "5.15.0",
-        "packageName": "enhanced-resolve",
-        "hash": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg=="
+        "version": "10.0.1",
+        "packageName": "node-gyp",
+        "hash": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg=="
       }
     },
-    "npm:d3-random": {
+    "npm:@esbuild/win32-ia32@0.18.20": {
       "type": "npm",
-      "name": "npm:d3-random",
+      "name": "npm:@esbuild/win32-ia32@0.18.20",
       "data": {
-        "version": "3.0.1",
-        "packageName": "d3-random",
-        "hash": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="
+        "version": "0.18.20",
+        "packageName": "@esbuild/win32-ia32",
+        "hash": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="
       }
     },
-    "npm:ipaddr.js": {
+    "npm:@material/drawer": {
       "type": "npm",
-      "name": "npm:ipaddr.js",
+      "name": "npm:@material/drawer",
       "data": {
-        "version": "2.1.0",
-        "packageName": "ipaddr.js",
-        "hash": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/drawer",
+        "hash": "sha512-/JUmbzRBaikdbZ250yA9ZTPqp2W5nGvvuHYoNVAAmtOmxuwGvvNNpWiVZy2lIYeYcf1hA7hJ5mEQxs0aSD7iWQ=="
       }
     },
-    "npm:@nx/workspace": {
+    "npm:ejs": {
       "type": "npm",
-      "name": "npm:@nx/workspace",
+      "name": "npm:ejs",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/workspace",
-        "hash": "sha512-z2xit36dxdJuQmBDadNbbaYCKUYNk6mUWG/GEeBdgGXvFixqAUZ4lbWARlauCQS/+rEjXGOxtvn+u2d8u9mTSA=="
+        "version": "3.1.9",
+        "packageName": "ejs",
+        "hash": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ=="
       }
     },
-    "npm:@esbuild/linux-mips64el@0.18.20": {
+    "npm:@angular-devkit/build-webpack": {
       "type": "npm",
-      "name": "npm:@esbuild/linux-mips64el@0.18.20",
+      "name": "npm:@angular-devkit/build-webpack",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/linux-mips64el",
-        "hash": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="
+        "version": "0.1700.1",
+        "packageName": "@angular-devkit/build-webpack",
+        "hash": "sha512-u9LTcG9Kg2J6WkF1WSoBLdDabhbKxcuHY24SouAJTwg33j6YksglL7qnofOsNxny3Gdnze2BhCjQ1GS9Y8ovXw=="
       }
     },
-    "npm:@types/mime": {
+    "npm:postcss-ordered-values": {
       "type": "npm",
-      "name": "npm:@types/mime",
+      "name": "npm:postcss-ordered-values",
       "data": {
-        "version": "1.3.4",
-        "packageName": "@types/mime",
-        "hash": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw=="
+        "version": "6.0.0",
+        "packageName": "postcss-ordered-values",
+        "hash": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg=="
       }
     },
-    "npm:find-cache-dir": {
+    "npm:stack-utils": {
       "type": "npm",
-      "name": "npm:find-cache-dir",
+      "name": "npm:stack-utils",
       "data": {
-        "version": "4.0.0",
-        "packageName": "find-cache-dir",
-        "hash": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg=="
+        "version": "2.0.6",
+        "packageName": "stack-utils",
+        "hash": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="
       }
     },
-    "npm:minimatch@3.0.5": {
+    "npm:get-package-type": {
       "type": "npm",
-      "name": "npm:minimatch@3.0.5",
+      "name": "npm:get-package-type",
       "data": {
-        "version": "3.0.5",
-        "packageName": "minimatch",
-        "hash": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw=="
+        "version": "0.1.0",
+        "packageName": "get-package-type",
+        "hash": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q=="
       }
     },
-    "npm:ms@2.0.0": {
+    "npm:jackspeak": {
       "type": "npm",
-      "name": "npm:ms@2.0.0",
+      "name": "npm:jackspeak",
       "data": {
-        "version": "2.0.0",
-        "packageName": "ms",
-        "hash": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        "version": "2.3.6",
+        "packageName": "jackspeak",
+        "hash": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ=="
       }
     },
-    "npm:cli-width": {
+    "npm:khroma": {
       "type": "npm",
-      "name": "npm:cli-width",
+      "name": "npm:khroma",
       "data": {
-        "version": "4.1.0",
-        "packageName": "cli-width",
-        "hash": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="
+        "version": "2.1.0",
+        "packageName": "khroma",
+        "hash": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
       }
     },
-    "npm:entities": {
+    "npm:@material/segmented-button": {
       "type": "npm",
-      "name": "npm:entities",
+      "name": "npm:@material/segmented-button",
       "data": {
-        "version": "4.5.0",
-        "packageName": "entities",
-        "hash": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/segmented-button",
+        "hash": "sha512-oqGHs2C7C+yJW/xZf/wP8jBGLs6HcerhM3CsorLAEMH3MGuIlVC17WcisBewEWucsILYEWbySXy/7T4h6/psZA=="
       }
     },
-    "npm:is-number-like": {
+    "npm:find-up@5.0.0": {
       "type": "npm",
-      "name": "npm:is-number-like",
+      "name": "npm:find-up@5.0.0",
       "data": {
-        "version": "1.0.8",
-        "packageName": "is-number-like",
-        "hash": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA=="
+        "version": "5.0.0",
+        "packageName": "find-up",
+        "hash": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
       }
     },
-    "npm:negotiator": {
+    "npm:@types/express": {
       "type": "npm",
-      "name": "npm:negotiator",
+      "name": "npm:@types/express",
       "data": {
-        "version": "0.6.3",
-        "packageName": "negotiator",
-        "hash": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
+        "version": "4.17.20",
+        "packageName": "@types/express",
+        "hash": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw=="
       }
     },
-    "npm:@types/retry": {
+    "npm:follow-redirects": {
       "type": "npm",
-      "name": "npm:@types/retry",
+      "name": "npm:follow-redirects",
       "data": {
-        "version": "0.12.0",
-        "packageName": "@types/retry",
-        "hash": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
+        "version": "1.15.3",
+        "packageName": "follow-redirects",
+        "hash": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
       }
     },
-    "npm:ignore-walk": {
+    "npm:@nx/eslint": {
       "type": "npm",
-      "name": "npm:ignore-walk",
+      "name": "npm:@nx/eslint",
       "data": {
-        "version": "6.0.3",
-        "packageName": "ignore-walk",
-        "hash": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA=="
+        "version": "17.1.2",
+        "packageName": "@nx/eslint",
+        "hash": "sha512-SDwx6P0HMzLURzbmUCPxvvkGBIhBIEujsvTCnaRsWJIKmrYKJjv4ENWqjZZSOMgP5gU2HjQFaWtRicjbdcu9Tg=="
       }
     },
-    "npm:@webassemblyjs/wasm-parser": {
+    "npm:es-module-lexer": {
       "type": "npm",
-      "name": "npm:@webassemblyjs/wasm-parser",
+      "name": "npm:es-module-lexer",
       "data": {
-        "version": "1.11.6",
-        "packageName": "@webassemblyjs/wasm-parser",
-        "hash": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ=="
+        "version": "1.3.1",
+        "packageName": "es-module-lexer",
+        "hash": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q=="
       }
     },
-    "npm:address": {
+    "npm:chalk@5.3.0": {
       "type": "npm",
-      "name": "npm:address",
+      "name": "npm:chalk@5.3.0",
       "data": {
-        "version": "1.2.2",
-        "packageName": "address",
-        "hash": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA=="
+        "version": "5.3.0",
+        "packageName": "chalk",
+        "hash": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="
       }
     },
-    "npm:@babel/plugin-transform-private-property-in-object": {
+    "npm:node-addon-api": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-private-property-in-object",
+      "name": "npm:node-addon-api",
       "data": {
-        "version": "7.22.11",
-        "packageName": "@babel/plugin-transform-private-property-in-object",
-        "hash": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ=="
+        "version": "3.2.1",
+        "packageName": "node-addon-api",
+        "hash": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
       }
     },
-    "npm:postcss-modules-local-by-default": {
+    "npm:minipass@5.0.0": {
       "type": "npm",
-      "name": "npm:postcss-modules-local-by-default",
+      "name": "npm:minipass@5.0.0",
       "data": {
-        "version": "4.0.3",
-        "packageName": "postcss-modules-local-by-default",
-        "hash": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA=="
+        "version": "5.0.0",
+        "packageName": "minipass",
+        "hash": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="
       }
     },
-    "npm:@material/switch": {
+    "npm:@babel/template": {
       "type": "npm",
-      "name": "npm:@material/switch",
+      "name": "npm:@babel/template",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/switch",
-        "hash": "sha512-o0wcbYgm2yRs4een5uxT4RJnJ003DxXe33rk8vTBG2o7cdiSR3X7GJQxeIK3D9wPgWCAwBLhNYSzXrlTL5pkMw=="
+        "version": "7.22.15",
+        "packageName": "@babel/template",
+        "hash": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w=="
       }
     },
-    "npm:ms": {
+    "npm:supports-color@8.1.1": {
       "type": "npm",
-      "name": "npm:ms",
+      "name": "npm:supports-color@8.1.1",
       "data": {
-        "version": "2.1.2",
-        "packageName": "ms",
-        "hash": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        "version": "8.1.1",
+        "packageName": "supports-color",
+        "hash": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="
       }
     },
-    "npm:lodash-es": {
+    "npm:@nx/nx-freebsd-x64@17.1.2": {
       "type": "npm",
-      "name": "npm:lodash-es",
+      "name": "npm:@nx/nx-freebsd-x64@17.1.2",
       "data": {
-        "version": "4.17.21",
-        "packageName": "lodash-es",
-        "hash": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-freebsd-x64",
+        "hash": "sha512-6rDuFHJREVg5XpcM5RlE8pHP4bgcbns8sSemF/g75SV4iEkBqxRvSe88oBtF44b7IpX2zdONRDV4qQcRf3DxRg=="
       }
     },
-    "npm:lines-and-columns": {
+    "npm:fast-levenshtein": {
       "type": "npm",
-      "name": "npm:lines-and-columns",
+      "name": "npm:fast-levenshtein",
       "data": {
-        "version": "1.2.4",
-        "packageName": "lines-and-columns",
-        "hash": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+        "version": "2.0.6",
+        "packageName": "fast-levenshtein",
+        "hash": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
       }
     },
-    "npm:@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+    "npm:human-signals": {
       "type": "npm",
-      "name": "npm:@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+      "name": "npm:human-signals",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
-        "hash": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ=="
+        "version": "2.1.0",
+        "packageName": "human-signals",
+        "hash": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
       }
     },
-    "npm:@material/density": {
+    "npm:dedent@1.5.1": {
       "type": "npm",
-      "name": "npm:@material/density",
+      "name": "npm:dedent@1.5.1",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/density",
-        "hash": "sha512-h8BJVCWkPR97WeWCN6/atVbSOP8J4+ZbbssidcwsnX7b3+3IaWdtBxGii25dsILX8pUVwwqxVis24y211b+8rg=="
+        "version": "1.5.1",
+        "packageName": "dedent",
+        "hash": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg=="
       }
     },
-    "npm:istanbul-lib-instrument@6.0.1": {
+    "npm:secure-compare": {
       "type": "npm",
-      "name": "npm:istanbul-lib-instrument@6.0.1",
+      "name": "npm:secure-compare",
       "data": {
-        "version": "6.0.1",
-        "packageName": "istanbul-lib-instrument",
-        "hash": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA=="
+        "version": "3.0.1",
+        "packageName": "secure-compare",
+        "hash": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw=="
       }
     },
-    "npm:istanbul-lib-instrument": {
+    "npm:shell-quote": {
       "type": "npm",
-      "name": "npm:istanbul-lib-instrument",
+      "name": "npm:shell-quote",
       "data": {
-        "version": "5.2.1",
-        "packageName": "istanbul-lib-instrument",
-        "hash": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg=="
+        "version": "1.8.1",
+        "packageName": "shell-quote",
+        "hash": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA=="
       }
     },
-    "npm:ms@2.1.3": {
+    "npm:@esbuild/linux-ppc64": {
       "type": "npm",
-      "name": "npm:ms@2.1.3",
+      "name": "npm:@esbuild/linux-ppc64",
       "data": {
-        "version": "2.1.3",
-        "packageName": "ms",
-        "hash": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+        "version": "0.19.5",
+        "packageName": "@esbuild/linux-ppc64",
+        "hash": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q=="
       }
     },
-    "npm:is-fullwidth-code-point": {
+    "npm:inherits@2.0.3": {
       "type": "npm",
-      "name": "npm:is-fullwidth-code-point",
+      "name": "npm:inherits@2.0.3",
       "data": {
-        "version": "3.0.0",
-        "packageName": "is-fullwidth-code-point",
-        "hash": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+        "version": "2.0.3",
+        "packageName": "inherits",
+        "hash": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
       }
     },
-    "npm:parse5": {
+    "npm:license-webpack-plugin": {
       "type": "npm",
-      "name": "npm:parse5",
+      "name": "npm:license-webpack-plugin",
       "data": {
-        "version": "4.0.0",
-        "packageName": "parse5",
-        "hash": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA=="
+        "version": "4.0.2",
+        "packageName": "license-webpack-plugin",
+        "hash": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw=="
       }
     },
-    "npm:@babel/plugin-syntax-export-namespace-from": {
+    "npm:globby": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-export-namespace-from",
+      "name": "npm:globby",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-export-namespace-from",
-        "hash": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q=="
+        "version": "13.2.2",
+        "packageName": "globby",
+        "hash": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w=="
       }
     },
-    "npm:esbuild-wasm": {
+    "npm:address": {
       "type": "npm",
-      "name": "npm:esbuild-wasm",
+      "name": "npm:address",
       "data": {
-        "version": "0.19.5",
-        "packageName": "esbuild-wasm",
-        "hash": "sha512-7zmLLn2QCj93XfMmHtzrDJ1UBuOHB2CZz1ghoCEZiRajxjUvHsF40PnbzFIY/pmesqPRaEtEWii0uzsTbnAgrA=="
+        "version": "1.2.2",
+        "packageName": "address",
+        "hash": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA=="
       }
     },
-    "npm:@types/sockjs": {
+    "npm:nth-check": {
       "type": "npm",
-      "name": "npm:@types/sockjs",
+      "name": "npm:nth-check",
       "data": {
-        "version": "0.3.35",
-        "packageName": "@types/sockjs",
-        "hash": "sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw=="
+        "version": "2.1.1",
+        "packageName": "nth-check",
+        "hash": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="
       }
     },
     "npm:@esbuild/win32-ia32": {
@@ -11966,211 +12083,211 @@
         "hash": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw=="
       }
     },
-    "npm:d3-axis": {
+    "npm:opener": {
       "type": "npm",
-      "name": "npm:d3-axis",
+      "name": "npm:opener",
       "data": {
-        "version": "3.0.0",
-        "packageName": "d3-axis",
-        "hash": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="
+        "version": "1.5.2",
+        "packageName": "opener",
+        "hash": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="
       }
     },
-    "npm:flat-cache": {
+    "npm:xmlhttprequest-ssl": {
       "type": "npm",
-      "name": "npm:flat-cache",
+      "name": "npm:xmlhttprequest-ssl",
       "data": {
-        "version": "3.2.0",
-        "packageName": "flat-cache",
-        "hash": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="
+        "version": "2.0.0",
+        "packageName": "xmlhttprequest-ssl",
+        "hash": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
       }
     },
-    "npm:yargs@16.2.0": {
+    "npm:babel-preset-current-node-syntax": {
       "type": "npm",
-      "name": "npm:yargs@16.2.0",
+      "name": "npm:babel-preset-current-node-syntax",
       "data": {
-        "version": "16.2.0",
-        "packageName": "yargs",
-        "hash": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="
+        "version": "1.0.1",
+        "packageName": "babel-preset-current-node-syntax",
+        "hash": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ=="
       }
     },
-    "npm:resolve": {
+    "npm:@babel/plugin-syntax-import-assertions": {
       "type": "npm",
-      "name": "npm:resolve",
+      "name": "npm:@babel/plugin-syntax-import-assertions",
       "data": {
-        "version": "1.22.8",
-        "packageName": "resolve",
-        "hash": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-syntax-import-assertions",
+        "hash": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg=="
       }
     },
-    "npm:make-dir@2.1.0": {
+    "npm:globby@11.1.0": {
       "type": "npm",
-      "name": "npm:make-dir@2.1.0",
+      "name": "npm:globby@11.1.0",
       "data": {
-        "version": "2.1.0",
-        "packageName": "make-dir",
-        "hash": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA=="
+        "version": "11.1.0",
+        "packageName": "globby",
+        "hash": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="
       }
     },
-    "npm:fast-glob@3.2.7": {
+    "npm:@types/yargs-parser": {
       "type": "npm",
-      "name": "npm:fast-glob@3.2.7",
+      "name": "npm:@types/yargs-parser",
       "data": {
-        "version": "3.2.7",
-        "packageName": "fast-glob",
-        "hash": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q=="
+        "version": "21.0.3",
+        "packageName": "@types/yargs-parser",
+        "hash": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="
       }
     },
-    "npm:@esbuild/android-arm": {
+    "npm:destroy@1.0.4": {
       "type": "npm",
-      "name": "npm:@esbuild/android-arm",
+      "name": "npm:destroy@1.0.4",
       "data": {
-        "version": "0.19.5",
-        "packageName": "@esbuild/android-arm",
-        "hash": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA=="
+        "version": "1.0.4",
+        "packageName": "destroy",
+        "hash": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
       }
     },
-    "npm:body-parser": {
+    "npm:d3-path": {
       "type": "npm",
-      "name": "npm:body-parser",
+      "name": "npm:d3-path",
       "data": {
-        "version": "1.20.2",
-        "packageName": "body-parser",
-        "hash": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA=="
+        "version": "3.1.0",
+        "packageName": "d3-path",
+        "hash": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="
       }
     },
-    "npm:@angular/platform-browser-dynamic": {
+    "npm:path-is-absolute": {
       "type": "npm",
-      "name": "npm:@angular/platform-browser-dynamic",
+      "name": "npm:path-is-absolute",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/platform-browser-dynamic",
-        "hash": "sha512-Ab6ZeGG63z9Ilv8r4lHcmSirVaw8quRrPjDbT8cgIteHbj0SbwgDzxX0ve+fjjubFUluNSNtc6OYglWMHJ/g7Q=="
+        "version": "1.0.1",
+        "packageName": "path-is-absolute",
+        "hash": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
       }
     },
-    "npm:string_decoder": {
+    "npm:to-regex-range": {
       "type": "npm",
-      "name": "npm:string_decoder",
+      "name": "npm:to-regex-range",
       "data": {
-        "version": "1.3.0",
-        "packageName": "string_decoder",
-        "hash": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="
+        "version": "5.0.1",
+        "packageName": "to-regex-range",
+        "hash": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
       }
     },
-    "npm:@babel/plugin-transform-runtime": {
+    "npm:@types/cookie": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-runtime",
+      "name": "npm:@types/cookie",
       "data": {
-        "version": "7.23.2",
-        "packageName": "@babel/plugin-transform-runtime",
-        "hash": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA=="
+        "version": "0.4.1",
+        "packageName": "@types/cookie",
+        "hash": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
       }
     },
-    "npm:glob@10.3.10": {
+    "npm:mdast-util-to-string": {
       "type": "npm",
-      "name": "npm:glob@10.3.10",
+      "name": "npm:mdast-util-to-string",
       "data": {
-        "version": "10.3.10",
-        "packageName": "glob",
-        "hash": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="
+        "version": "3.2.0",
+        "packageName": "mdast-util-to-string",
+        "hash": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg=="
       }
     },
-    "npm:ajv-keywords": {
+    "npm:color-convert": {
       "type": "npm",
-      "name": "npm:ajv-keywords",
+      "name": "npm:color-convert",
       "data": {
-        "version": "5.1.0",
-        "packageName": "ajv-keywords",
-        "hash": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="
+        "version": "1.9.3",
+        "packageName": "color-convert",
+        "hash": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
       }
     },
-    "npm:http-proxy": {
+    "npm:@nx/nx-darwin-arm64@17.1.2": {
       "type": "npm",
-      "name": "npm:http-proxy",
+      "name": "npm:@nx/nx-darwin-arm64@17.1.2",
       "data": {
-        "version": "1.18.1",
-        "packageName": "http-proxy",
-        "hash": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-darwin-arm64",
+        "hash": "sha512-U8fwkuw0vmDfeRQX9LSMt1XiAXM57fxOiuHlrIBn8hUBvMAugAgSAYd7K9YQjrFf9UFUtQeSHDU9N/c/n63hdg=="
       }
     },
-    "npm:@babel/regjsgen": {
+    "npm:@types/qs": {
       "type": "npm",
-      "name": "npm:@babel/regjsgen",
+      "name": "npm:@types/qs",
       "data": {
-        "version": "0.8.0",
-        "packageName": "@babel/regjsgen",
-        "hash": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
+        "version": "6.9.9",
+        "packageName": "@types/qs",
+        "hash": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg=="
       }
     },
-    "npm:is-arrayish": {
+    "npm:kind-of": {
       "type": "npm",
-      "name": "npm:is-arrayish",
+      "name": "npm:kind-of",
       "data": {
-        "version": "0.2.1",
-        "packageName": "is-arrayish",
-        "hash": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+        "version": "6.0.3",
+        "packageName": "kind-of",
+        "hash": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
       }
     },
-    "npm:globby@12.2.0": {
+    "npm:wbuf": {
       "type": "npm",
-      "name": "npm:globby@12.2.0",
+      "name": "npm:wbuf",
       "data": {
-        "version": "12.2.0",
-        "packageName": "globby",
-        "hash": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA=="
+        "version": "1.7.3",
+        "packageName": "wbuf",
+        "hash": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA=="
       }
     },
-    "npm:@material/notched-outline": {
+    "npm:jest-docblock": {
       "type": "npm",
-      "name": "npm:@material/notched-outline",
+      "name": "npm:jest-docblock",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/notched-outline",
-        "hash": "sha512-zmRZHJ+5cOWsBatRyK50wuht78olXySyKOJIIEmy8lxSMZefI1764u0mr8tS1KYF8vSAl5cUlwCC3/2Njz1FPg=="
+        "version": "29.7.0",
+        "packageName": "jest-docblock",
+        "hash": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g=="
       }
     },
-    "npm:selfsigned": {
+    "npm:@babel/plugin-syntax-numeric-separator": {
       "type": "npm",
-      "name": "npm:selfsigned",
+      "name": "npm:@babel/plugin-syntax-numeric-separator",
       "data": {
-        "version": "2.1.1",
-        "packageName": "selfsigned",
-        "hash": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ=="
+        "version": "7.10.4",
+        "packageName": "@babel/plugin-syntax-numeric-separator",
+        "hash": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug=="
       }
     },
-    "npm:binary-extensions": {
+    "npm:has-symbols": {
       "type": "npm",
-      "name": "npm:binary-extensions",
+      "name": "npm:has-symbols",
       "data": {
-        "version": "2.2.0",
-        "packageName": "binary-extensions",
-        "hash": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+        "version": "1.0.3",
+        "packageName": "has-symbols",
+        "hash": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
       }
     },
-    "npm:@types/babel__core": {
+    "npm:@babel/helper-create-regexp-features-plugin": {
       "type": "npm",
-      "name": "npm:@types/babel__core",
+      "name": "npm:@babel/helper-create-regexp-features-plugin",
       "data": {
-        "version": "7.20.4",
-        "packageName": "@types/babel__core",
-        "hash": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg=="
+        "version": "7.22.15",
+        "packageName": "@babel/helper-create-regexp-features-plugin",
+        "hash": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w=="
       }
     },
-    "npm:bytes@3.0.0": {
+    "npm:delaunator": {
       "type": "npm",
-      "name": "npm:bytes@3.0.0",
+      "name": "npm:delaunator",
       "data": {
-        "version": "3.0.0",
-        "packageName": "bytes",
-        "hash": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="
+        "version": "5.0.0",
+        "packageName": "delaunator",
+        "hash": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw=="
       }
     },
-    "npm:@esbuild/openbsd-x64@0.18.20": {
+    "npm:@types/bonjour": {
       "type": "npm",
-      "name": "npm:@esbuild/openbsd-x64@0.18.20",
+      "name": "npm:@types/bonjour",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/openbsd-x64",
-        "hash": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="
+        "version": "3.5.12",
+        "packageName": "@types/bonjour",
+        "hash": "sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg=="
       }
     },
     "npm:accepts": {
@@ -12182,94 +12299,112 @@
         "hash": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="
       }
     },
-    "npm:css-what": {
+    "npm:@babel/code-frame": {
       "type": "npm",
-      "name": "npm:css-what",
+      "name": "npm:@babel/code-frame",
       "data": {
-        "version": "6.1.0",
-        "packageName": "css-what",
-        "hash": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
+        "version": "7.22.13",
+        "packageName": "@babel/code-frame",
+        "hash": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w=="
       }
     },
-    "npm:braces": {
+    "npm:commander": {
       "type": "npm",
-      "name": "npm:braces",
+      "name": "npm:commander",
       "data": {
-        "version": "3.0.2",
-        "packageName": "braces",
-        "hash": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
+        "version": "2.20.3",
+        "packageName": "commander",
+        "hash": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
       }
     },
-    "npm:chrome-trace-event": {
+    "npm:deepmerge": {
       "type": "npm",
-      "name": "npm:chrome-trace-event",
+      "name": "npm:deepmerge",
       "data": {
-        "version": "1.0.3",
-        "packageName": "chrome-trace-event",
-        "hash": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
+        "version": "4.3.1",
+        "packageName": "deepmerge",
+        "hash": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="
       }
     },
-    "npm:diff-sequences": {
+    "npm:ee-first": {
       "type": "npm",
-      "name": "npm:diff-sequences",
+      "name": "npm:ee-first",
       "data": {
-        "version": "29.6.3",
-        "packageName": "diff-sequences",
-        "hash": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q=="
+        "version": "1.1.1",
+        "packageName": "ee-first",
+        "hash": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
       }
     },
-    "npm:wrap-ansi@8.1.0": {
+    "npm:piscina": {
       "type": "npm",
-      "name": "npm:wrap-ansi@8.1.0",
+      "name": "npm:piscina",
       "data": {
-        "version": "8.1.0",
-        "packageName": "wrap-ansi",
-        "hash": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="
+        "version": "4.1.0",
+        "packageName": "piscina",
+        "hash": "sha512-sjbLMi3sokkie+qmtZpkfMCUJTpbxJm/wvaPzU28vmYSsTSW8xk9JcFUsbqGJdtPpIQ9tuj+iDcTtgZjwnOSig=="
       }
     },
-    "npm:@material/rtl": {
+    "npm:postcss-normalize-repeat-style": {
       "type": "npm",
-      "name": "npm:@material/rtl",
+      "name": "npm:postcss-normalize-repeat-style",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/rtl",
-        "hash": "sha512-pgJFw8ZRpWGpwv7ZuBTJ+WdNmFBKoLVoMbbxKQWTHXVwhAqn3aoIq95o62T5QeEG/+sguNShdquG45CpAMmSRw=="
+        "version": "6.0.0",
+        "packageName": "postcss-normalize-repeat-style",
+        "hash": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A=="
       }
     },
-    "npm:iconv-lite@0.6.3": {
+    "npm:common-path-prefix": {
       "type": "npm",
-      "name": "npm:iconv-lite@0.6.3",
+      "name": "npm:common-path-prefix",
       "data": {
-        "version": "0.6.3",
-        "packageName": "iconv-lite",
-        "hash": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="
+        "version": "3.0.0",
+        "packageName": "common-path-prefix",
+        "hash": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w=="
       }
     },
-    "npm:@babel/plugin-syntax-optional-catch-binding": {
+    "npm:minimatch@5.1.6": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-optional-catch-binding",
+      "name": "npm:minimatch@5.1.6",
       "data": {
-        "version": "7.8.3",
-        "packageName": "@babel/plugin-syntax-optional-catch-binding",
-        "hash": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q=="
+        "version": "5.1.6",
+        "packageName": "minimatch",
+        "hash": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="
       }
     },
-    "npm:json-schema-traverse": {
+    "npm:@sigstore/sign": {
       "type": "npm",
-      "name": "npm:json-schema-traverse",
+      "name": "npm:@sigstore/sign",
       "data": {
-        "version": "1.0.0",
-        "packageName": "json-schema-traverse",
-        "hash": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+        "version": "2.2.0",
+        "packageName": "@sigstore/sign",
+        "hash": "sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA=="
       }
     },
-    "npm:@angular/compiler-cli": {
+    "npm:@babel/helper-create-class-features-plugin": {
       "type": "npm",
-      "name": "npm:@angular/compiler-cli",
+      "name": "npm:@babel/helper-create-class-features-plugin",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/compiler-cli",
-        "hash": "sha512-oj7KJBFgs6ulT1/A/xkkDHBOB0c7o9HV2Mn5pUosXBo2VgcGYeuJeXffC+mFr5FyiRO1sUanw4vSWnLzK1U0pQ=="
+        "version": "7.22.15",
+        "packageName": "@babel/helper-create-class-features-plugin",
+        "hash": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg=="
+      }
+    },
+    "npm:jiti": {
+      "type": "npm",
+      "name": "npm:jiti",
+      "data": {
+        "version": "1.20.0",
+        "packageName": "jiti",
+        "hash": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA=="
+      }
+    },
+    "npm:micromark-util-encode": {
+      "type": "npm",
+      "name": "npm:micromark-util-encode",
+      "data": {
+        "version": "1.1.0",
+        "packageName": "micromark-util-encode",
+        "hash": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw=="
       }
     },
     "npm:domhandler": {
@@ -12281,283 +12416,319 @@
         "hash": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="
       }
     },
-    "npm:html-entities": {
+    "npm:jest-each": {
+      "type": "npm",
+      "name": "npm:jest-each",
+      "data": {
+        "version": "29.7.0",
+        "packageName": "jest-each",
+        "hash": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ=="
+      }
+    },
+    "npm:cose-base@2.2.0": {
+      "type": "npm",
+      "name": "npm:cose-base@2.2.0",
+      "data": {
+        "version": "2.2.0",
+        "packageName": "cose-base",
+        "hash": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="
+      }
+    },
+    "npm:@material/density": {
+      "type": "npm",
+      "name": "npm:@material/density",
+      "data": {
+        "version": "15.0.0-canary.a246a4439.0",
+        "packageName": "@material/density",
+        "hash": "sha512-h8BJVCWkPR97WeWCN6/atVbSOP8J4+ZbbssidcwsnX7b3+3IaWdtBxGii25dsILX8pUVwwqxVis24y211b+8rg=="
+      }
+    },
+    "npm:get-caller-file": {
       "type": "npm",
-      "name": "npm:html-entities",
+      "name": "npm:get-caller-file",
       "data": {
-        "version": "2.4.0",
-        "packageName": "html-entities",
-        "hash": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ=="
+        "version": "2.0.5",
+        "packageName": "get-caller-file",
+        "hash": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
       }
     },
-    "npm:mkdirp@1.0.4": {
+    "npm:commondir": {
       "type": "npm",
-      "name": "npm:mkdirp@1.0.4",
+      "name": "npm:commondir",
       "data": {
-        "version": "1.0.4",
-        "packageName": "mkdirp",
-        "hash": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+        "version": "1.0.1",
+        "packageName": "commondir",
+        "hash": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
       }
     },
-    "npm:opn": {
+    "npm:tapable": {
       "type": "npm",
-      "name": "npm:opn",
+      "name": "npm:tapable",
       "data": {
-        "version": "5.3.0",
-        "packageName": "opn",
-        "hash": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g=="
+        "version": "2.2.1",
+        "packageName": "tapable",
+        "hash": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
       }
     },
-    "npm:@angular/localize": {
+    "npm:uri-js": {
       "type": "npm",
-      "name": "npm:@angular/localize",
+      "name": "npm:uri-js",
       "data": {
-        "version": "17.0.3",
-        "packageName": "@angular/localize",
-        "hash": "sha512-AxMqZwClWNiYjoaHYu2Y499yM30DJDCgrV9k8mOb92SU3IUaQ52loPb91Cb2Xp4h0b6A3TVAmnYApcLYaUf40g=="
+        "version": "4.4.1",
+        "packageName": "uri-js",
+        "hash": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="
       }
     },
-    "npm:@babel/plugin-syntax-logical-assignment-operators": {
+    "npm:browser-sync": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-logical-assignment-operators",
+      "name": "npm:browser-sync",
       "data": {
-        "version": "7.10.4",
-        "packageName": "@babel/plugin-syntax-logical-assignment-operators",
-        "hash": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig=="
+        "version": "2.29.3",
+        "packageName": "browser-sync",
+        "hash": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg=="
       }
     },
-    "npm:@esbuild/win32-arm64@0.18.20": {
+    "npm:makeerror": {
       "type": "npm",
-      "name": "npm:@esbuild/win32-arm64@0.18.20",
+      "name": "npm:makeerror",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/win32-arm64",
-        "hash": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="
+        "version": "1.0.12",
+        "packageName": "makeerror",
+        "hash": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg=="
       }
     },
-    "npm:@material/fab": {
+    "npm:wildcard": {
       "type": "npm",
-      "name": "npm:@material/fab",
+      "name": "npm:wildcard",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/fab",
-        "hash": "sha512-XUex3FNqxPD1i/4jITucB/RWTNkkdv52mbNmwrvbuThZlhuhyH9GzOQYTDop/b2783TPcv++xr8UUbuh8GWYzA=="
+        "version": "2.0.1",
+        "packageName": "wildcard",
+        "hash": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
       }
     },
-    "npm:@nx/nx-darwin-arm64@17.1.2": {
+    "npm:ua-parser-js": {
       "type": "npm",
-      "name": "npm:@nx/nx-darwin-arm64@17.1.2",
+      "name": "npm:ua-parser-js",
       "data": {
-        "version": "17.1.2",
-        "packageName": "@nx/nx-darwin-arm64",
-        "hash": "sha512-U8fwkuw0vmDfeRQX9LSMt1XiAXM57fxOiuHlrIBn8hUBvMAugAgSAYd7K9YQjrFf9UFUtQeSHDU9N/c/n63hdg=="
+        "version": "0.7.36",
+        "packageName": "ua-parser-js",
+        "hash": "sha512-CPPLoCts2p7D8VbybttE3P2ylv0OBZEAy7a12DsulIEcAiMtWJy+PBgMXgWDI80D5UwqE8oQPHYnk13tm38M2Q=="
       }
     },
-    "npm:p-try": {
+    "npm:@webassemblyjs/helper-buffer": {
       "type": "npm",
-      "name": "npm:p-try",
+      "name": "npm:@webassemblyjs/helper-buffer",
       "data": {
-        "version": "2.2.0",
-        "packageName": "p-try",
-        "hash": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/helper-buffer",
+        "hash": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA=="
       }
     },
-    "npm:@babel/helper-module-transforms": {
+    "npm:postcss-discard-empty": {
       "type": "npm",
-      "name": "npm:@babel/helper-module-transforms",
+      "name": "npm:postcss-discard-empty",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/helper-module-transforms",
-        "hash": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ=="
+        "version": "6.0.0",
+        "packageName": "postcss-discard-empty",
+        "hash": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ=="
       }
     },
-    "npm:istanbul-reports": {
+    "npm:openurl": {
       "type": "npm",
-      "name": "npm:istanbul-reports",
+      "name": "npm:openurl",
       "data": {
-        "version": "3.1.6",
-        "packageName": "istanbul-reports",
-        "hash": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg=="
+        "version": "1.1.1",
+        "packageName": "openurl",
+        "hash": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA=="
       }
     },
-    "npm:babel-plugin-transform-typescript-metadata": {
+    "npm:@babel/helper-replace-supers": {
       "type": "npm",
-      "name": "npm:babel-plugin-transform-typescript-metadata",
+      "name": "npm:@babel/helper-replace-supers",
       "data": {
-        "version": "0.3.2",
-        "packageName": "babel-plugin-transform-typescript-metadata",
-        "hash": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg=="
+        "version": "7.22.20",
+        "packageName": "@babel/helper-replace-supers",
+        "hash": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw=="
       }
     },
-    "npm:d3-force": {
+    "npm:@babel/plugin-transform-member-expression-literals": {
       "type": "npm",
-      "name": "npm:d3-force",
+      "name": "npm:@babel/plugin-transform-member-expression-literals",
       "data": {
-        "version": "3.0.0",
-        "packageName": "d3-force",
-        "hash": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-member-expression-literals",
+        "hash": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew=="
       }
     },
-    "npm:readable-stream": {
+    "npm:@babel/helper-member-expression-to-functions": {
       "type": "npm",
-      "name": "npm:readable-stream",
+      "name": "npm:@babel/helper-member-expression-to-functions",
       "data": {
-        "version": "3.6.2",
-        "packageName": "readable-stream",
-        "hash": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="
+        "version": "7.23.0",
+        "packageName": "@babel/helper-member-expression-to-functions",
+        "hash": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA=="
       }
     },
-    "npm:@npmcli/run-script": {
+    "npm:micromark-util-symbol": {
       "type": "npm",
-      "name": "npm:@npmcli/run-script",
+      "name": "npm:micromark-util-symbol",
       "data": {
-        "version": "7.0.2",
-        "packageName": "@npmcli/run-script",
-        "hash": "sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w=="
+        "version": "1.1.0",
+        "packageName": "micromark-util-symbol",
+        "hash": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag=="
       }
     },
-    "npm:ajv-keywords@3.5.2": {
+    "npm:tmpl": {
       "type": "npm",
-      "name": "npm:ajv-keywords@3.5.2",
+      "name": "npm:tmpl",
       "data": {
-        "version": "3.5.2",
-        "packageName": "ajv-keywords",
-        "hash": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+        "version": "1.0.5",
+        "packageName": "tmpl",
+        "hash": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
       }
     },
-    "npm:@babel/helper-validator-option": {
+    "npm:@tufjs/models": {
       "type": "npm",
-      "name": "npm:@babel/helper-validator-option",
+      "name": "npm:@tufjs/models",
       "data": {
-        "version": "7.22.15",
-        "packageName": "@babel/helper-validator-option",
-        "hash": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA=="
+        "version": "2.0.0",
+        "packageName": "@tufjs/models",
+        "hash": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg=="
       }
     },
-    "npm:cookie@0.5.0": {
+    "npm:brace-expansion@2.0.1": {
       "type": "npm",
-      "name": "npm:cookie@0.5.0",
+      "name": "npm:brace-expansion@2.0.1",
       "data": {
-        "version": "0.5.0",
-        "packageName": "cookie",
-        "hash": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
+        "version": "2.0.1",
+        "packageName": "brace-expansion",
+        "hash": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
       }
     },
-    "npm:heap": {
+    "npm:postcss-merge-rules": {
       "type": "npm",
-      "name": "npm:heap",
+      "name": "npm:postcss-merge-rules",
       "data": {
-        "version": "0.2.7",
-        "packageName": "heap",
-        "hash": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
+        "version": "6.0.1",
+        "packageName": "postcss-merge-rules",
+        "hash": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw=="
       }
     },
-    "npm:regenerate": {
+    "npm:void-elements": {
       "type": "npm",
-      "name": "npm:regenerate",
+      "name": "npm:void-elements",
       "data": {
-        "version": "1.4.2",
-        "packageName": "regenerate",
-        "hash": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
+        "version": "2.0.1",
+        "packageName": "void-elements",
+        "hash": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung=="
       }
     },
-    "npm:@babel/plugin-syntax-typescript": {
+    "npm:body-parser": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-typescript",
+      "name": "npm:body-parser",
       "data": {
-        "version": "7.23.3",
-        "packageName": "@babel/plugin-syntax-typescript",
-        "hash": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ=="
+        "version": "1.20.2",
+        "packageName": "body-parser",
+        "hash": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA=="
       }
     },
-    "npm:@npmcli/agent": {
+    "npm:cytoscape-fcose": {
       "type": "npm",
-      "name": "npm:@npmcli/agent",
+      "name": "npm:cytoscape-fcose",
       "data": {
         "version": "2.2.0",
-        "packageName": "@npmcli/agent",
-        "hash": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q=="
+        "packageName": "cytoscape-fcose",
+        "hash": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="
       }
     },
-    "npm:custom-event": {
+    "npm:@angular/animations": {
       "type": "npm",
-      "name": "npm:custom-event",
+      "name": "npm:@angular/animations",
       "data": {
-        "version": "1.0.1",
-        "packageName": "custom-event",
-        "hash": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg=="
+        "version": "17.0.3",
+        "packageName": "@angular/animations",
+        "hash": "sha512-aBLVJ0HHYdIZCAXymQDP6UGuz/5oM/3uLCFVHx32vhibLByjw0jNCvy2lzmPLU5gUU6wEWX2b3ZtnzFqhmo4+A=="
       }
     },
-    "npm:node-int64": {
+    "npm:d3-array": {
       "type": "npm",
-      "name": "npm:node-int64",
+      "name": "npm:d3-array",
       "data": {
-        "version": "0.4.0",
-        "packageName": "node-int64",
-        "hash": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
+        "version": "3.2.4",
+        "packageName": "d3-array",
+        "hash": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="
       }
     },
-    "npm:pify@2.3.0": {
+    "npm:@angular-devkit/core@16.2.7": {
       "type": "npm",
-      "name": "npm:pify@2.3.0",
+      "name": "npm:@angular-devkit/core@16.2.7",
       "data": {
-        "version": "2.3.0",
-        "packageName": "pify",
-        "hash": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
+        "version": "16.2.7",
+        "packageName": "@angular-devkit/core",
+        "hash": "sha512-XskObYrg7NRdEuHnSVZOM7OeinEL8HzugjmKnawAa+dAbFCCoGsVWjMliA/Q8sb1yfGkyL0WW7DZABZj7EGwWA=="
+      }
+    },
+    "npm:@babel/plugin-syntax-export-namespace-from": {
+      "type": "npm",
+      "name": "npm:@babel/plugin-syntax-export-namespace-from",
+      "data": {
+        "version": "7.8.3",
+        "packageName": "@babel/plugin-syntax-export-namespace-from",
+        "hash": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q=="
       }
     },
-    "npm:through": {
+    "npm:minimatch@9.0.3": {
       "type": "npm",
-      "name": "npm:through",
+      "name": "npm:minimatch@9.0.3",
       "data": {
-        "version": "2.3.8",
-        "packageName": "through",
-        "hash": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+        "version": "9.0.3",
+        "packageName": "minimatch",
+        "hash": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="
       }
     },
-    "npm:ini": {
+    "npm:micromark-util-html-tag-name": {
       "type": "npm",
-      "name": "npm:ini",
+      "name": "npm:micromark-util-html-tag-name",
       "data": {
-        "version": "4.1.1",
-        "packageName": "ini",
-        "hash": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="
+        "version": "1.2.0",
+        "packageName": "micromark-util-html-tag-name",
+        "hash": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q=="
       }
     },
-    "npm:babel-preset-current-node-syntax": {
+    "npm:wcwidth": {
       "type": "npm",
-      "name": "npm:babel-preset-current-node-syntax",
+      "name": "npm:wcwidth",
       "data": {
         "version": "1.0.1",
-        "packageName": "babel-preset-current-node-syntax",
-        "hash": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ=="
+        "packageName": "wcwidth",
+        "hash": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="
       }
     },
-    "npm:@material/checkbox": {
+    "npm:@eslint-community/eslint-utils": {
       "type": "npm",
-      "name": "npm:@material/checkbox",
+      "name": "npm:@eslint-community/eslint-utils",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/checkbox",
-        "hash": "sha512-sQwHzm1TSxHUoPrqplWTk/BhyzdDhzcwlbucwJK9W0o9WXMDk+d9PvcCxpP/9sAnVqZk42BfE89Y0T1DHglZ9A=="
+        "version": "4.4.0",
+        "packageName": "@eslint-community/eslint-utils",
+        "hash": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA=="
       }
     },
-    "npm:@babel/plugin-syntax-top-level-await": {
+    "npm:@jest/environment": {
       "type": "npm",
-      "name": "npm:@babel/plugin-syntax-top-level-await",
+      "name": "npm:@jest/environment",
       "data": {
-        "version": "7.14.5",
-        "packageName": "@babel/plugin-syntax-top-level-await",
-        "hash": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw=="
+        "version": "29.7.0",
+        "packageName": "@jest/environment",
+        "hash": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw=="
       }
     },
-    "npm:browser-sync-ui": {
+    "npm:@nodelib/fs.walk": {
       "type": "npm",
-      "name": "npm:browser-sync-ui",
+      "name": "npm:@nodelib/fs.walk",
       "data": {
-        "version": "2.29.3",
-        "packageName": "browser-sync-ui",
-        "hash": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg=="
+        "version": "1.2.8",
+        "packageName": "@nodelib/fs.walk",
+        "hash": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="
       }
     },
     "npm:filelist": {
@@ -12569,256 +12740,238 @@
         "hash": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q=="
       }
     },
-    "npm:ngx-markdown": {
+    "npm:lodash.uniq": {
       "type": "npm",
-      "name": "npm:ngx-markdown",
+      "name": "npm:lodash.uniq",
       "data": {
-        "version": "17.1.1",
-        "packageName": "ngx-markdown",
-        "hash": "sha512-BGNWGJ6tmfPx+ScZFq5qeGLgWJwsakjScZ2e+oUzm+97DAHpIHSl8gptNZvZgRhOiFdjLcKBcuY2Rz8WB6J6UQ=="
+        "version": "4.5.0",
+        "packageName": "lodash.uniq",
+        "hash": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
       }
     },
-    "npm:@angular-devkit/schematics": {
+    "npm:function-bind": {
       "type": "npm",
-      "name": "npm:@angular-devkit/schematics",
+      "name": "npm:function-bind",
       "data": {
-        "version": "17.0.1",
-        "packageName": "@angular-devkit/schematics",
-        "hash": "sha512-bwgdGviRZC5X8Tl4QcjtIJAcC0p8yIhOyYVFrq4PWYvI+DfV9P6w3OFuoS6rwEoiIQR90+12iKBYMt1MfL/c0Q=="
+        "version": "1.1.2",
+        "packageName": "function-bind",
+        "hash": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
       }
     },
-    "npm:@babel/plugin-transform-for-of": {
+    "npm:@babel/helper-compilation-targets": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-for-of",
+      "name": "npm:@babel/helper-compilation-targets",
       "data": {
         "version": "7.22.15",
-        "packageName": "@babel/plugin-transform-for-of",
-        "hash": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA=="
-      }
-    },
-    "npm:base64id": {
-      "type": "npm",
-      "name": "npm:base64id",
-      "data": {
-        "version": "2.0.0",
-        "packageName": "base64id",
-        "hash": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
-      }
-    },
-    "npm:@tufjs/canonical-json": {
-      "type": "npm",
-      "name": "npm:@tufjs/canonical-json",
-      "data": {
-        "version": "2.0.0",
-        "packageName": "@tufjs/canonical-json",
-        "hash": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA=="
+        "packageName": "@babel/helper-compilation-targets",
+        "hash": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw=="
       }
     },
-    "npm:has-symbols": {
+    "npm:postcss-minify-params": {
       "type": "npm",
-      "name": "npm:has-symbols",
+      "name": "npm:postcss-minify-params",
       "data": {
-        "version": "1.0.3",
-        "packageName": "has-symbols",
-        "hash": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+        "version": "6.0.0",
+        "packageName": "postcss-minify-params",
+        "hash": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ=="
       }
     },
-    "npm:cssnano-utils": {
+    "npm:@babel/helper-module-transforms": {
       "type": "npm",
-      "name": "npm:cssnano-utils",
+      "name": "npm:@babel/helper-module-transforms",
       "data": {
-        "version": "4.0.0",
-        "packageName": "cssnano-utils",
-        "hash": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw=="
+        "version": "7.23.3",
+        "packageName": "@babel/helper-module-transforms",
+        "hash": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ=="
       }
     },
-    "npm:pako": {
+    "npm:regex-parser": {
       "type": "npm",
-      "name": "npm:pako",
+      "name": "npm:regex-parser",
       "data": {
-        "version": "1.0.11",
-        "packageName": "pako",
-        "hash": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+        "version": "2.2.11",
+        "packageName": "regex-parser",
+        "hash": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q=="
       }
     },
-    "npm:p-locate": {
+    "npm:server-destroy": {
       "type": "npm",
-      "name": "npm:p-locate",
+      "name": "npm:server-destroy",
       "data": {
-        "version": "4.1.0",
-        "packageName": "p-locate",
-        "hash": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="
+        "version": "1.0.1",
+        "packageName": "server-destroy",
+        "hash": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ=="
       }
     },
-    "npm:@babel/plugin-transform-computed-properties": {
+    "npm:@babel/types": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-computed-properties",
+      "name": "npm:@babel/types",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-computed-properties",
-        "hash": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg=="
+        "version": "7.23.0",
+        "packageName": "@babel/types",
+        "hash": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg=="
       }
     },
-    "npm:http-deceiver": {
+    "npm:typed-assert": {
       "type": "npm",
-      "name": "npm:http-deceiver",
+      "name": "npm:typed-assert",
       "data": {
-        "version": "1.2.7",
-        "packageName": "http-deceiver",
-        "hash": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="
+        "version": "1.0.9",
+        "packageName": "typed-assert",
+        "hash": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg=="
       }
     },
-    "npm:spdx-license-ids": {
+    "npm:normalize-path": {
       "type": "npm",
-      "name": "npm:spdx-license-ids",
+      "name": "npm:normalize-path",
       "data": {
-        "version": "3.0.16",
-        "packageName": "spdx-license-ids",
-        "hash": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw=="
+        "version": "3.0.0",
+        "packageName": "normalize-path",
+        "hash": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
       }
     },
-    "npm:convert-source-map": {
+    "npm:hpack.js": {
       "type": "npm",
-      "name": "npm:convert-source-map",
+      "name": "npm:hpack.js",
       "data": {
-        "version": "1.9.0",
-        "packageName": "convert-source-map",
-        "hash": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+        "version": "2.1.6",
+        "packageName": "hpack.js",
+        "hash": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ=="
       }
     },
-    "npm:css-minimizer-webpack-plugin": {
+    "npm:magic-string@0.30.1": {
       "type": "npm",
-      "name": "npm:css-minimizer-webpack-plugin",
+      "name": "npm:magic-string@0.30.1",
       "data": {
-        "version": "5.0.1",
-        "packageName": "css-minimizer-webpack-plugin",
-        "hash": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg=="
+        "version": "0.30.1",
+        "packageName": "magic-string",
+        "hash": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA=="
       }
     },
-    "npm:jest-pnp-resolver": {
+    "npm:yocto-queue@0.1.0": {
       "type": "npm",
-      "name": "npm:jest-pnp-resolver",
+      "name": "npm:yocto-queue@0.1.0",
       "data": {
-        "version": "1.2.3",
-        "packageName": "jest-pnp-resolver",
-        "hash": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w=="
+        "version": "0.1.0",
+        "packageName": "yocto-queue",
+        "hash": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
       }
     },
-    "npm:@esbuild/darwin-arm64@0.18.20": {
+    "npm:image-size": {
       "type": "npm",
-      "name": "npm:@esbuild/darwin-arm64@0.18.20",
+      "name": "npm:image-size",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/darwin-arm64",
-        "hash": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="
+        "version": "0.5.5",
+        "packageName": "image-size",
+        "hash": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ=="
       }
     },
-    "npm:@sigstore/bundle": {
+    "npm:@types/mime": {
       "type": "npm",
-      "name": "npm:@sigstore/bundle",
+      "name": "npm:@types/mime",
       "data": {
-        "version": "2.1.0",
-        "packageName": "@sigstore/bundle",
-        "hash": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng=="
+        "version": "1.3.4",
+        "packageName": "@types/mime",
+        "hash": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw=="
       }
     },
-    "npm:ordered-uuid": {
+    "npm:inquirer": {
       "type": "npm",
-      "name": "npm:ordered-uuid",
+      "name": "npm:inquirer",
       "data": {
-        "version": "1.1.0",
-        "packageName": "ordered-uuid",
-        "hash": "sha512-pcbQ+w/1DIOFYsZRsjkNgxWRvLecCjpbVadcP9SQ/9oHSQr7VXS9+t5/FiPkqFvQGn3a4Hj0YL7R8q7cIgGXBA=="
+        "version": "9.2.11",
+        "packageName": "inquirer",
+        "hash": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g=="
       }
     },
-    "npm:tslib": {
+    "npm:@nx/nx-darwin-x64@17.1.2": {
       "type": "npm",
-      "name": "npm:tslib",
+      "name": "npm:@nx/nx-darwin-x64@17.1.2",
       "data": {
-        "version": "2.6.2",
-        "packageName": "tslib",
-        "hash": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+        "version": "17.1.2",
+        "packageName": "@nx/nx-darwin-x64",
+        "hash": "sha512-QR9Jrm32UK2nLdDRtjFabfCvF5SOQJ2IuYkw6Sxe16xGZU2DS9nQku0TQO3Uy2HV1xSR7vzj7ys5z4eI2k+/mA=="
       }
     },
-    "npm:webpack-dev-middleware": {
+    "npm:make-fetch-happen": {
       "type": "npm",
-      "name": "npm:webpack-dev-middleware",
+      "name": "npm:make-fetch-happen",
       "data": {
-        "version": "6.1.1",
-        "packageName": "webpack-dev-middleware",
-        "hash": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ=="
+        "version": "13.0.0",
+        "packageName": "make-fetch-happen",
+        "hash": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="
       }
     },
-    "npm:yargs": {
+    "npm:minipass": {
       "type": "npm",
-      "name": "npm:yargs",
+      "name": "npm:minipass",
       "data": {
-        "version": "17.7.2",
-        "packageName": "yargs",
-        "hash": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="
+        "version": "7.0.4",
+        "packageName": "minipass",
+        "hash": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ=="
       }
     },
-    "npm:opener": {
+    "npm:rfdc": {
       "type": "npm",
-      "name": "npm:opener",
+      "name": "npm:rfdc",
       "data": {
-        "version": "1.5.2",
-        "packageName": "opener",
-        "hash": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="
+        "version": "1.3.0",
+        "packageName": "rfdc",
+        "hash": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
       }
     },
-    "npm:nth-check": {
+    "npm:postcss-loader@6.2.1": {
       "type": "npm",
-      "name": "npm:nth-check",
+      "name": "npm:postcss-loader@6.2.1",
       "data": {
-        "version": "2.1.1",
-        "packageName": "nth-check",
-        "hash": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="
+        "version": "6.2.1",
+        "packageName": "postcss-loader",
+        "hash": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q=="
       }
     },
-    "npm:parse-json": {
+    "npm:require-from-string": {
       "type": "npm",
-      "name": "npm:parse-json",
+      "name": "npm:require-from-string",
       "data": {
-        "version": "5.2.0",
-        "packageName": "parse-json",
-        "hash": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="
+        "version": "2.0.2",
+        "packageName": "require-from-string",
+        "hash": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
       }
     },
-    "npm:type-check": {
+    "npm:ts-node": {
       "type": "npm",
-      "name": "npm:type-check",
+      "name": "npm:ts-node",
       "data": {
-        "version": "0.4.0",
-        "packageName": "type-check",
-        "hash": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="
+        "version": "10.9.1",
+        "packageName": "ts-node",
+        "hash": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw=="
       }
     },
-    "npm:@material/layout-grid": {
+    "npm:d3-transition": {
       "type": "npm",
-      "name": "npm:@material/layout-grid",
+      "name": "npm:d3-transition",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/layout-grid",
-        "hash": "sha512-bkfxZuVzgtjEJgR3n8pvDQbe88ffULDJ5d2DF34IR8SOiRmQcj7UzqAt95XwIUcWlfisLCoIryP4U8XSpFb1EQ=="
+        "version": "3.0.1",
+        "packageName": "d3-transition",
+        "hash": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="
       }
     },
-    "npm:node-abort-controller": {
+    "npm:env-paths": {
       "type": "npm",
-      "name": "npm:node-abort-controller",
+      "name": "npm:env-paths",
       "data": {
-        "version": "3.1.1",
-        "packageName": "node-abort-controller",
-        "hash": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ=="
+        "version": "2.2.1",
+        "packageName": "env-paths",
+        "hash": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
       }
     },
-    "npm:defaults": {
+    "npm:ansi-colors": {
       "type": "npm",
-      "name": "npm:defaults",
+      "name": "npm:ansi-colors",
       "data": {
-        "version": "1.0.4",
-        "packageName": "defaults",
-        "hash": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="
+        "version": "4.1.3",
+        "packageName": "ansi-colors",
+        "hash": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="
       }
     },
     "npm:postcss-import": {
@@ -12830,270 +12983,269 @@
         "hash": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw=="
       }
     },
-    "npm:raw-body@2.5.1": {
+    "npm:node-abort-controller": {
       "type": "npm",
-      "name": "npm:raw-body@2.5.1",
+      "name": "npm:node-abort-controller",
       "data": {
-        "version": "2.5.1",
-        "packageName": "raw-body",
-        "hash": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig=="
+        "version": "3.1.1",
+        "packageName": "node-abort-controller",
+        "hash": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ=="
       }
     },
-    "npm:@babel/plugin-transform-new-target": {
+    "npm:prosemirror-transform": {
       "type": "npm",
-      "name": "npm:@babel/plugin-transform-new-target",
+      "name": "npm:prosemirror-transform",
       "data": {
-        "version": "7.22.5",
-        "packageName": "@babel/plugin-transform-new-target",
-        "hash": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw=="
+        "version": "1.8.0",
+        "packageName": "prosemirror-transform",
+        "hash": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A=="
       }
     },
-    "npm:safe-buffer": {
+    "npm:braces": {
       "type": "npm",
-      "name": "npm:safe-buffer",
+      "name": "npm:braces",
       "data": {
-        "version": "5.2.1",
-        "packageName": "safe-buffer",
-        "hash": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+        "version": "3.0.2",
+        "packageName": "braces",
+        "hash": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
       }
     },
-    "npm:minipass-json-stream": {
+    "npm:css-tree@2.2.1": {
       "type": "npm",
-      "name": "npm:minipass-json-stream",
+      "name": "npm:css-tree@2.2.1",
       "data": {
-        "version": "1.0.1",
-        "packageName": "minipass-json-stream",
-        "hash": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg=="
+        "version": "2.2.1",
+        "packageName": "css-tree",
+        "hash": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="
       }
     },
-    "npm:p-limit": {
+    "npm:log4js": {
       "type": "npm",
-      "name": "npm:p-limit",
+      "name": "npm:log4js",
       "data": {
-        "version": "2.3.0",
-        "packageName": "p-limit",
-        "hash": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
+        "version": "6.9.1",
+        "packageName": "log4js",
+        "hash": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g=="
       }
     },
-    "npm:micromark-util-encode": {
+    "npm:fs-minipass": {
       "type": "npm",
-      "name": "npm:micromark-util-encode",
+      "name": "npm:fs-minipass",
       "data": {
-        "version": "1.1.0",
-        "packageName": "micromark-util-encode",
-        "hash": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw=="
+        "version": "3.0.3",
+        "packageName": "fs-minipass",
+        "hash": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="
       }
     },
-    "npm:has-flag": {
+    "npm:@types/babel__core": {
       "type": "npm",
-      "name": "npm:has-flag",
+      "name": "npm:@types/babel__core",
       "data": {
-        "version": "3.0.0",
-        "packageName": "has-flag",
-        "hash": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+        "version": "7.20.4",
+        "packageName": "@types/babel__core",
+        "hash": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg=="
       }
     },
-    "npm:@material/tokens": {
+    "npm:@typescript-eslint/scope-manager": {
       "type": "npm",
-      "name": "npm:@material/tokens",
+      "name": "npm:@typescript-eslint/scope-manager",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/tokens",
-        "hash": "sha512-+5iGfQ51YSb0Qau8uC6/jHXCSC3enKaQKDf/iPHfuXAe04UznW3tmm1/Ju227aZXNISTJcnQYa2rpm1M14MeUg=="
+        "version": "6.11.0",
+        "packageName": "@typescript-eslint/scope-manager",
+        "hash": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A=="
       }
     },
-    "npm:npm-pick-manifest": {
+    "npm:@npmcli/fs": {
       "type": "npm",
-      "name": "npm:npm-pick-manifest",
+      "name": "npm:@npmcli/fs",
       "data": {
-        "version": "9.0.0",
-        "packageName": "npm-pick-manifest",
-        "hash": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg=="
+        "version": "3.1.0",
+        "packageName": "@npmcli/fs",
+        "hash": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w=="
       }
     },
-    "npm:toidentifier": {
+    "npm:is-docker": {
       "type": "npm",
-      "name": "npm:toidentifier",
+      "name": "npm:is-docker",
       "data": {
-        "version": "1.0.1",
-        "packageName": "toidentifier",
-        "hash": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
+        "version": "2.2.1",
+        "packageName": "is-docker",
+        "hash": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
       }
     },
-    "npm:@babel/helper-replace-supers": {
+    "npm:mdast-util-from-markdown": {
       "type": "npm",
-      "name": "npm:@babel/helper-replace-supers",
+      "name": "npm:mdast-util-from-markdown",
       "data": {
-        "version": "7.22.20",
-        "packageName": "@babel/helper-replace-supers",
-        "hash": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw=="
+        "version": "1.3.1",
+        "packageName": "mdast-util-from-markdown",
+        "hash": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww=="
       }
     },
-    "npm:debug@3.2.7": {
+    "npm:globals": {
       "type": "npm",
-      "name": "npm:debug@3.2.7",
+      "name": "npm:globals",
       "data": {
-        "version": "3.2.7",
-        "packageName": "debug",
-        "hash": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="
+        "version": "11.12.0",
+        "packageName": "globals",
+        "hash": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
       }
     },
-    "npm:@esbuild/win32-ia32@0.18.20": {
+    "npm:proxy-from-env": {
       "type": "npm",
-      "name": "npm:@esbuild/win32-ia32@0.18.20",
+      "name": "npm:proxy-from-env",
       "data": {
-        "version": "0.18.20",
-        "packageName": "@esbuild/win32-ia32",
-        "hash": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="
+        "version": "1.1.0",
+        "packageName": "proxy-from-env",
+        "hash": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
       }
     },
-    "npm:@material/menu-surface": {
+    "npm:@webassemblyjs/leb128": {
       "type": "npm",
-      "name": "npm:@material/menu-surface",
+      "name": "npm:@webassemblyjs/leb128",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/menu-surface",
-        "hash": "sha512-4h4wZ0Rs7qBg1Otldw8ljp+LCULNL42pqbqcTXhKAkJM7pHcSw4k7IfoThSRLU3+V8T3/+qiAXyeQix2OGHzwg=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/leb128",
+        "hash": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ=="
       }
     },
-    "npm:compression": {
+    "npm:ms": {
       "type": "npm",
-      "name": "npm:compression",
+      "name": "npm:ms",
       "data": {
-        "version": "1.7.4",
-        "packageName": "compression",
-        "hash": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ=="
+        "version": "2.1.2",
+        "packageName": "ms",
+        "hash": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
       }
     },
-    "npm:minimalistic-assert": {
+    "npm:rollup": {
       "type": "npm",
-      "name": "npm:minimalistic-assert",
+      "name": "npm:rollup",
       "data": {
-        "version": "1.0.1",
-        "packageName": "minimalistic-assert",
-        "hash": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+        "version": "3.29.4",
+        "packageName": "rollup",
+        "hash": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw=="
       }
     },
-    "npm:@material/line-ripple": {
+    "npm:is-interactive": {
       "type": "npm",
-      "name": "npm:@material/line-ripple",
+      "name": "npm:is-interactive",
       "data": {
-        "version": "15.0.0-canary.a246a4439.0",
-        "packageName": "@material/line-ripple",
-        "hash": "sha512-20WmwRrejmtOdI37+959UqEVIjbMtAXlkDOkfCIA3OUhp+oZSjVkCqKxI16jxxVlnzJ353fy8xeSKzOHe4sExQ=="
+        "version": "1.0.0",
+        "packageName": "is-interactive",
+        "hash": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
       }
     },
-    "npm:forwarded": {
+    "npm:bytes": {
       "type": "npm",
-      "name": "npm:forwarded",
+      "name": "npm:bytes",
       "data": {
-        "version": "0.2.0",
-        "packageName": "forwarded",
-        "hash": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
+        "version": "3.1.2",
+        "packageName": "bytes",
+        "hash": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
       }
     },
-    "npm:pify": {
+    "npm:d3-zoom": {
       "type": "npm",
-      "name": "npm:pify",
+      "name": "npm:d3-zoom",
       "data": {
-        "version": "4.0.1",
-        "packageName": "pify",
-        "hash": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
+        "version": "3.0.0",
+        "packageName": "d3-zoom",
+        "hash": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="
       }
     },
-    "npm:babel-plugin-polyfill-corejs3": {
+    "npm:@webassemblyjs/helper-wasm-section": {
       "type": "npm",
-      "name": "npm:babel-plugin-polyfill-corejs3",
+      "name": "npm:@webassemblyjs/helper-wasm-section",
       "data": {
-        "version": "0.8.6",
-        "packageName": "babel-plugin-polyfill-corejs3",
-        "hash": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ=="
+        "version": "1.11.6",
+        "packageName": "@webassemblyjs/helper-wasm-section",
+        "hash": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g=="
       }
     },
-    "npm:dns-equal": {
+    "npm:p-limit@3.1.0": {
       "type": "npm",
-      "name": "npm:dns-equal",
+      "name": "npm:p-limit@3.1.0",
       "data": {
-        "version": "1.0.0",
-        "packageName": "dns-equal",
-        "hash": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg=="
+        "version": "3.1.0",
+        "packageName": "p-limit",
+        "hash": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
       }
     },
-    "npm:is-path-inside": {
+    "npm:@babel/plugin-transform-object-super": {
       "type": "npm",
-      "name": "npm:is-path-inside",
+      "name": "npm:@babel/plugin-transform-object-super",
       "data": {
-        "version": "3.0.3",
-        "packageName": "is-path-inside",
-        "hash": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
+        "version": "7.22.5",
+        "packageName": "@babel/plugin-transform-object-super",
+        "hash": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw=="
       }
     },
-    "npm:limiter": {
+    "npm:is-what": {
       "type": "npm",
-      "name": "npm:limiter",
+      "name": "npm:is-what",
       "data": {
-        "version": "1.1.5",
-        "packageName": "limiter",
-        "hash": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
+        "version": "3.14.1",
+        "packageName": "is-what",
+        "hash": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
       }
     },
-    "npm:@nx/nx-linux-x64-musl": {
+    "npm:parse-json": {
       "type": "npm",
-      "name": "npm:@nx/nx-linux-x64-musl",
+      "name": "npm:parse-json",
       "data": {
-        "version": "17.0.2",
-        "packageName": "@nx/nx-linux-x64-musl",
-        "hash": "sha512-2wsqyBRjsxmAjxW+0lnGFtJLTk+AxgW7gjMv8NgLK8P1bc/sJYQB+g0o5op2z+szXRG3Noi0RZ9C0fG39EPFZw=="
+        "version": "5.2.0",
+        "packageName": "parse-json",
+        "hash": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="
       }
     },
-    "npm:postcss-discard-empty": {
+    "npm:tslib": {
       "type": "npm",
-      "name": "npm:postcss-discard-empty",
+      "name": "npm:tslib",
       "data": {
-        "version": "6.0.0",
-        "packageName": "postcss-discard-empty",
-        "hash": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ=="
+        "version": "2.6.2",
+        "packageName": "tslib",
+        "hash": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
       }
     },
-    "npm:test-exclude": {
+    "npm:whatwg-encoding": {
       "type": "npm",
-      "name": "npm:test-exclude",
+      "name": "npm:whatwg-encoding",
       "data": {
-        "version": "6.0.0",
-        "packageName": "test-exclude",
-        "hash": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w=="
+        "version": "2.0.0",
+        "packageName": "whatwg-encoding",
+        "hash": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg=="
       }
     },
-    "npm:minipass-pipeline": {
+    "npm:is-lambda": {
       "type": "npm",
-      "name": "npm:minipass-pipeline",
+      "name": "npm:is-lambda",
       "data": {
-        "version": "1.2.4",
-        "packageName": "minipass-pipeline",
-        "hash": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A=="
+        "version": "1.0.1",
+        "packageName": "is-lambda",
+        "hash": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
       }
     },
-    "npm:@eslint-community/eslint-utils": {
+    "npm:qjobs": {
       "type": "npm",
-      "name": "npm:@eslint-community/eslint-utils",
+      "name": "npm:qjobs",
       "data": {
-        "version": "4.4.0",
-        "packageName": "@eslint-community/eslint-utils",
-        "hash": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA=="
+        "version": "1.2.0",
+        "packageName": "qjobs",
+        "hash": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg=="
       }
     },
-    "npm:agent-base": {
+    "npm:commander@8.3.0": {
       "type": "npm",
-      "name": "npm:agent-base",
+      "name": "npm:commander@8.3.0",
       "data": {
-        "version": "7.1.0",
-        "packageName": "agent-base",
-        "hash": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg=="
+        "version": "8.3.0",
+        "packageName": "commander",
+        "hash": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
       }
     }
   },
   "dependencies": {
-    "DnDTools2": [],
     "DnDTools": [
       {
         "source": "DnDTools",
@@ -13170,6 +13322,11 @@
         "target": "npm:marked",
         "type": "static"
       },
+      {
+        "source": "DnDTools",
+        "target": "npm:ngx-editor",
+        "type": "static"
+      },
       {
         "source": "DnDTools",
         "target": "npm:ngx-markdown",
@@ -13281,6 +13438,7 @@
         "type": "static"
       }
     ],
+    "Hans": [],
     "npm:@ampproject/remapping": [
       {
         "source": "npm:@ampproject/remapping",
@@ -16759,6 +16917,25 @@
         "type": "static"
       }
     ],
+    "npm:@floating-ui/core": [
+      {
+        "source": "npm:@floating-ui/core",
+        "target": "npm:@floating-ui/utils",
+        "type": "static"
+      }
+    ],
+    "npm:@floating-ui/dom": [
+      {
+        "source": "npm:@floating-ui/dom",
+        "target": "npm:@floating-ui/core",
+        "type": "static"
+      },
+      {
+        "source": "npm:@floating-ui/dom",
+        "target": "npm:@floating-ui/utils",
+        "type": "static"
+      }
+    ],
     "npm:@humanwhocodes/config-array": [
       {
         "source": "npm:@humanwhocodes/config-array",
@@ -29060,6 +29237,93 @@
         "type": "static"
       }
     ],
+    "npm:ngx-editor": [
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:@angular/common",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:@angular/core",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:@angular/forms",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:@angular/platform-browser",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:rxjs",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:@floating-ui/core",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:@floating-ui/dom",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:@types/trusted-types",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-commands",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-history",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-inputrules",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-keymap",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-model",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-schema-list",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-state",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:prosemirror-view",
+        "type": "static"
+      },
+      {
+        "source": "npm:ngx-editor",
+        "target": "npm:tslib",
+        "type": "static"
+      }
+    ],
     "npm:ngx-markdown": [
       {
         "source": "npm:ngx-markdown",
@@ -30521,6 +30785,134 @@
         "type": "static"
       }
     ],
+    "npm:prosemirror-commands": [
+      {
+        "source": "npm:prosemirror-commands",
+        "target": "npm:prosemirror-model",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-commands",
+        "target": "npm:prosemirror-state",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-commands",
+        "target": "npm:prosemirror-transform",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-history": [
+      {
+        "source": "npm:prosemirror-history",
+        "target": "npm:prosemirror-state",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-history",
+        "target": "npm:prosemirror-transform",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-history",
+        "target": "npm:prosemirror-view",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-history",
+        "target": "npm:rope-sequence",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-inputrules": [
+      {
+        "source": "npm:prosemirror-inputrules",
+        "target": "npm:prosemirror-state",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-inputrules",
+        "target": "npm:prosemirror-transform",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-keymap": [
+      {
+        "source": "npm:prosemirror-keymap",
+        "target": "npm:prosemirror-state",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-keymap",
+        "target": "npm:w3c-keyname",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-model": [
+      {
+        "source": "npm:prosemirror-model",
+        "target": "npm:orderedmap",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-schema-list": [
+      {
+        "source": "npm:prosemirror-schema-list",
+        "target": "npm:prosemirror-model",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-schema-list",
+        "target": "npm:prosemirror-state",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-schema-list",
+        "target": "npm:prosemirror-transform",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-state": [
+      {
+        "source": "npm:prosemirror-state",
+        "target": "npm:prosemirror-model",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-state",
+        "target": "npm:prosemirror-transform",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-state",
+        "target": "npm:prosemirror-view",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-transform": [
+      {
+        "source": "npm:prosemirror-transform",
+        "target": "npm:prosemirror-model",
+        "type": "static"
+      }
+    ],
+    "npm:prosemirror-view": [
+      {
+        "source": "npm:prosemirror-view",
+        "target": "npm:prosemirror-model",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-view",
+        "target": "npm:prosemirror-state",
+        "type": "static"
+      },
+      {
+        "source": "npm:prosemirror-view",
+        "target": "npm:prosemirror-transform",
+        "type": "static"
+      }
+    ],
     "npm:proxy-addr": [
       {
         "source": "npm:proxy-addr",

+ 158 - 4
package-lock.json

@@ -1,12 +1,12 @@
 {
-  "name": "dn-dtools",
-  "version": "0.0.0",
+  "name": "dndtools",
+  "version": "0.4.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "dn-dtools",
-      "version": "0.0.0",
+      "name": "dndtools",
+      "version": "0.4.0",
       "dependencies": {
         "@angular/animations": "^17.0.3",
         "@angular/cdk": "^17.0.0",
@@ -23,6 +23,7 @@
         "bootstrap": "^5.2.3",
         "localbase": "^0.7.5",
         "marked": "^9.0.0",
+        "ngx-editor": "^16.0.1",
         "ngx-markdown": "^17.1.1",
         "rxjs": "~7.8.0",
         "tslib": "^2.3.0",
@@ -3009,6 +3010,28 @@
         "node": ">=14"
       }
     },
+    "node_modules/@floating-ui/core": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz",
+      "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==",
+      "dependencies": {
+        "@floating-ui/utils": "^0.1.1"
+      }
+    },
+    "node_modules/@floating-ui/dom": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz",
+      "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==",
+      "dependencies": {
+        "@floating-ui/core": "^1.4.1",
+        "@floating-ui/utils": "^0.1.1"
+      }
+    },
+    "node_modules/@floating-ui/utils": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+      "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+    },
     "node_modules/@humanwhocodes/config-array": {
       "version": "0.11.13",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
@@ -8042,6 +8065,11 @@
       "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
       "dev": true
     },
+    "node_modules/@types/trusted-types": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+      "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
+    },
     "node_modules/@types/unist": {
       "version": "2.0.10",
       "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
@@ -18400,6 +18428,32 @@
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
+    "node_modules/ngx-editor": {
+      "version": "16.0.1",
+      "resolved": "https://registry.npmjs.org/ngx-editor/-/ngx-editor-16.0.1.tgz",
+      "integrity": "sha512-O6PTwDb/zc363cTtrNl9GKh8nvV40yN2rVSFO3rP1xPY8Iuy9EfDQ3NYFBO+j2YPeKcbya8mHHk9KdVjJ+TraQ==",
+      "dependencies": {
+        "@floating-ui/core": "1.4.1",
+        "@floating-ui/dom": "1.5.1",
+        "@types/trusted-types": "~2.0.3",
+        "prosemirror-commands": "1.5.2",
+        "prosemirror-history": "1.3.2",
+        "prosemirror-inputrules": "1.2.1",
+        "prosemirror-keymap": "1.2.2",
+        "prosemirror-model": "1.19.3",
+        "prosemirror-schema-list": "1.3.0",
+        "prosemirror-state": "1.4.3",
+        "prosemirror-view": "1.31.7",
+        "tslib": "^2.3.0"
+      },
+      "peerDependencies": {
+        "@angular/common": ">=16.0.0",
+        "@angular/core": ">=16.0.0",
+        "@angular/forms": ">=16.0.0",
+        "@angular/platform-browser": ">=16.0.0",
+        "rxjs": ">=7.8.0"
+      }
+    },
     "node_modules/ngx-markdown": {
       "version": "17.1.1",
       "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-17.1.1.tgz",
@@ -19293,6 +19347,11 @@
         "uuid": "bin/uuid"
       }
     },
+    "node_modules/orderedmap": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",
+      "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="
+    },
     "node_modules/os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -20425,6 +20484,91 @@
         "node": ">=10"
       }
     },
+    "node_modules/prosemirror-commands": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz",
+      "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==",
+      "dependencies": {
+        "prosemirror-model": "^1.0.0",
+        "prosemirror-state": "^1.0.0",
+        "prosemirror-transform": "^1.0.0"
+      }
+    },
+    "node_modules/prosemirror-history": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.2.tgz",
+      "integrity": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==",
+      "dependencies": {
+        "prosemirror-state": "^1.2.2",
+        "prosemirror-transform": "^1.0.0",
+        "prosemirror-view": "^1.31.0",
+        "rope-sequence": "^1.3.0"
+      }
+    },
+    "node_modules/prosemirror-inputrules": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.2.1.tgz",
+      "integrity": "sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ==",
+      "dependencies": {
+        "prosemirror-state": "^1.0.0",
+        "prosemirror-transform": "^1.0.0"
+      }
+    },
+    "node_modules/prosemirror-keymap": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz",
+      "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==",
+      "dependencies": {
+        "prosemirror-state": "^1.0.0",
+        "w3c-keyname": "^2.2.0"
+      }
+    },
+    "node_modules/prosemirror-model": {
+      "version": "1.19.3",
+      "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.3.tgz",
+      "integrity": "sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ==",
+      "dependencies": {
+        "orderedmap": "^2.0.0"
+      }
+    },
+    "node_modules/prosemirror-schema-list": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz",
+      "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==",
+      "dependencies": {
+        "prosemirror-model": "^1.0.0",
+        "prosemirror-state": "^1.0.0",
+        "prosemirror-transform": "^1.7.3"
+      }
+    },
+    "node_modules/prosemirror-state": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz",
+      "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==",
+      "dependencies": {
+        "prosemirror-model": "^1.0.0",
+        "prosemirror-transform": "^1.0.0",
+        "prosemirror-view": "^1.27.0"
+      }
+    },
+    "node_modules/prosemirror-transform": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz",
+      "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==",
+      "dependencies": {
+        "prosemirror-model": "^1.0.0"
+      }
+    },
+    "node_modules/prosemirror-view": {
+      "version": "1.31.7",
+      "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.31.7.tgz",
+      "integrity": "sha512-Pr7w93yOYmxQwzGIRSaNLZ/1uM6YjnenASzN2H6fO6kGekuzRbgZ/4bHbBTd1u4sIQmL33/TcGmzxxidyPwCjg==",
+      "dependencies": {
+        "prosemirror-model": "^1.16.0",
+        "prosemirror-state": "^1.0.0",
+        "prosemirror-transform": "^1.1.0"
+      }
+    },
     "node_modules/proxy-addr": {
       "version": "2.0.7",
       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -20983,6 +21127,11 @@
         "fsevents": "~2.3.2"
       }
     },
+    "node_modules/rope-sequence": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",
+      "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="
+    },
     "node_modules/run-async": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
@@ -23470,6 +23619,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/w3c-keyname": {
+      "version": "2.2.8",
+      "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
+      "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+    },
     "node_modules/walker": {
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",

+ 2 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "dndtools",
-  "version": "0.4.0",
+  "version": "0.5.0",
   "scripts": {
     "ng": "ng",
     "start": "nx serve",
@@ -26,6 +26,7 @@
     "bootstrap": "^5.2.3",
     "localbase": "^0.7.5",
     "marked": "^9.0.0",
+    "ngx-editor": "^16.0.1",
     "ngx-markdown": "^17.1.1",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",

+ 1 - 0
src/app/character/character-creator/character-creator.component.ts

@@ -33,6 +33,7 @@ export class CharacterCreatorComponent {
 
   // TODO: Implement the classes
   public classes: characterData[] = [
+    { view: 'Test', value: 'Test' },
     { view: 'Barbar', value: 'Barbarian' },
     { view: 'Barde', value: 'Bard' },
     { view: 'Druide', value: 'Druid' },

+ 8 - 3
src/app/character/character-picker/character-card/character-card.component.html

@@ -12,17 +12,22 @@
   <!-- The characterData is not loaded initially, so this is a workaround. Maybe add a resolver first -->
   @if(image){
   <img [src]="image" alt="portrait" />
-  } @else {
+  } @else if (characterData !== undefined) {
   <img
     [src]="'assets/images/' + characterData.gender.toLowerCase() + '.jpg'"
     alt="character"
   />
-  }
+  } @if(characterData !== undefined){
   <div class="content">
+    <!-- <div>{{ image }}</div> -->
     <div class="name">{{ character }}</div>
     <div class="level">Stufe {{ characterData.level }}</div>
     <div class="species">{{ races[characterData.race].display }}</div>
-    <div class="class">{{ classes[characterData.class].display }}</div>
+    <div class="class">
+      {{ classes[characterData.class].display }}
+    </div>
+
     <!-- <div class="subclass">{{ characterData.class }}</div> -->
   </div>
+  }
 </div>

+ 11 - 4
src/app/character/character-picker/character-card/character-card.component.ts

@@ -11,7 +11,7 @@ export class CharacterCardComponent {
   @Input() character: string = '';
   @Output() delete: EventEmitter<string> = new EventEmitter<string>();
   @Output() select: EventEmitter<string> = new EventEmitter<string>();
-  public characterData: any = {};
+  public characterData: any = undefined;
   public image: any;
   public races: any;
   public classes: any;
@@ -19,15 +19,22 @@ export class CharacterCardComponent {
   constructor(
     private dataAccessor: DataService,
     private translator: TranslatorService
-  ) {}
-
-  ngOnInit() {
+  ) {
     this.races = this.translator.races;
     this.classes = this.translator.classes;
+  }
+
+  ngOnInit() {
+    this.loadCharacterData();
+  }
+
+  public loadCharacterData(): void {
+    console.log(this.characterData);
     this.dataAccessor
       .getData(this.character, 'characterData')
       .then((characterData: any) => {
         this.characterData = characterData;
+        console.log(this.characterData);
       });
     this.dataAccessor.getData(this.character, 'image').then((image: any) => {
       this.image = image.value;

+ 17 - 2
src/app/character/character-picker/character-picker.component.ts

@@ -1,7 +1,14 @@
-import { Component, inject, TemplateRef } from '@angular/core';
+import {
+  Component,
+  inject,
+  QueryList,
+  TemplateRef,
+  ViewChildren,
+} from '@angular/core';
 import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
 import { DataService } from 'src/services/data/data.service';
 import { Router } from '@angular/router';
+import { CharacterCardComponent } from './character-card/character-card.component';
 
 @Component({
   selector: 'app-character-picker',
@@ -13,6 +20,9 @@ export class CharacterPickerComponent {
   public currentCharacter: string = '';
   private modalService = inject(NgbModal);
 
+  @ViewChildren(CharacterCardComponent)
+  characterCards!: QueryList<CharacterCardComponent>;
+
   public constructor(public dataService: DataService, private Router: Router) {
     this.dataService.dataLoaded = false;
     this.dataService.getCollection('characters').then((characters: any) => {
@@ -44,7 +54,12 @@ export class CharacterPickerComponent {
     this.dataService.deleteCollection('characters');
     setTimeout(() => {
       this.dataService.setCollection('characters', this.characters);
-    }, 1000);
+    }, 200);
+    setTimeout(() => {
+      this.characterCards.forEach((card) => {
+        card.loadCharacterData();
+      });
+    }, 500);
   }
 
   public selectCharacter(character: any) {

+ 7 - 1
src/app/journal/journal-character/class/class.component.scss

@@ -1,11 +1,17 @@
 .class-container {
     width: 800px;
-    height: calc(100% - 2rem);
+    height: calc(100vh - 10.5rem);
     overflow: auto;
     margin: auto;
     border: 1px solid black;
     padding: 2rem;
     border-radius: 10px;
+    background-color: var(--items-hover);
+    box-shadow: var(--shadow-large);
+    position: absolute;
+    top: 8.5rem;
+    left: 50%;
+    transform: translateX(-50%);
 }
 
 .title {

+ 59 - 61
src/app/journal/journal-character/general/general.component.html

@@ -42,101 +42,99 @@
       </div>
       <div class="looks-entry">
         <div class="looks-label">Alter</div>
-        <input
-          type="text"
-          class="looks-input"
-          [(ngModel)]="data.age"
-          (change)="updateData()"
-        />
+        <mat-form-field appearance="outline" class="looks-input">
+          <input matInput [(ngModel)]="data.age" (change)="updateData()" />
+        </mat-form-field>
       </div>
       <div class="looks-entry">
         <div class="looks-label">Größe</div>
-        <input
-          type="text"
-          class="looks-input"
-          [(ngModel)]="data.height"
-          (change)="updateData()"
-        />
+        <mat-form-field appearance="outline" class="looks-input">
+          <input matInput [(ngModel)]="data.height" (change)="updateData()" />
+        </mat-form-field>
       </div>
       <div class="looks-entry">
         <div class="looks-label">Gewicht</div>
-        <input
-          type="text"
-          class="looks-input"
-          [(ngModel)]="data.weight"
-          (change)="updateData()"
-        />
+        <mat-form-field appearance="outline" class="looks-input">
+          <input matInput [(ngModel)]="data.weight" (change)="updateData()" />
+        </mat-form-field>
       </div>
       <div class="looks-entry">
         <div class="looks-label">Haarfarbe</div>
-        <input
-          type="text"
-          class="looks-input"
-          [(ngModel)]="data.hair"
-          (change)="updateData()"
-        />
+        <mat-form-field appearance="outline" class="looks-input">
+          <input matInput [(ngModel)]="data.hair" (change)="updateData()" />
+        </mat-form-field>
       </div>
       <div class="looks-entry">
         <div class="looks-label">Augenfarbe</div>
-        <input
-          type="text"
-          class="looks-input"
-          [(ngModel)]="data.eyes"
-          (change)="updateData()"
-        />
+        <mat-form-field appearance="outline" class="looks-input">
+          <input matInput [(ngModel)]="data.eyes" (change)="updateData()" />
+        </mat-form-field>
       </div>
       <div class="looks-entry">
         <div class="looks-label">Hautfarbe</div>
-        <input
-          type="text"
-          class="looks-input"
-          [(ngModel)]="data.skin"
-          (change)="updateData()"
-        />
+
+        <mat-form-field appearance="outline" class="looks-input">
+          <input matInput [(ngModel)]="data.skin" (change)="updateData()" />
+        </mat-form-field>
       </div>
     </div>
     <!-- DESCRIPTION -->
     <div class="description">
-      <textarea
-        class="description-area"
-        [(ngModel)]="data.description"
-        (change)="updateData()"
-      ></textarea>
+      <mat-form-field appearance="outline" class="description-wrapper">
+        <textarea
+          class="description-input"
+          matInput
+          [(ngModel)]="data.description"
+          (change)="updateData()"
+        ></textarea>
+      </mat-form-field>
       <label class="description-label">Beschreibung</label>
     </div>
   </div>
   <!-- PERSONALITY -->
   <div class="personality">
     <div class="personality-box">
-      <textarea
-        class="personality-area"
-        [(ngModel)]="data.personalityTraits"
-        (change)="updateData()"
-      ></textarea>
+      <mat-form-field appearance="outline" class="personality-wrapper">
+        <textarea
+          matInput
+          class="personality-input"
+          [(ngModel)]="data.personalityTraits"
+          (change)="updateData()"
+        ></textarea>
+      </mat-form-field>
       <label class="personality-label">Persönlichkeitsmerkmale</label>
     </div>
     <div class="personality-box">
-      <textarea
-        class="personality-area"
-        [(ngModel)]="data.ideals"
-        (change)="updateData()"
-      ></textarea>
+      <mat-form-field appearance="outline" class="personality-wrapper">
+        <textarea
+          matInput
+          class="personality-input"
+          [(ngModel)]="data.ideals"
+          (change)="updateData()"
+        ></textarea>
+      </mat-form-field>
       <label class="personality-label">Ideale</label>
     </div>
     <div class="personality-box">
-      <textarea
-        class="personality-area"
-        [(ngModel)]="data.bonds"
-        (change)="updateData()"
-      ></textarea>
+      <mat-form-field appearance="outline" class="personality-wrapper">
+        <textarea
+          matInput
+          class="personality-input"
+          [(ngModel)]="data.bonds"
+          (change)="updateData()"
+        ></textarea>
+      </mat-form-field>
       <label class="personality-label">Bindungen</label>
     </div>
     <div class="personality-box">
-      <textarea
-        class="personality-area"
-        [(ngModel)]="data.flaws"
-        (change)="updateData()"
-      ></textarea>
+      <mat-form-field appearance="outline" class="personality-wrapper">
+        <textarea
+          matInput
+          class="personality-input"
+          [(ngModel)]="data.flaws"
+          (change)="updateData()"
+        ></textarea>
+      </mat-form-field>
       <label class="personality-label">Makel</label>
     </div>
   </div>

+ 46 - 15
src/app/journal/journal-character/general/general.component.scss

@@ -17,6 +17,7 @@
     border: 1px solid var(--border-color);
     border-radius: 10px;
     box-shadow: var(--shadow);
+    background-color: white;
     border-radius: 10px;
     overflow: hidden;
 
@@ -85,12 +86,12 @@
         display: flex;
         justify-content: space-between;
 
-        .looks-input {
-            border-radius: 4px;
-            border: 1px solid var(--border-color);
-            box-shadow: var(--shadow);
-            padding-left: 1rem;
-        }
+        // .looks-input {
+        //     border-radius: 4px;
+        //     border: 1px solid var(--border-color);
+        //     box-shadow: var(--shadow);
+        //     padding-left: 1rem;
+        // }
 
         .looks-field {
             width: 12.5rem;
@@ -102,6 +103,19 @@
             padding-left: 1rem;
         }
     }
+
+    .looks-input {
+        width: 12.5rem;
+        box-shadow: var(--shadow);
+        border-radius: 4px;
+        overflow: hidden;
+    }
+
+    ::ng-deep .mat-mdc-form-field-infix {
+        height: 32px !important;
+        min-height: 32px !important;
+        padding-top: 4px !important;
+    }
 }
 
 .description {
@@ -110,18 +124,22 @@
     align-items: center;
     gap: 1rem;
 
-    .description-area {
-        width: 20rem;
-        height: 90%;
-        border: 1px solid var(--border-color);
-        border-radius: 10px;
-        box-shadow: var(--shadow);
+    .description-label {
+        font-weight: 500;
+    }
+
+    .description-input {
         resize: none;
-        padding: 1rem;
+        height: 90%;
+        width: 20rem;
     }
 
-    .description-label {
-        font-weight: 500;
+    .description-wrapper {
+        height: 100%;
+        width: 20rem;
+        box-shadow: var(--shadow);
+        overflow: hidden;
+        border-radius: 4px;
     }
 }
 
@@ -144,6 +162,19 @@
             height: 15rem;
         }
 
+        .personality-wrapper {
+            width: 100%;
+            height: 90%;
+            box-shadow: var(--shadow);
+            overflow: hidden;
+            border-radius: 4px;
+        }
+
+        .personality-input {
+            resize: none;
+            height: 100%;
+        }
+
         .personality-area {
             width: 100%;
             height: 100%;

+ 12 - 1
src/app/journal/journal-character/journal-character.component.html

@@ -43,13 +43,24 @@
         </ng-template>
       </ng-container>
       <ng-container ngbNavItem="subclass">
+        @if(data.level >= 3 || data.class === "Cleric"){
         <button ngbNavLink>Unterklasse</button>
         <ng-template ngbNavContent>
           <subclass></subclass>
         </ng-template>
+        }@else{
+        <button class="disabled-button" disabled>
+          <img
+            style="display: inline"
+            src="assets/icons/UIIcons/lock.svg"
+            alt="locked"
+          />
+          Unterklasse
+        </button>
+        }
       </ng-container>
       <ng-container ngbNavItem="combined">
-        <button ngbNavLink>Kombinierte Ansicht</button>
+        <button ngbNavLink>Tabellen- ansicht</button>
         <ng-template ngbNavContent>
           <!-- <class></class> -->
           combined works!

+ 8 - 0
src/app/journal/journal-character/journal-character.component.scss

@@ -74,6 +74,14 @@
                 box-shadow: var(--shadow);
             }
         }
+
+        .disabled-button {
+            border: none;
+            font-size: 1.25rem;
+            font-weight: 600;
+            color: black;
+            cursor: not-allowed;
+        }
     }
 
     .outlet {

+ 7 - 1
src/app/journal/journal-character/species/species.component.scss

@@ -1,11 +1,17 @@
 .species-container {
     width: 800px;
-    height: calc(100% - 2rem);
+    height: calc(100vh - 10.5rem);
     overflow: auto;
     margin: auto;
     border: 1px solid black;
     padding: 2rem;
     border-radius: 10px;
+    background-color: var(--items-hover);
+    box-shadow: var(--shadow-large);
+    position: absolute;
+    top: 8.5rem;
+    left: 50%;
+    transform: translateX(-50%);
 }
 
 .title {

+ 7 - 1
src/app/journal/journal-character/subclass/subclass.component.scss

@@ -1,11 +1,17 @@
 .subclass-container {
     width: 800px;
-    height: calc(100% - 2rem);
+    height: calc(100vh - 10.5rem);
     overflow: auto;
     margin: auto;
     border: 1px solid black;
     padding: 2rem;
     border-radius: 10px;
+    background-color: var(--items-hover);
+    box-shadow: var(--shadow-large);
+    position: absolute;
+    top: 8.5rem;
+    left: 50%;
+    transform: translateX(-50%);
 }
 
 .title {

+ 1 - 1
src/app/journal/journal-home/details-panel/details-panel.component.scss

@@ -19,7 +19,7 @@
     top: 0;
     right: 0;
     bottom: 0;
-    width: 25vw;
+    width: 30rem;
     background-color: var(--background-color);
     z-index: 999;
     padding: 1.5rem;

+ 1 - 3
src/app/journal/journal-home/details-panel/details-panel.component.ts

@@ -27,7 +27,7 @@ export class DetailsPanelComponent {
   }
 
   public dismissPanel(): void {
-    this.details.closePanel('dismiss');
+    this.details.closePanel('cancel');
   }
 
   public closePanel(): void {
@@ -35,7 +35,5 @@ export class DetailsPanelComponent {
     this.offcanvas.nativeElement.classList.remove('panel--open');
     this.detailsPanelComponent = undefined;
     this.inputData = undefined;
-
-    // event mit dem ergebnis emitten
   }
 }

+ 19 - 14
src/app/journal/journal-home/navigation-panel/navigation-panel.component.html

@@ -6,17 +6,17 @@
       <div
         class="navigation-entry"
         [ngClass]="active === 1 ? 'active' : ''"
-        (click)="setActiveProperty(1)"
+        (click)="setActiveProperty(1); closeAll()"
         [routerLink]="'./stats'"
       >
-        Kampf
+        Übersicht
       </div>
     </li>
     <li>
       <div
         class="navigation-entry"
         [ngClass]="active === 2 ? 'active' : ''"
-        (click)="setActiveProperty(2)"
+        (click)="setActiveProperty(2); closeAll()"
         [routerLink]="'./character'"
       >
         Charakter
@@ -26,7 +26,7 @@
       <div
         class="navigation-entry"
         [class]="active === 3 ? 'active' : ''"
-        (click)="setActiveProperty(3)"
+        (click)="setActiveProperty(3); closeAll()"
         [routerLink]="'./inventory'"
       >
         Inventar
@@ -36,7 +36,7 @@
       <div
         class="navigation-entry"
         [class]="active === 4 ? 'active' : ''"
-        (click)="setActiveProperty(4)"
+        (click)="setActiveProperty(4); closeAll()"
         [routerLink]="'./spellcards'"
       >
         Zauber
@@ -46,7 +46,7 @@
       <div
         class="navigation-entry"
         [class]="active === 5 ? 'active' : ''"
-        (click)="setActiveProperty(5)"
+        (click)="setActiveProperty(5); closeAll()"
         [routerLink]="'./notes'"
       >
         Notizen
@@ -56,7 +56,7 @@
       <div
         class="navigation-entry"
         [class]="active === 6 ? 'active' : ''"
-        (click)="setActiveProperty(6)"
+        (click)="setActiveProperty(6); closeAll()"
         [routerLink]="'./spellbook'"
       >
         Zauberbuch
@@ -66,7 +66,7 @@
       <div
         class="navigation-entry"
         [class]="active === 7 ? 'active' : ''"
-        (click)="setActiveProperty(7)"
+        (click)="setActiveProperty(7); closeAll()"
         [routerLink]="'./quests'"
       >
         Aufträge
@@ -76,7 +76,7 @@
       <div
         class="navigation-entry"
         [class]="active === 8 ? 'active' : ''"
-        (click)="setActiveProperty(8)"
+        (click)="setActiveProperty(8); closeAll()"
         [routerLink]="'./npcs'"
       >
         NPCs
@@ -86,7 +86,7 @@
       <div
         class="navigation-entry"
         [class]="active === 9 ? 'active' : ''"
-        (click)="setActiveProperty(9)"
+        (click)="setActiveProperty(9); closeAll()"
         [routerLink]="'./places'"
       >
         Orte
@@ -96,7 +96,7 @@
       <div
         class="navigation-entry"
         [class]="active === 10 ? 'active' : ''"
-        (click)="setActiveProperty(10)"
+        (click)="setActiveProperty(10); closeAll()"
         [routerLink]="'./maps'"
       >
         Karten
@@ -107,7 +107,7 @@
       <div
         class="navigation-entry"
         [class]="active === 11 ? 'active' : ''"
-        (click)="setActiveProperty(11)"
+        (click)="setActiveProperty(11); closeAll()"
         [routerLink]="'./ruleset'"
       >
         Regelwerk
@@ -116,13 +116,18 @@
   </ul>
 
   <div class="settings-container">
-    <button class="settings-button" [routerLink]="'../'">
+    <button class="settings-button" (click)="closeAll()" [routerLink]="'../'">
       <icon [size]="'s'" [type]="'UI'" [icon]="'characters'"></icon>
       <div>Charaktere</div>
     </button>
 
     <button class="settings-button">
-      <icon [size]="'s'" [type]="'UI'" [icon]="'settings'"></icon>
+      <icon
+        [size]="'s'"
+        [type]="'UI'"
+        (click)="closeAll()"
+        [icon]="'settings'"
+      ></icon>
       <div>Einstellungen</div>
     </button>
   </div>

+ 2 - 2
src/app/journal/journal-home/navigation-panel/navigation-panel.component.scss

@@ -52,7 +52,7 @@ ul {
 
     &:hover,
     &.active {
-        background-color: var(--primary-color);
+        background-color: var(--primary);
         transform: scale(1.05);
         cursor: pointer;
     }
@@ -79,6 +79,6 @@ ul {
 }
 
 .settings-button:hover {
-    background-color: var(--primary-color);
+    background-color: var(--tab-active);
     transform: scale(1.05);
 }

+ 10 - 1
src/app/journal/journal-home/navigation-panel/navigation-panel.component.ts

@@ -1,6 +1,8 @@
 import { Component, ViewChild } from '@angular/core';
 import { Router } from '@angular/router';
 import { NavigationPanelService } from 'src/services/navigationPanel/navigation-panel.service';
+import { DetailsService } from 'src/services/details/details.service';
+import { ModalService } from 'src/services/modal/modal.service';
 
 @Component({
   selector: 'navigation-panel',
@@ -14,7 +16,9 @@ export class NavigationPanelComponent {
 
   constructor(
     private navigation: NavigationPanelService,
-    private router: Router
+    private router: Router,
+    private detailsAccessor: DetailsService,
+    private modalAccessor: ModalService
   ) {}
 
   public ngOnInit(): void {
@@ -38,6 +42,11 @@ export class NavigationPanelComponent {
     this.panel?.nativeElement.classList.remove('panel--open');
   }
 
+  public closeAll() {
+    this.detailsAccessor.closePanel('cancel');
+    this.modalAccessor.handleModalClosing('cancel');
+  }
+
   private checkForActiveTab(): void {
     const tab = this.router.url.split('/')[2];
     switch (tab) {

+ 0 - 41
src/app/journal/journal-inventory/food-details/food-details.component.html

@@ -1,41 +0,0 @@
-<div class="details-title">{{ item.name }}</div>
-
-<div class="details-flex-row top-2">
-  <div>
-    <div class="details-value">{{ item.isReady }}</div>
-    <div class="details-label">Verzehrfertig</div>
-  </div>
-
-  <div>
-    <div class="details-value">{{ item.weight }}</div>
-    <div class="details-label">Gewicht</div>
-  </div>
-
-  <div>
-    <div class="details-value">{{ item.quantity }}</div>
-    <div class="details-label">Anzahl</div>
-  </div>
-</div>
-
-<div class="details-content">{{ item.description }}</div>
-
-<div class="vertical-button-wrapper-3">
-  <ui-button
-    [type]="'edit'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('update')"
-  ></ui-button>
-  <ui-button
-    [type]="'delete'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('delete')"
-  ></ui-button>
-  <ui-button
-    [type]="'dismiss'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('dismiss')"
-  ></ui-button>
-</div>

+ 0 - 0
src/app/journal/journal-inventory/food-details/food-details.component.scss


+ 0 - 23
src/app/journal/journal-inventory/food-details/food-details.component.ts

@@ -1,23 +0,0 @@
-import { Component, Input } from '@angular/core';
-import { Food } from 'src/interfaces/food';
-import { DetailsService } from 'src/services/details/details.service';
-
-@Component({
-  selector: 'app-food-details',
-  templateUrl: './food-details.component.html',
-  styleUrl: './food-details.component.scss',
-})
-export class FoodDetailsComponent {
-  public constructor(public detailsAccessor: DetailsService) {}
-
-  @Input() item: Food = {
-    name: '',
-    weight: 0,
-    quantity: 0,
-    isReady: false,
-  };
-
-  public close(result: string): void {
-    this.detailsAccessor.closePanel(result);
-  }
-}

+ 20 - 11
src/app/journal/journal-inventory/journal-inventory.component.html

@@ -19,10 +19,10 @@
     </div>
 
     <div class="heading-row">
-      <div class="heading">Name</div>
-      <div class="heading">Wert</div>
-      <div class="heading">Gewicht</div>
-      <div class="heading">Anzahl</div>
+      <div class="table-heading">Name</div>
+      <div class="table-heading">Wert</div>
+      <div class="table-heading">Gewicht</div>
+      <div class="table-heading">Anzahl</div>
     </div>
 
     @switch(active) { @case(1){
@@ -32,7 +32,9 @@
     }}
 
     <div class="footer">
-      <button (click)="addItem('items')">Eintrag hinzufügen</button>
+      <ui-button [color]="'green'" [width]="'w22'" (click)="addItem('items')">
+        Eintrag hinzufügen
+      </ui-button>
     </div>
   </div>
   <div class="right-column">
@@ -56,12 +58,12 @@
         </button>
       </div>
       <div class="heading-row">
-        <div class="heading">Name</div>
-        <div class="heading">
+        <div class="table-heading">Name</div>
+        <div class="table-heading">
           {{ foodActive === 1 ? "Verzehrfertig" : "Wert" }}
         </div>
-        <div class="heading">Gewicht</div>
-        <div class="heading">Anzahl</div>
+        <div class="table-heading">Gewicht</div>
+        <div class="table-heading">Anzahl</div>
       </div>
       @switch(foodActive) { @case(1){
       <ng-container [ngTemplateOutlet]="foodTemplate"></ng-container>
@@ -70,7 +72,13 @@
       } }
 
       <div class="footer">
-        <button (click)="addItem('consumables')">Eintrag hinzufügen</button>
+        <ui-button
+          [color]="'green'"
+          [width]="'w22'"
+          (click)="addItem('consumables')"
+        >
+          Eintrag hinzufügen
+        </ui-button>
       </div>
     </div>
 
@@ -195,7 +203,8 @@
       (cdkDropListDropped)="drop($event, food, 'food')"
     >
       @for (item of food; let index = $index; track item) {
-      <div class="item" cdkDrag (click)="openFoodDetails(index)">
+      <!-- <div class="item" cdkDrag (click)="openFoodDetails(index)"> -->
+      <div class="item" cdkDrag (click)="openItemsDetails(food, index, 'food')">
         <div class="item-property">{{ item.name }}</div>
         <div class="item-property">@if(item.isReady){Ja} @else {Nein}</div>
         <div class="item-property">{{ item.weight }} lb.</div>

+ 3 - 3
src/app/journal/journal-inventory/journal-inventory.component.scss

@@ -66,7 +66,7 @@
     margin: 1rem 0rem;
   }
 
-  .heading {
+  .table-heading {
     font-size: 1.5rem;
     font-weight: 600;
     padding-left: 2rem;
@@ -124,7 +124,7 @@
     box-shadow: var(--shadow);
   }
 
-  .heading {
+  .table-heading {
     font-size: 1.375rem;
     font-weight: 600;
     padding-left: 1rem;
@@ -249,7 +249,7 @@
 
 .footer {
   button {
-    width: 22rem;
+    padding: 1rem 0;
   }
 }
 

+ 12 - 52
src/app/journal/journal-inventory/journal-inventory.component.ts

@@ -12,7 +12,6 @@ import { Food } from 'src/interfaces/food';
 import { SimpleItemDetailsComponent } from './simple-item-details/simple-item-details.component';
 import { ModalService } from 'src/services/modal/modal.service';
 import { SimpleItemModalComponent } from './simple-item-modal/simple-item-modal.component';
-import { FoodDetailsComponent } from './food-details/food-details.component';
 
 @Component({
   selector: 'app-journal-inventory',
@@ -78,8 +77,6 @@ export class JournalInventoryComponent {
       this.dataAccessor.consumables = list;
     } else if (listName === 'miscellaneous') {
       this.dataAccessor.miscellaneous = list;
-    } else {
-      throw new Error('Unknown list name: ' + listName);
     }
   }
 
@@ -94,31 +91,8 @@ export class JournalInventoryComponent {
           this.updateDatabase(listName);
         } else if (result.state === 'update') {
           this.openItemModal(true, listName, list, index);
-        } else if (result.state === 'dismiss') {
-          // Do nothing
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
-        }
-        resultSubscription.unsubscribe();
-      }
-    );
-  }
-
-  public openFoodDetails(index: number): void {
-    this.detailsAccessor.openPanel(FoodDetailsComponent, {
-      item: this.food[index],
-    });
-    const resultSubscription = this.detailsAccessor.result$.subscribe(
-      (result) => {
-        if (result.state === 'delete') {
-          this.food.splice(index, 1);
-          this.dataAccessor.food = this.food;
-        } else if (result.state === 'update') {
-          this.openFoodModal(true, index);
-        } else if (result.state === 'dismiss') {
+        } else if (result.state === 'cancel') {
           // Do nothing
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
         }
         resultSubscription.unsubscribe();
       }
@@ -142,10 +116,8 @@ export class JournalInventoryComponent {
         } else if (result.state === 'add') {
           this.food.push(result.data);
           this.updateFood();
-        } else if (result.state === 'dismiss') {
+        } else if (result.state === 'cancel') {
           // Do nothing
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
         }
         resultSubscription.unsubscribe();
       }
@@ -175,8 +147,6 @@ export class JournalInventoryComponent {
           this.updateDatabase(listname);
         } else if (result.state === 'cancel') {
           // Do nothing
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
         }
         resultSubscription.unsubscribe();
       }
@@ -185,26 +155,16 @@ export class JournalInventoryComponent {
 
   public addItem(table: string): void {
     if (table === 'items') {
-      switch (this.active) {
-        case 1:
-          this.openItemModal(false, 'weaponsAndArmor', this.weaponsAndArmor);
-          break;
-        case 2:
-          this.openItemModal(false, 'miscellaneous', this.miscellaneous);
-          break;
-        default:
-          throw new Error('Unknown active tab: ' + this.active);
+      if (this.active === 1) {
+        this.openItemModal(false, 'weaponsAndArmor', this.weaponsAndArmor);
+      } else {
+        this.openItemModal(false, 'miscellaneous', this.miscellaneous);
       }
     } else if (table === 'consumables') {
-      switch (this.foodActive) {
-        case 1:
-          this.openFoodModal(false);
-          break;
-        case 2:
-          this.openItemModal(false, 'consumables', this.consumables);
-          break;
-        default:
-          throw new Error('Unknown food active tab: ' + this.foodActive);
+      if (this.foodActive === 1) {
+        this.openFoodModal(false);
+      } else if (this.foodActive === 2) {
+        this.openItemModal(false, 'consumables', this.consumables);
       }
     }
   }
@@ -218,8 +178,8 @@ export class JournalInventoryComponent {
       this.dataAccessor.consumables = this.consumables;
     } else if (listname === 'miscellaneous') {
       this.dataAccessor.miscellaneous = this.miscellaneous;
-    } else {
-      throw new Error('DND-ERROR: Unknown list name: ' + listname);
+    } else if (listname === 'food') {
+      this.dataAccessor.food = this.food;
     }
     this.updateWeight();
   }

+ 27 - 36
src/app/journal/journal-inventory/simple-item-details/simple-item-details.component.html

@@ -1,41 +1,32 @@
-<div class="details-title">{{ item.name }}</div>
+<div class="title">{{ item.name }}</div>
 
-<div class="details-flex-row top-2">
-  <div>
-    <div class="details-value">{{ item.value }}</div>
-    <div class="details-label">Wert</div>
-  </div>
-
-  <div>
-    <div class="details-value">{{ item.weight }}</div>
-    <div class="details-label">Gewicht</div>
-  </div>
-
-  <div>
-    <div class="details-value">{{ item.quantity }}</div>
-    <div class="details-label">Anzahl</div>
-  </div>
+<div class="value-row t-2">
+  <value-box
+    [value]="isSimpleItem(item) ? item.value : item.isReady ? 'Ja' : 'Nein'"
+    [label]="isSimpleItem(item) ? 'Wert' : 'Verzehrbereit'"
+  ></value-box>
+  <value-box [value]="item.weight" [label]="'Gewicht'"></value-box>
+</div>
+<div class="value-row t-2">
+  <value-box [value]="item.quantity" [label]="'Anzahl'"></value-box>
+  <value-box
+    [value]="item.quantity * item.weight"
+    [label]="'Gesamtgewicht'"
+  ></value-box>
 </div>
 
-<div class="details-content">{{ item.description }}</div>
+<div class="input-label t-2">Beschreibung</div>
+<div
+  class="t-1"
+  style="padding-left: 0.25rem"
+  [innerHTML]="item.description"
+></div>
 
-<div class="vertical-button-wrapper-3">
-  <ui-button
-    [type]="'edit'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('update')"
-  ></ui-button>
-  <ui-button
-    [type]="'delete'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('delete')"
-  ></ui-button>
-  <ui-button
-    [type]="'dismiss'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('dismiss')"
-  ></ui-button>
+<div class="vertical-buttons bottom">
+  <ui-button [color]="'green'" [width]="'w22'" (click)="close('update')">
+    Bearbeiten
+  </ui-button>
+  <ui-button [color]="'red'" [width]="'w22'" (click)="close('delete')">
+    Löschen
+  </ui-button>
 </div>

+ 5 - 7
src/app/journal/journal-inventory/simple-item-details/simple-item-details.component.ts

@@ -1,4 +1,5 @@
 import { Component, Input } from '@angular/core';
+import { Food } from 'src/interfaces/food';
 import { SimpleItem } from 'src/interfaces/simple-item';
 import { DetailsService } from 'src/services/details/details.service';
 
@@ -9,15 +10,12 @@ import { DetailsService } from 'src/services/details/details.service';
 })
 export class SimpleItemDetailsComponent {
   public constructor(public detailsAccessor: DetailsService) {}
-  @Input() item: SimpleItem = {
-    name: '',
-    weight: 0,
-    value: 0,
-    quantity: 0,
-    description: '',
-  };
+  @Input() item!: any;
 
   public close(result: string): void {
     this.detailsAccessor.closePanel(result);
   }
+  isSimpleItem(item: any): item is SimpleItem {
+    return item && (item as SimpleItem).value !== undefined;
+  }
 }

+ 65 - 37
src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.html

@@ -1,45 +1,73 @@
-<div class="modal-dimensions">
-  <div class="details-title">
+<div class="dimensions">
+  <div class="title">
     @if(!isUpdate){Gegenstand erstellen}@else{Gegenstand bearbeiten}
   </div>
 
-  <input type="text" placeholder="Name" [(ngModel)]="name" />
-  <label>Name</label><br />
-  @if(isFood){
-  <input type="checkbox" [(ngModel)]="isReady" />
-  <label>Verzehrfertig</label><br />
-  }@else {
-  <input type="number" placeholder="Wert" [(ngModel)]="value" />
-  <label>Wert</label><br />
-  }
-  <input type="number" placeholder="Gewicht" [(ngModel)]="weight" />
-  <label>Gewicht</label><br />
-  <input type="number" placeholder="Anzahl" [(ngModel)]="quantity" />
-  <label>Anzahl</label><br />
-  <textarea placeholder="Beschreibung" [(ngModel)]="description"></textarea
-  ><label>Beschreibung</label>
-  <div class="button-wrapper-2-block">
+  <div class="flex-form t-15">
+    <div>
+      <div class="input-label">Name</div>
+      <mat-form-field appearance="outline" style="width: 18.9rem">
+        <input matInput [(ngModel)]="name" />
+      </mat-form-field>
+    </div>
+
+    <div class="flex-row numbers">
+      <div>
+        <div class="input-label">Gewicht</div>
+        <mat-form-field appearance="outline" style="width: 7rem">
+          <input type="number" class="right" matInput [(ngModel)]="weight" />
+          <span class="input-value" matTextSuffix>Lb.</span>
+        </mat-form-field>
+      </div>
+      <div>
+        <div class="input-label">Anzahl</div>
+        <mat-form-field appearance="outline" style="width: 7rem">
+          <input type="number" class="right" matInput [(ngModel)]="quantity" />
+          <span class="input-value" matTextSuffix>Stk.</span>
+        </mat-form-field>
+      </div>
+      @if(isFood){
+      <div>
+        <div class="input-label">Verzehrfertig</div>
+        <input
+          type="checkbox"
+          style="margin: 0.5rem 0 0 2.5rem"
+          [(ngModel)]="isReady"
+        />
+      </div>
+      } @else {
+      <div>
+        <div class="input-label">Wert</div>
+        <mat-form-field appearance="outline" style="width: 7rem">
+          <input type="number" class="right" matInput [(ngModel)]="value" />
+          <span class="input-value" matTextSuffix>Gold</span>
+        </mat-form-field>
+      </div>
+      }
+    </div>
+  </div>
+
+  <div class="NgxEditor__Wrapper t-15">
+    <ngx-editor-menu [editor]="editor" [toolbar]="toolbar"> </ngx-editor-menu>
+    <ngx-editor
+      [editor]="editor"
+      [(ngModel)]="description"
+      placeholder="Beschreibung des Gegenstandes"
+    ></ngx-editor>
+  </div>
+
+  <div class="horizontal-buttons">
     @if(isUpdate){
-    <ui-button
-      [type]="'update'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="update()"
-    ></ui-button>
+    <ui-button [color]="'green'" style="width: 40%" (click)="update()">
+      Bestätigen
+    </ui-button>
     }@else{
-    <ui-button
-      *ngIf="!isUpdate"
-      [type]="'add'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="add()"
-    ></ui-button>
+    <ui-button [color]="'green'" style="width: 40%" (click)="add()">
+      Bestätigen
+    </ui-button>
     }
-    <ui-button
-      [type]="'dismiss'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="cancel()"
-    ></ui-button>
+    <ui-button [color]="'red'" style="width: 40%" (click)="cancel()">
+      Abbrechen
+    </ui-button>
   </div>
 </div>

+ 35 - 2
src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.scss

@@ -1,4 +1,37 @@
-.modal-dimensions{
-    width: 40vw;
+.dimensions {
+    width: 35rem;
     background-color: antiquewhite;
 }
+
+.numbers {
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        display: none;
+    }
+
+    input {
+        -moz-appearance: textfield;
+    }
+
+    .input-value {
+        padding-left: 0.5rem;
+    }
+
+    span {
+        color: darkgrey;
+    }
+
+    ::ng-deep .mat-mdc-form-field-infix {
+        height: 40px !important;
+        min-height: 40px !important;
+        padding-top: 8px !important;
+    }
+}
+
+.ProseMirror {
+    overflow: auto;
+}
+::ng-deep .ProseMirror {
+    height: 10rem !important;
+    overflow-y: auto;
+}

+ 9 - 0
src/app/journal/journal-inventory/simple-item-modal/simple-item-modal.component.ts

@@ -1,4 +1,5 @@
 import { Component, Input } from '@angular/core';
+import { Editor } from 'ngx-editor';
 import { ModalService } from 'src/services/modal/modal.service';
 
 @Component({
@@ -12,6 +13,14 @@ export class SimpleItemModalComponent {
   @Input() public isUpdate: boolean = false;
   @Input() public isFood: boolean = false;
 
+  editor: Editor = new Editor();
+  html = '';
+  toolbar: any = [
+    // default value
+    ['bold', 'italic'],
+    ['bullet_list'],
+    [{ heading: ['h3', 'h4', 'h5', 'h6'] }],
+  ];
   public name: string = '';
   public description: string = '';
   public quantity: number = 0;

+ 13 - 1
src/app/journal/journal-notes/journal-notes.component.html

@@ -1,4 +1,4 @@
-<div
+<!-- <div
   style="
     display: flex;
     justify-content: center;
@@ -8,4 +8,16 @@
   "
 >
   <img style="height: 100%" src="assets/images/notes_coming_soon.jpeg" alt="" />
+</div> -->
+
+<div class="NgxEditor__Wrapper">
+  <ngx-editor-menu [editor]="editor"> </ngx-editor-menu>
+  <ngx-editor
+    [editor]="editor"
+    [(ngModel)]="html"
+    [disabled]="false"
+    [placeholder]="'Type here...'"
+  ></ngx-editor>
 </div>
+
+<div [innerHTML]="html"></div>

+ 12 - 3
src/app/journal/journal-notes/journal-notes.component.ts

@@ -1,10 +1,19 @@
-import { Component } from '@angular/core';
+import { Component, OnInit, OnDestroy } from '@angular/core';
+import { Editor } from 'ngx-editor';
 
 @Component({
   selector: 'app-journal-notes',
   templateUrl: './journal-notes.component.html',
-  styleUrl: './journal-notes.component.scss'
+  styleUrl: './journal-notes.component.scss',
 })
-export class JournalNotesComponent {
+export class JournalNotesComponent implements OnInit, OnDestroy {
+  editor: Editor = new Editor();
+  html = '';
 
+  ngOnInit(): void {}
+
+  // make sure to destory the editor
+  ngOnDestroy(): void {
+    this.editor.destroy();
+  }
 }

+ 2 - 2
src/app/journal/journal-spellcards/add-card/add-card.component.html

@@ -20,7 +20,7 @@
     Einen neuen Zauber erstellen
   </button>
 
-  <button class="abort-button" (click)="resetThis()">Abbrechen</button>
+  <button class="cancel-button" (click)="resetThis()">Abbrechen</button>
   } @else if (state === 3) {
 
   <input
@@ -49,6 +49,6 @@
       } @empty { Keine Zauber gefunden }
     </ul>
   </div>
-  <button class="abort-button" (click)="resetThis()">Abbrechen</button>
+  <button class="cancel-button" (click)="resetThis()">Abbrechen</button>
   }
 </div>

+ 3 - 3
src/app/journal/journal-spellcards/add-card/add-card.component.scss

@@ -32,7 +32,7 @@
 .add-button {
     width: 90%;
     margin: 0 0.5rem;
-    background-color: var(--primary-color);
+    background-color: var(--primary);
     border: var(--border);
     border-radius: 10px;
     box-shadow: var(--shadow);
@@ -41,7 +41,7 @@
     transition: all 0.25s ease-in-out;
 
     &:hover {
-        background-color: var(--primary-color-dark);
+        background-color: var(--primary-dark);
     }
 }
 
@@ -79,7 +79,7 @@ ul {
     margin: 0;
 }
 
-.abort-button {
+.cancel-button {
     width: 10rem;
     height: 2.5rem;
     display: block;

+ 1 - 1
src/app/journal/journal-spellcards/journal-spellcards.component.html

@@ -1,7 +1,7 @@
 <div class="spellcards-container">
   <div cdkDropListGroup>
     <!-- TODO: revert array to 0-9 -->
-    @for(level of [0,1,2,3,4,5,6,7,8,9]; track level; let index = $index) {
+    @for(level of [0,1]; track level; let index = $index) {
 
     <div class="example-container">
       <div

+ 4 - 4
src/app/journal/journal-spellcards/journal-spellcards.component.ts

@@ -131,8 +131,6 @@ export class JournalSpellcardsComponent {
             this.getSpellList(level).splice(index, 1);
             this.addSpell(result.data, result.data.level);
           }
-        } else {
-          throw new Error('REsult state from modal: ' + result.state);
         }
         resultSubscription.unsubscribe();
       }
@@ -212,7 +210,8 @@ export class JournalSpellcardsComponent {
       case 9:
         return this.level9;
       default:
-        throw new Error('Invalid spell level');
+        console.warn('Invalid spell level');
+        return [];
     }
   }
 
@@ -367,7 +366,8 @@ export class JournalSpellcardsComponent {
       case 'cdk-drop-list-9':
         return 9;
       default:
-        throw new Error('DND-ERROR: Invalid spell level');
+        console.warn('DND-ERROR: Invalid spell level');
+        return -1;
     }
   }
 

+ 1 - 22
src/app/journal/journal-spellcards/spellcard/spellcard.component.html

@@ -1,25 +1,3 @@
-<!-- <div class="card-container">
-  <div
-    class="card-background"
-    [style.background-color]="backgroundColors[spell.school]"
-  ></div>
-  <div class="title" [style.box-shadow]="borders[spell.school]">
-    {{ spell.german }}
-  </div>
-  <img
-    class="spell-image"
-    [src]="'assets/images/spells/' + spell.english.toLowerCase() + '.jpg'"
-    [style.box-shadow]="borders[spell.school]"
-    alt="spell image"
-  />
-  <div class="info" [style.box-shadow]="borders[spell.school]">
-    <div class="school">{{ schools[spell.school].display }}</div>
-    <div class="level" [style.box-shadow]="borders[spell.school]">
-      {{ spell.level }}
-    </div>
-  </div>
-</div> -->
-
 <div class="card-container">
   <div
     class="card-background"
@@ -36,6 +14,7 @@
   <img
     class="spell-image"
     [src]="'assets/images/spells/' + spell.english + '.jpg'"
+    (error)="setBackupImage($event)"
     [style.box-shadow]="'var(--' + spell.school.toLowerCase() + '-border)'"
     alt="spell image"
   />

+ 4 - 0
src/app/journal/journal-spellcards/spellcard/spellcard.component.ts

@@ -35,4 +35,8 @@ export class SpellcardComponent {
   public constructor(public translator: TranslatorService) {
     this.schools = translator.schools;
   }
+
+  public setBackupImage(event: any): void {
+    event.target.src = 'assets/images/spells/backup.jpg';
+  }
 }

+ 11 - 23
src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.html

@@ -1,30 +1,18 @@
-<div class="details-name">{{ abilities?.name }}</div>
+<div class="title">{{ ability?.name }}</div>
 
-<div class="details-long-description">{{ abilities?.longDescription }}</div>
+<div class="content" [innerHTML]="ability?.longDescription"></div>
 
 <div class="details-cost-charge">
-  <div class="details-cost">{{ costTranslator[abilities!.cost] }}</div>
+  <div class="details-cost">{{ costTranslator[ability!.cost] }}</div>
 
-  <div class="details-charges">Aufladungen: {{ abilities?.charges }}</div>
+  <div class="details-charges">Aufladungen: {{ ability?.charges }}</div>
 </div>
 
-<div class="vertical-button-wrapper-3">
-  <ui-button
-    [type]="'edit'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('update')"
-  ></ui-button>
-  <ui-button
-    [type]="'delete'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('delete')"
-  ></ui-button>
-  <ui-button
-    [type]="'dismiss'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('dismiss')"
-  ></ui-button>
+<div class="vertical-buttons bottom">
+  <ui-button [color]="'green'" [width]="'w20'" (click)="close('update')">
+    Anpassen
+  </ui-button>
+  <ui-button [color]="'red'" [width]="'w20'" (click)="close('delete')">
+    Löschen
+  </ui-button>
 </div>

+ 5 - 4
src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.scss

@@ -1,8 +1,9 @@
-.details-cost-charge{
+.details-cost-charge {
     display: flex;
     background-color: var(--secondary-color);
     justify-content: space-between;
-    margin: 1rem;
-    padding:0.5rem 2rem;
+    margin: 0, 875rem;
+    font-size: 600;
+    padding: 0.5rem 2rem;
     border-radius: 10px;
-}
+}

+ 1 - 1
src/app/journal/journal-stats/ability-panel/ability-table/ability-details/ability-details.component.ts

@@ -17,7 +17,7 @@ export class AbilityDetailsComponent {
     none: 'Keine Kosten',
   };
 
-  @Input() abilities: Ability | undefined;
+  @Input() ability: Ability | undefined;
 
   public close(result: string): void {
     this.detailsAccessor.closePanel(result);

+ 68 - 66
src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.html

@@ -1,80 +1,82 @@
-<div class="modal-dimensions">
-  <div class="add-form-group">
-    <div class="modal-title">
-      <h3 *ngIf="!isUpdate">Fähigkeit erstellen</h3>
-      <h3 *ngIf="isUpdate">Fähigkeit anpassen</h3>
+<div class="dimensions">
+  <div class="title">Fähigkeit @if(isUpdate){anpassen}@else{erstellen}</div>
+
+  <div class="flex-form t-15">
+    <div>
+      <div class="input-label">Name</div>
+      <mat-form-field appearance="outline" class="w-50">
+        <input matInput [(ngModel)]="name" />
+      </mat-form-field>
     </div>
-    <div class="modal-body">
-      <div class="modal-input">
-        <label for="abilityName">Name</label>
-        <input
-          type="text"
-          class="modal-input"
-          id="abilityName"
-          [(ngModel)]="name"
-        />
-      </div>
 
-      <div class="modal-input">
-        <label for="abilityShortDescription">Kurzbeschreibung</label>
-        <textarea
-          id="abilityShortDescription"
+    <div>
+      <div class="input-label">Kurze Beschreibung</div>
+      <div class="NgxEditor__Wrapper">
+        <ngx-editor-menu [editor]="shortEditor" [toolbar]="toolbar">
+        </ngx-editor-menu>
+        <ngx-editor
+          [editor]="shortEditor"
           [(ngModel)]="shortDescription"
-        ></textarea>
+          placeholder="Kurze Beschreibung der Fähigkeit"
+        ></ngx-editor>
       </div>
+      <div class="hint">Wird in der Übersicht angezeigt</div>
+    </div>
 
-      <div class="modal-input">
-        <label for="abilityLongDescription">Ausführliche Beschreibung</label>
-        <textarea
-          id="abilityLongDescription"
+    <div>
+      <div class="input-label">Ausführliche Beschreibung</div>
+      <div class="NgxEditor__Wrapper">
+        <ngx-editor-menu [editor]="longEditor" [toolbar]="toolbar">
+        </ngx-editor-menu>
+        <ngx-editor
+          [editor]="longEditor"
           [(ngModel)]="longDescription"
-        ></textarea>
+          placeholder="Ausführliche Beschreibung der Fähigkeit"
+        ></ngx-editor>
       </div>
+      <div class="hint">Wird in der Detailansicht angezeigt</div>
+    </div>
 
-      <div class="modal-input">
-        <label>Kosten</label>
-        <select [(ngModel)]="cost">
-          <option *ngFor="let cost of costs" [value]="cost.value">
-            {{ cost.display }}
-          </option>
-        </select>
+    <div class="flex-row">
+      <div class="w-100">
+        <div class="input-label">Kosten</div>
+
+        <mat-form-field appearance="outline" class="w-100">
+          <!-- <mat-label>Kosten</mat-label> -->
+          <mat-select [(ngModel)]="cost">
+            @for (cost of costs; track cost) {
+            <mat-option [value]="cost.value">{{ cost.display }}</mat-option
+            >}
+          </mat-select>
+        </mat-form-field>
       </div>
 
-      <div class="modal-input">
-        <label>Verwendungen</label>
-        <select [(ngModel)]="charges">
-          <option
-            *ngFor="let charge of chargesTranslator"
-            [value]="charge.value"
-          >
-            {{ charge.display }}
-          </option>
-        </select>
+      <div class="w-100">
+        <div class="input-label">Nutzungen</div>
+        <mat-form-field appearance="outline" class="w-100">
+          <!-- <mat-label>Nutzungen</mat-label> -->
+          <mat-select [(ngModel)]="charges">
+            @for (charge of chargesTranslator; track charge) {
+            <mat-option [value]="charge.value">{{ charge.display }}</mat-option
+            >}
+          </mat-select>
+        </mat-form-field>
       </div>
     </div>
-  </div>
-  <div class="button-wrapper-2-block">
-    @if(isUpdate){
-    <ui-button
-      [type]="'update'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="update()"
-    ></ui-button>
-    }@else{
-    <ui-button
-      *ngIf="!isUpdate"
-      [type]="'add'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="add()"
-    ></ui-button>
-    }
-    <ui-button
-      [type]="'dismiss'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="cancel()"
-    ></ui-button>
+
+    <div class="horizontal-buttons">
+      @if(isUpdate){
+      <ui-button [color]="'green'" style="width: 45%" (click)="update()"
+        >Aktualisieren</ui-button
+      >
+      }@else{
+      <ui-button [color]="'green'" style="width: 45%" (click)="add()"
+        >hinzufügen</ui-button
+      >
+      }
+      <ui-button [color]="'red'" style="width: 45%" (click)="cancel()"
+        >Abbrechen</ui-button
+      >
+    </div>
   </div>
 </div>

+ 4 - 15
src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.scss

@@ -1,19 +1,8 @@
-.modal-dimensions {
-    width: 40vw;
+.dimensions {
+    width: 50rem;
     background-color: var(--modal-background);
     border-radius: 10px;
     border: 1px solid var(--border-color);
-    padding: 1rem;
-}
-
-.add-form-group {
-    display: flex;
-    flex-direction: column;
-    gap: 1rem;
-}
-
-.modal-input {
-    display: flex;
-    flex-direction: column;
-    gap: 0.5rem;
+    box-shadow: var(--shadow);
+    padding: 0 2rem;
 }

+ 18 - 1
src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.ts

@@ -1,4 +1,5 @@
-import { Component, Input } from '@angular/core';
+import { Component, Input, OnInit, OnDestroy } from '@angular/core';
+import { Editor } from 'ngx-editor';
 import { ModalService } from 'src/services/modal/modal.service';
 import { Ability } from 'src/interfaces/ability';
 
@@ -11,6 +12,16 @@ export class AbilityModalComponent {
   @Input() public isUpdate: boolean = false;
   @Input() public ability: Ability | undefined;
 
+  shortEditor: Editor = new Editor();
+  longEditor: Editor = new Editor();
+  html = '';
+  toolbar: any = [
+    // default value
+    ['bold', 'italic'],
+    ['bullet_list'],
+    [{ heading: ['h3', 'h4', 'h5', 'h6'] }],
+  ];
+
   public name: string = '';
   public charges: number = 0;
   public currentlyUsedCharges: number = 0;
@@ -46,6 +57,12 @@ export class AbilityModalComponent {
     }
   }
 
+  // make sure to destory the editor
+  ngOnDestroy(): void {
+    this.shortEditor.destroy();
+    this.longEditor.destroy();
+  }
+
   //   FUNCTIONS
 
   public loadItem(): void {

+ 4 - 3
src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.html

@@ -18,7 +18,7 @@
         <div class="cost">{{ costTranslator[ability.cost] }}</div>
       </div>
 
-      <p>{{ ability.shortDescription }}</p>
+      <p [innerHTML]="ability.shortDescription"></p>
 
       <div class="charges-box" *ngIf="ability.charges != 0">
         Nutzungen: @for(_ of getArray(ability.charges); let chargeIndex =
@@ -38,8 +38,9 @@
     <div class="empty-list">Noch keine Fähigkeit hinzugefügt</div>
     }
   </div>
-  <!-- MODAL BUTTON -->
   <div class="footer">
-    <button (click)="openModal(false)">Hinzufügen</button>
+    <ui-button [color]="'green'" style="width: 80%" (click)="openModal(false)">
+      Hinzufügen
+    </ui-button>
   </div>
 </div>

+ 1 - 1
src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.scss

@@ -3,7 +3,7 @@
 }
 
 .item-list {
-  height: calc(100% - 5rem);
+  height: 40rem;
 }
 
 .item {

+ 2 - 4
src/app/journal/journal-stats/ability-panel/ability-table/ability-table.component.ts

@@ -22,7 +22,7 @@ export class AbilityTableComponent {
 
   public costTranslator: any = {
     action: 'Aktion',
-    bonus: 'Bonusaktion',
+    bonus: 'Bonus',
     reaction: 'Reaktion',
   };
 
@@ -141,7 +141,7 @@ export class AbilityTableComponent {
 
   public openDetailsPanel(index: number): void {
     this.detailsAccessor.openPanel(AbilityDetailsComponent, {
-      abilities: this.abilities[index],
+      ability: this.abilities[index],
     });
     const resultSubscription = this.detailsAccessor.result$.subscribe(
       (result) => {
@@ -149,8 +149,6 @@ export class AbilityTableComponent {
           this.deleteAbility(index);
         } else if (result.state === 'update') {
           this.openModal(true, index);
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
         }
         resultSubscription.unsubscribe();
       }

+ 5 - 3
src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.html

@@ -42,7 +42,7 @@
         <mat-expansion-panel-header>
           <mat-panel-title> Sprachen und Werkzeuge </mat-panel-title>
         </mat-expansion-panel-header>
-        <h5>Sprachen</h5>
+        <h5 class="left">Sprachen</h5>
         <div
           cdkDropList
           class="item-list"
@@ -56,7 +56,7 @@
             {{ language }}
           </div>
         </div>
-        <h5>Werkzeuge</h5>
+        <h5 class="left">Werkzeuge</h5>
         <div
           cdkDropList
           class="item-list"
@@ -76,6 +76,8 @@
 
   <!-- MODAL BUTTON -->
   <div class="footer">
-    <button (click)="openModal()">Anpassen</button>
+    <ui-button [color]="'green'" style="width: 80%" (click)="openModal()">
+      Anpassen
+    </ui-button>
   </div>
 </div>

+ 0 - 2
src/app/journal/journal-stats/ability-panel/proficiencies-table/proficiencies-table.component.ts

@@ -64,8 +64,6 @@ export class ProficienciesTableComponent {
           this.updateDatabase();
         } else if (result.state === 'cancel') {
           // Do nothing
-        } else {
-          throw new Error('DND-Error: Invalid result state: ' + result.state);
         }
         resultSubscription.unsubscribe();
       }

+ 37 - 68
src/app/journal/journal-stats/ability-panel/proficiencies-table/tools-modal/tools-modal.component.html

@@ -1,76 +1,45 @@
-<div class="modal-dimensions">
-  <h1 style="text-align: center">Hinweis</h1>
-  <p style="text-align: center">
-    Diese Seite ist momentan nur eingeschränkt funktionsbereit.
-  </p>
-  <h4>Werkzeuge</h4>
+<div class="dimensions">
+  <div class="title">Sprachen und Werkzeuge hinzufügen</div>
+  <div class="heading left b-05">Sprachen</div>
   <div style="display: flex; flex-direction: column; gap: 0.5rem">
-    <ng-container
-      *ngFor="let tool of proficiencies.tools; let toolIndex = index"
-    >
-      <div>
-        <input type="text" [(ngModel)]="proficiencies.tools[toolIndex]" />
-        <icon
-          [size]="'s'"
-          [type]="'UI'"
-          [icon]="'remove'"
-          [class]="'pointer'"
-          (click)="deleteTool(toolIndex)"
-        ></icon>
-      </div>
-    </ng-container>
-    <icon
-      [size]="'s'"
-      [type]="'UI'"
-      [icon]="'add'"
-      [class]="'pointer'"
-      (click)="addTool()"
-    ></icon>
+    @for(tool of proficiencies.languages; let languageIndex = $index; track
+    tool){
+    <div class="item-row">
+      <mat-form-field appearance="outline">
+        <input matInput [(ngModel)]="proficiencies.languages[languageIndex]" />
+      </mat-form-field>
+      <icon-button
+        [icon]="'delete'"
+        (click)="deleteLanguage(languageIndex)"
+      ></icon-button>
+    </div>
+    }
+    <icon-button [icon]="'add'" (click)="addLanguage()"></icon-button>
   </div>
 
-  <br />
-  <br />
-  <h4>Sprachen</h4>
+  <div class="heading left b-05">Werkzeuge</div>
   <div style="display: flex; flex-direction: column; gap: 0.5rem">
-    <ng-container
-      class="example-box"
-      *ngFor="let tool of proficiencies.languages; let languageIndex = index"
-    >
-      <div>
-        <input
-          type="text"
-          [(ngModel)]="proficiencies.languages[languageIndex]"
-        />
-        <icon
-          [size]="'s'"
-          [type]="'UI'"
-          [icon]="'remove'"
-          [class]="'pointer'"
-          (click)="deleteLanguage(languageIndex)"
-        ></icon>
-      </div>
-    </ng-container>
-    <icon
-      [size]="'s'"
-      [type]="'UI'"
-      [icon]="'add'"
-      [class]="'pointer'"
-      (click)="addLanguage()"
-    ></icon>
+    @for(tool of proficiencies.tools; let toolIndex = $index; track tool){
+    <div class="item-row">
+      <mat-form-field appearance="outline">
+        <input matInput [(ngModel)]="proficiencies.tools[toolIndex]" />
+      </mat-form-field>
+      <icon-button
+        style="margin-left: 0.25rem"
+        [icon]="'delete'"
+        (click)="deleteTool(toolIndex)"
+      ></icon-button>
+    </div>
+    }
+    <icon-button [icon]="'add'" (click)="addTool()"></icon-button>
   </div>
 
-  <div class="button-wrapper-2-block">
-    <ui-button
-      [type]="'update'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="update()"
-    ></ui-button>
-    <ui-button
-      [type]="'dismiss'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="cancel()"
-    ></ui-button>
+  <div class="horizontal-buttons">
+    <ui-button [color]="'green'" style="width: 45%" (click)="update()">
+      Aktualisieren
+    </ui-button>
+    <ui-button [color]="'red'" style="width: 45%" (click)="cancel()">
+      Abbrechen
+    </ui-button>
   </div>
 </div>

+ 6 - 51
src/app/journal/journal-stats/ability-panel/proficiencies-table/tools-modal/tools-modal.component.scss

@@ -1,58 +1,13 @@
-.modal-dimensions {
-  width: 40vw;
+.dimensions {
+  width: 35rem;
   background-color: var(--modal-background);
   border-radius: 10px;
   border: 1px solid var(--border-color);
-  padding: 1rem;
+  padding: 0 2rem;
 }
 
-//
-.example-list {
-  width: 100%;
-  border: solid 1px #ccc;
-  min-height: 60px;
-  display: block;
-  background: white;
-  border-radius: 4px;
-  overflow: hidden;
-}
-
-.example-box {
-  padding: 20px 10px;
-  border-bottom: solid 1px #ccc;
-  color: rgba(0, 0, 0, 0.87);
+.item-row {
   display: flex;
-  position: relative;
-  flex-direction: column;
-  // align-items: center;
-  justify-content: space-between;
-  box-sizing: border-box;
-  cursor: move;
-  background: white;
-  font-size: 14px;
-}
-
-.cdk-drag-preview {
-  box-sizing: border-box;
-  border-radius: 4px;
-  box-shadow:
-    0 5px 5px -3px rgba(0, 0, 0, 0.2),
-    0 8px 10px 1px rgba(0, 0, 0, 0.14),
-    0 3px 14px 2px rgba(0, 0, 0, 0.12);
-}
-
-.cdk-drag-placeholder {
-  opacity: 0;
-}
-
-.cdk-drag-animating {
-  transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
-}
-
-.example-box:last-child {
-  border: none;
-}
-
-.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder) {
-  transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+  gap: 0.25rem;
+  align-items: center;
 }

+ 58 - 67
src/app/journal/journal-stats/ability-panel/spellslots/spellslots-modal/spellslots-modal.component.html

@@ -1,74 +1,65 @@
-<div class="modal-dimensions">
-  <div class="add-form-group">
-    @if(!isMonk){
-    <h3>Spellslots</h3>
-    <mat-slide-toggle
-      [checked]="showSpellslots"
-      (change)="onSpellslotsSwitchChanged($event)"
-      >Zauberplätze in der Übersicht anzeigen</mat-slide-toggle
-    >
-    <!-- Zauberplätze in der Übersicht anzeigen -->
-    <div *ngIf="showSpellslots">
-      <div *ngFor="let level of spellslots; let levelIndex = index">
-        <div class="level-row">
-          Level {{ levelIndex + 1 }}
-          <select [(ngModel)]="spellslots[levelIndex].totalSlots">
-            <option *ngFor="let number of spellNumbersArray" [value]="number">
-              {{ number }}
-            </option>
-          </select>
-          <span>
-            <icon
-              [icon]="'remove'"
-              [size]="'s'"
-              [type]="'UI'"
-              [class]="'pointer'"
-              (click)="removeSpellLevel(levelIndex)"
-            ></icon>
-          </span>
-        </div>
-      </div>
-      <icon
-        [icon]="'add'"
-        [size]="'s'"
-        [type]="'UI'"
-        [class]="'pointer'"
-        (click)="addSpellLevel()"
-      ></icon>
+<div class="dimensions">
+  @if(!isMonk){
+  <div class="title">Zauberplätze</div>
+  <div class="content">
+    Hier kann die Anzahl der verfügbaren Zauberplätze je Zauberstufe angepasst
+    werden
+  </div>
+  <mat-slide-toggle
+    class="t-1"
+    [checked]="showSpellslots"
+    (change)="onSpellslotsSwitchChanged($event)"
+    >Zauberplätze in der Übersicht anzeigen
+  </mat-slide-toggle>
+  <!-- Zauberplätze in der Übersicht anzeigen -->
+  @if(showSpellslots){
+  <div class="t-1">
+    @for(level of spellslots; let levelIndex = $index; track level){
+    <div class="t-05">
+      Level {{ levelIndex + 1 }}
+      <select
+        [(ngModel)]="spellslots[levelIndex].totalSlots"
+        style="padding-left: 0.5rem"
+      >
+        <option *ngFor="let number of spellNumbersArray" [value]="number">
+          {{ number }}
+        </option>
+      </select>
+      <icon-button
+        style="display: inline; margin-left: 0.25rem"
+        [icon]="'delete'"
+        (click)="removeSpellLevel(levelIndex)"
+      ></icon-button>
     </div>
-    } @else{
+    }
+  </div>
+  <icon-button [icon]="'add'" (click)="addSpellLevel()"></icon-button>
+  } } @else{
 
-    <h3>KI-Punkte</h3>
-    <mat-slide-toggle
-      [checked]="kiPoints.showKiPoints"
-      (change)="onKiPointsSwitchChanged($event)"
-      >KI Punkte in der Übersicht anzeigen
-    </mat-slide-toggle>
-    <div *ngIf="kiPoints.showKiPoints">
-      Verfügbare KI Punkte
-      <div>
-        <select [(ngModel)]="kiPoints.totalPoints">
-          <option *ngFor="let number of kiNumbersArray" [value]="number">
-            {{ number }}
-          </option>
-        </select>
-      </div>
+  <div class="title">KI-Punkte</div>
+  <mat-slide-toggle
+    [checked]="kiPoints.showKiPoints"
+    (change)="onKiPointsSwitchChanged($event)"
+    >KI Punkte in der Übersicht anzeigen
+  </mat-slide-toggle>
+  <div *ngIf="kiPoints.showKiPoints">
+    Verfügbare KI Punkte
+    <div>
+      <select [(ngModel)]="kiPoints.totalPoints">
+        <option *ngFor="let number of kiNumbersArray" [value]="number">
+          {{ number }}
+        </option>
+      </select>
     </div>
-    }
   </div>
+  }
 
-  <div class="button-wrapper-2-block">
-    <ui-button
-      [type]="'update'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="update()"
-    ></ui-button>
-    <ui-button
-      [type]="'dismiss'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="cancel()"
-    ></ui-button>
+  <div class="horizontal-buttons">
+    <ui-button [color]="'green'" style="width: 45%" (click)="update()">
+      Aktualisieren
+    </ui-button>
+    <ui-button [color]="'red'" style="width: 45%" (click)="cancel()">
+      Abbrechen
+    </ui-button>
   </div>
 </div>

+ 3 - 9
src/app/journal/journal-stats/ability-panel/spellslots/spellslots-modal/spellslots-modal.component.scss

@@ -1,13 +1,7 @@
-.modal-dimensions {
-    width: 40vw;
+.dimensions {
+    width: 35rem;
     background-color: var(--modal-background);
     border-radius: 10px;
     border: 1px solid var(--border-color);
-    padding: 1rem;
-}
-
-.add-form-group {
-    display: flex;
-    flex-direction: column;
-    gap: 1rem;
+    padding: 0 2rem;
 }

+ 42 - 23
src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.html

@@ -15,34 +15,50 @@
     </div>
 
     @if(showSpellslots){
-    <!-- <div *ngIf="showSpellslots" class="spellslot-list"> -->
-    @for(level of spellslots; let levelIndex = $index; track level){
-    <div class="level-row">
-      Level {{ levelIndex + 1 }}:
-      <div class="checkboxes">
-        @for ( checkbox of getArray(spellslots[levelIndex].totalSlots); let
-        slotIndex = $index; track checkbox){
-        <input
-          [id]="'checkbox' + levelIndex + '-' + slotIndex"
-          type="checkbox"
-          (change)="handleUsedSlots(levelIndex, slotIndex, $event.target)"
-        />
-        }
+    <div class="spell-container">
+      <div
+        style="
+          font-size: 1.5rem;
+          padding: 1.25rem 0 0.5rem 1.5rem;
+          font-weight: 600;
+        "
+      >
+        Zauberplätze
+      </div>
+      @for(level of spellslots; let levelIndex = $index; track level){
+      <div
+        class="level-row"
+        [ngClass]="{ used: level.usedSlots == level.totalSlots }"
+      >
+        <div style="width: 6rem">Level {{ levelIndex + 1 }}:</div>
+        <div class="checkboxes">
+          @for ( checkbox of getArray(spellslots[levelIndex].totalSlots); let
+          slotIndex = $index; track checkbox){
+          <input
+            [id]="'checkbox' + levelIndex + '-' + slotIndex"
+            type="checkbox"
+            (change)="handleUsedSlots(levelIndex, slotIndex, $event.target)"
+          />
+          }
+        </div>
       </div>
+      }
     </div>
-    }
 
-    <div class="modifier-container">
-      <div>
-        <div class="value-box">{{ spellSaveDC }}</div>
-        <div class="value-label">Rettungswurf-SG</div>
-      </div>
+    <div class="value-row">
+      <value-box [value]="spellSaveDC" [label]="'Rettungswurf-SG'"></value-box>
       <div>
-        <div class="value-box">{{ spellAttackModifier }}</div>
-        <div class="value-label">Zauber-Angriffsbonus</div>
+        <div class="value-box">
+          {{ attributeTranslator[spellcastingAttribute] }}
+        </div>
+        <div class="value-label t-0375">Zauberwirken-Attribut</div>
       </div>
+      <value-box
+        [value]="spellAttackModifier"
+        [label]="'Zauber-Angriffsbonus'"
+      ></value-box>
     </div>
-    <!-- </div> -->
+
     } @if(!kiPoints.showKiPoints && !showSpellslots){
     <div class="empty-list">
       Noch keine {{ isMonk ? "Ki-Punkte" : "Zauberplätze" }} hinzugefügt
@@ -50,7 +66,10 @@
     }
   </div>
   <!-- MODAL BUTTON -->
+
   <div class="footer">
-    <button (click)="openModal()">Anpassen</button>
+    <ui-button [color]="'green'" style="width: 80%" (click)="openModal()">
+      Anpassen
+    </ui-button>
   </div>
 </div>

+ 65 - 12
src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.scss

@@ -5,28 +5,81 @@
 .slots-container {
     height: calc(100% - 5rem);
     overflow: auto;
-    padding-top: 0.5rem;
     position: relative;
 }
 
-.level-row {
-    padding: 1rem 1.5rem 0 1.5rem;
-    display: flex;
-    font-size: 1.25rem;
-    font-weight: 600;
+.spell-container {
+    margin: 15px 10px;
+    background-color: var(--items);
+    border: var(--border);
+    border-radius: 10px;
+    box-shadow: var(--shadow);
+    padding-bottom: 1.25rem;
 
-    .checkboxes {
-        margin-left: 1rem;
+    .level-row {
+        padding: 1rem 1.5rem 0 1.5rem;
         display: flex;
-        align-items: center;
-        gap: 0.5rem;
+        font-size: 1.25rem;
+        font-weight: 600;
+
+        .checkboxes {
+            margin-left: 1rem;
+            display: flex;
+            align-items: center;
+            gap: 0.5rem;
+        }
     }
 }
 
-.modifier-container {
+.value-row {
     position: absolute;
     width: 100%;
     bottom: 1.5rem;
+}
+
+.used {
+    opacity: 0.6;
+}
+
+input[type="checkbox"] {
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    width: 20px;
+    height: 20px;
+    background: white;
+    border: 1px solid #000;
+    position: relative;
+}
+
+input[type="checkbox"]:checked::after {
+    content: "";
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 12px;
+    height: 12px;
+    background: #815139;
+    transform: translate(-50%, -50%);
+}
+
+.value-box {
+    max-width: 8rem;
+    padding: 0 0.25rem 0 0.25rem;
+    height: 2.75rem;
+    font-size: 1.5rem;
+    text-align: center;
+    border-radius: 10px;
+    border: none;
+    box-shadow: var(--shadow);
+    background-color: white;
     display: flex;
-    justify-content: space-evenly;
+    justify-content: center;
+    align-items: center;
+}
+
+.value-label {
+    width: 7rem;
+    font-weight: 500;
+    text-align: center;
 }

+ 10 - 11
src/app/journal/journal-stats/ability-panel/spellslots/spellslots.component.ts

@@ -12,7 +12,7 @@ export class SpellslotsComponent {
   public spellslots: any[] = [];
   public showSpellslots: boolean = false;
   public kiPoints: any;
-  public spellcastingAttribute: string | undefined = undefined;
+  public spellcastingAttribute: string = '';
   public proficiencyBonus: number = 2;
   public attributeValue: number = 0;
   public isMonk: boolean = true;
@@ -22,6 +22,15 @@ export class SpellslotsComponent {
 
   public slotNumber: number = 1;
 
+  attributeTranslator: any = {
+    Strength: 'Stärke',
+    Dexterity: 'Geschicklichkeit',
+    Constitution: 'Konstitution',
+    Intelligence: 'Intelligenz',
+    Wisdom: 'Weisheit',
+    Charisma: 'Charisma',
+  };
+
   public constructor(
     public dataAccessor: DataService,
     public modalAccessor: ModalService
@@ -63,8 +72,6 @@ export class SpellslotsComponent {
       (result) => {
         if (result.state === 'update') {
           this.updateSlotsAndPoints(result.data);
-        } else {
-          throw new Error('DND-ERROR: Invalid state');
         }
         resultSubscription.unsubscribe();
       }
@@ -73,18 +80,11 @@ export class SpellslotsComponent {
 
   private calculateModifiers(): void {
     const spellcastingAttribute = this.spellcastingAttribute;
-    console.log('calculateModifiers wurde aufgerufen');
-    console.log('Proficiency: ', this.proficiencyBonus);
-
-    console.log('Attribute: ', this.spellcastingAttribute);
-    console.log('Value: ', this.attributeValue);
 
     if (spellcastingAttribute !== undefined) {
       const modifier = (this.attributeValue - 10) / 2;
       this.spellAttackModifier = modifier + this.proficiencyBonus;
       this.spellSaveDC = 8 + modifier + this.proficiencyBonus;
-      console.log('Attack: ', this.spellAttackModifier);
-      console.log('Save: ', this.spellSaveDC);
     }
   }
 
@@ -94,7 +94,6 @@ export class SpellslotsComponent {
         'this.dataAccessor.' +
         this.spellcastingAttribute.toLowerCase() +
         '$.subscribe((attribute) => {this.attributeValue = attribute.value; this.calculateModifiers();});';
-      console.log(command);
       eval(command);
     }
   }

+ 9 - 21
src/app/journal/journal-stats/ability-panel/trait-table/trait-details/trait-details.component.html

@@ -1,24 +1,12 @@
-<div class="details-name">{{ trait?.name }}</div>
+<div class="title">{{ trait?.name }}</div>
 
-<div class="details-long-description">{{ trait?.longDescription }}</div>
+<div class="content" [innerHTML]="trait?.longDescription"></div>
 
-<div class="vertical-button-wrapper-3">
-  <ui-button
-    [type]="'edit'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('update')"
-  ></ui-button>
-  <ui-button
-    [type]="'delete'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('delete')"
-  ></ui-button>
-  <ui-button
-    [type]="'dismiss'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('dismiss')"
-  ></ui-button>
+<div class="vertical-buttons bottom">
+  <ui-button [color]="'green'" [width]="'w20'" (click)="close('update')">
+    Anpassen
+  </ui-button>
+  <ui-button [color]="'red'" [width]="'w20'" (click)="close('delete')">
+    Löschen
+  </ui-button>
 </div>

+ 47 - 49
src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.html

@@ -1,59 +1,57 @@
-<div class="modal-dimensions">
-  <div class="add-form-group">
-    <div class="modal-title">
-      <h3 *ngIf="!isUpdate">Eigenschaft erstellen</h3>
-      <h3 *ngIf="isUpdate">Eigenschaft anpassen</h3>
+<div class="dimensions">
+  <div class="title">
+    <h3 *ngIf="!isUpdate">Eigenschaft erstellen</h3>
+    <h3 *ngIf="isUpdate">Eigenschaft anpassen</h3>
+  </div>
+  <div class="flex-form t-15">
+    <div>
+      <div class="input-label">Name</div>
+      <mat-form-field appearance="outline" class="w-50">
+        <input matInput [(ngModel)]="name" />
+      </mat-form-field>
     </div>
-    <div class="modal-body">
-      <div class="modal-input">
-        <label for="traitName">Name</label>
-        <input
-          type="text"
-          class="modal-input"
-          id="traitName"
-          [(ngModel)]="name"
-        />
-      </div>
 
-      <div class="modal-input">
-        <label for="traitShortDescription">Kurzbeschreibung</label>
-        <textarea
-          id="traitShortDescription"
+    <div>
+      <div class="input-label">Kurze Beschreibung</div>
+      <div class="NgxEditor__Wrapper">
+        <ngx-editor-menu [editor]="shortEditor" [toolbar]="toolbar">
+        </ngx-editor-menu>
+        <ngx-editor
+          [editor]="shortEditor"
           [(ngModel)]="shortDescription"
-        ></textarea>
+          placeholder="Kurze Beschreibung der Eigenschaft"
+        ></ngx-editor>
       </div>
+      <div class="hint">Wird in der Übersicht angezeigt</div>
+    </div>
 
-      <div class="modal-input">
-        <label for="traitLongDescription">Ausführliche Beschreibung</label>
-        <textarea
-          id="traitLongDescription"
+    <div>
+      <div class="input-label">Ausführliche Beschreibung</div>
+      <div class="NgxEditor__Wrapper">
+        <ngx-editor-menu [editor]="longEditor" [toolbar]="toolbar">
+        </ngx-editor-menu>
+        <ngx-editor
+          [editor]="longEditor"
           [(ngModel)]="longDescription"
-        ></textarea>
+          placeholder="Ausführliche Beschreibung der Eigenschaft"
+        ></ngx-editor>
       </div>
+      <div class="hint">Wird in der Detailansicht angezeigt</div>
+    </div>
+
+    <div class="horizontal-buttons">
+      @if(isUpdate){
+      <ui-button [color]="'green'" style="width: 45%" (click)="update()"
+        >Aktualisieren</ui-button
+      >
+      }@else{
+      <ui-button [color]="'green'" style="width: 45%" (click)="add()"
+        >hinzufügen</ui-button
+      >
+      }
+      <ui-button [color]="'red'" style="width: 45%" (click)="cancel()"
+        >Abbrechen</ui-button
+      >
     </div>
-  </div>
-  <div class="button-wrapper-2-block">
-    @if(isUpdate){
-    <ui-button
-      [type]="'update'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="update()"
-    ></ui-button>
-    }@else{
-    <ui-button
-      *ngIf="!isUpdate"
-      [type]="'add'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="add()"
-    ></ui-button>
-    }
-    <ui-button
-      [type]="'dismiss'"
-      [size]="'xlarge'"
-      [color]="'primary'"
-      (click)="cancel()"
-    ></ui-button>
   </div>
 </div>

+ 0 - 14
src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.scss

@@ -3,17 +3,3 @@
     flex-direction: column;
     gap: 0.5rem;
 }
-
-.modal-dimensions {
-    width: 40vw;
-    background-color: var(--modal-background);
-    border-radius: 10px;
-    border: 1px solid var(--border-color);
-    padding: 1rem;
-}
-
-.add-form-group {
-    display: flex;
-    flex-direction: column;
-    gap: 1rem;
-}

+ 17 - 1
src/app/journal/journal-stats/ability-panel/trait-table/trait-modal/trait-modal.component.ts

@@ -1,4 +1,5 @@
-import { Component, Output, EventEmitter, Input } from '@angular/core';
+import { Component, Input, OnInit, OnDestroy } from '@angular/core';
+import { Editor } from 'ngx-editor';
 import { Trait } from 'src/interfaces/traits';
 import { ModalService } from 'src/services/modal/modal.service';
 
@@ -11,6 +12,16 @@ export class TraitModalComponent {
   @Input() public isUpdate: boolean = false;
   @Input() public trait: Trait | undefined;
 
+  shortEditor: Editor = new Editor();
+  longEditor: Editor = new Editor();
+  html = '';
+  toolbar: any = [
+    // default value
+    ['bold', 'italic'],
+    ['bullet_list'],
+    [{ heading: ['h3', 'h4', 'h5', 'h6'] }],
+  ];
+
   public name: string = '';
   public shortDescription: string = '';
   public longDescription: string = '';
@@ -24,6 +35,11 @@ export class TraitModalComponent {
     }
   }
 
+  ngOnDestroy(): void {
+    this.shortEditor.destroy();
+    this.longEditor.destroy();
+  }
+
   // FUNCTIONS
 
   public loadItem(): void {

+ 4 - 3
src/app/journal/journal-stats/ability-panel/trait-table/trait-table.component.html

@@ -4,14 +4,15 @@
     @for(trait of traits; let index = $index; track trait){
     <div class="item" (click)="openDetailsPanel(index)" cdkDrag>
       <div class="name">{{ trait.name }}</div>
-      <p>{{ trait.shortDescription }}</p>
+      <p [innerHTML]="trait.shortDescription"></p>
     </div>
     }@empty{
     <div class="empty-list">Noch keine Eigenschaft hinzugefügt</div>
     }
   </div>
-  <!-- MODAL BUTTON -->
   <div class="footer">
-    <button (click)="openModal(false)">Hinzufügen</button>
+    <ui-button [color]="'green'" style="width: 80%" (click)="openModal(false)">
+      Hinzufügen
+    </ui-button>
   </div>
 </div>

+ 1 - 1
src/app/journal/journal-stats/ability-panel/trait-table/trait-table.component.scss

@@ -9,7 +9,7 @@
 }
 
 .item-list {
-  height: calc(100% - 5rem);
+  height: 40rem;
 }
 
 .item {

+ 29 - 30
src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-details/attribute-details.component.html

@@ -15,16 +15,23 @@
   Issue auf Github. } }
 </div>
 <div class="attribute-container">
-  <div>
-    <div class="attribute-value">{{ attribute.value }}</div>
-    <div class="attribute-label">Attributwert</div>
-  </div>
-  <div>
-    <div class="attribute-value">{{ modifier }}</div>
-    <div class="attribute-label">Modifikator</div>
-  </div>
+  <value-box [value]="attribute.value" [label]="'Attributwert'"></value-box>
+  <value-box [value]="modifier" [label]="'Modifikator'"></value-box>
+</div>
+
+@if(attribute.name !== 'constitution'){
+<div class="subheading">Beeinflusste Fähigkeiten:</div>
+<div class="skills">
+  @for(skill of skillsTable[attribute.name]; track skill){
+  <div class="skill-item">{{ skill }}</div>
+  }
 </div>
-<div class="modifier-table">
+} @else { Resistenzen ausarbeiten }
+
+<mat-expansion-panel>
+  <mat-expansion-panel-header>
+    <mat-panel-title>Modifikatoren</mat-panel-title>
+  </mat-expansion-panel-header>
   <table class="table table-striped">
     <thead>
       <tr>
@@ -79,19 +86,11 @@
       </tr>
     </tbody>
   </table>
-</div>
-@if(attribute.name !== 'constitution'){
-<div class="details-subheading">Beeinflusste Fähigkeiten:</div>
-<div class="skills">
-  @for(skill of skillsTable[attribute.name]; track skill){
-  <div class="skill-item">{{ skill }}</div>
-  }
-</div>
-}
+</mat-expansion-panel>
 
 <ng-template #strengthTemplate>
-  <div class="details-title">Stärke</div>
-  <div class="details-content">
+  <div class="title">Stärke</div>
+  <div class="content">
     Stärke misst die physische Kraft und Muskulatur deines Charakters. Ein hoher
     Stärkewert deutet auf körperliche Robustheit, Muskelkraft und
     Durchsetzungsvermögen hin. Charaktere mit hoher Stärke sind oft besser in
@@ -101,8 +100,8 @@
 </ng-template>
 
 <ng-template #dexterityTemplate>
-  <div class="details-title">Geschicklichkeit</div>
-  <div class="details-content">
+  <div class="title">Geschicklichkeit</div>
+  <div class="content">
     Geschicklichkeit repräsentiert die Beweglichkeit, Reflexe und allgemeine
     Körperbeherrschung deines Charakters. Ein hoher Geschicklichkeitswert deutet
     auf schnelle Reaktionen, geschickte Bewegungen und eine gute
@@ -112,8 +111,8 @@
 </ng-template>
 
 <ng-template #constitutionTemplate>
-  <div class="details-title">Konstitution</div>
-  <div class="details-content">
+  <div class="title">Konstitution</div>
+  <div class="content">
     Konstitution steht für die Widerstandsfähigkeit, Gesundheit und Ausdauer
     deines Charakters. Ein hoher Konstitutionswert bedeutet, dass dein Charakter
     robust ist und gut mit physischem Stress umgehen kann. Charaktere mit hoher
@@ -123,8 +122,8 @@
 </ng-template>
 
 <ng-template #intelligenceTemplate>
-  <div class="details-title">Intelligenz</div>
-  <div class="details-content">
+  <div class="title">Intelligenz</div>
+  <div class="content">
     Intelligenz misst die geistige Schärfe, das logische Denkvermögen und die
     Lernfähigkeit deines Charakters. Ein hoher Intelligenzwert deutet auf eine
     gute Allgemeinbildung, Wissensdurst und analytische Fähigkeiten hin.
@@ -133,8 +132,8 @@
 </ng-template>
 
 <ng-template #wisdomTemplate>
-  <div class="details-title">Weisheit</div>
-  <div class="details-content">
+  <div class="title">Weisheit</div>
+  <div class="content">
     Beschreibung: Weisheit repräsentiert die Wahrnehmung, Intuition und
     emotionale Intelligenz deines Charakters. Ein hoher Weisheitswert deutet auf
     eine gute Urteilsfähigkeit, Einsicht und innere Stärke hin. Charaktere mit
@@ -143,8 +142,8 @@
 </ng-template>
 
 <ng-template #charismaTemplate>
-  <div class="details-title">Charisma</div>
-  <div class="details-content">
+  <div class="title">Charisma</div>
+  <div class="content">
     Charisma spiegelt die Ausstrahlung, Überzeugungskraft und soziale
     Fähigkeiten deines Charakters wider. Ein hoher Charismawert bedeutet, dass
     dein Charakter charmant, einnehmend und überzeugend ist. Charaktere mit

+ 15 - 21
src/app/journal/journal-stats/attribute-skill-container/attribute-panel/attribute-field/attribute-details/attribute-details.component.scss

@@ -4,24 +4,6 @@
     margin-top: 2rem;
 }
 
-.attribute-value {
-    width: 4rem;
-    height: 3rem;
-    font-size: 1.5rem;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    margin: auto;
-    border-radius: 10px;
-    background-color: white;
-    box-shadow: var(--shadow);
-}
-
-.attribute-label {
-    margin-top: 0.5rem;
-    font-weight: 500;
-}
-
 .skills {
     display: flex;
     flex-wrap: wrap;
@@ -30,15 +12,27 @@
 }
 
 .skill-item {
-    background-color: var(--primary-color);
+    background-color: var(--tab);
     border-radius: 1rem;
     font-weight: 500;
     padding: 0.25rem 0.5rem;
     box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.75);
 }
 
-.modifier-table {
-    margin-top: 1.5rem;
+mat-expansion-panel {
+    border: var(--border) !important;
+    border-radius: 10px !important;
+    box-shadow: var(--shadow) !important;
+    margin-top: 2.5rem;
+
+    mat-panel-title {
+        font-size: 1.25rem;
+        font-weight: 600;
+    }
+
+    table {
+        border: var(--border);
+    }
 }
 
 td {

+ 4 - 9
src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-details/save-throw-details.component.html

@@ -1,16 +1,11 @@
-<div class="details-title">{{ attributeName }}</div>
-<div class="save-subheading">Rettungswurf</div>
+<div class="title">{{ attributeName }}</div>
+<div class="subheading" style="margin-top: 0.5rem">Rettungswurf</div>
 
-<div class="details-content">
+<div class="content">
   Ein Rettungswurf wird immer dann verlangt, wenn überprüft werden soll, ob ein
   Spieler einem Angriff oder äußeren Einfluss widerstehen kann. Durch das
   bestehen eines Rettungswurfes kann der Effekt verhindert, oder zumindest
   abgeschwächt werden.
 </div>
 
-<div class="details-value-container">
-  <div class="details-value">
-    {{ saveModifier }}
-  </div>
-  <div class="details-label">Modifikator</div>
-</div>
+<value-box [value]="saveModifier" [label]="'Modifikator'"></value-box>

+ 0 - 11
src/app/journal/journal-stats/attribute-skill-container/save-throw-panel/save-throw-details/save-throw-details.component.scss

@@ -1,11 +0,0 @@
-.save-subheading{
-    font-size: 1.25rem;
-    text-align: center;
-    font-weight: bold;
-}
-
-.save-calculation-heading{
-    font-size: 1.25rem;
-    font-weight: 500;
-}
-

+ 3 - 10
src/app/journal/journal-stats/attribute-skill-container/skill-panel/skill-details/skill-details.component.html

@@ -1,10 +1,3 @@
-<div class="details-title">{{ skillNames[skillName] }}</div>
-
-<div class="details-content">{{ descriptions[skillName] }}</div>
-
-<div class="details-value-container">
-  <div class="details-value" style="margin-top: 1.5rem">
-    {{ skillModifier }}
-  </div>
-  <div class="details-label">Modifikator</div>
-</div>
+<div class="title">{{ skillNames[skillName] }}</div>
+<div class="content">{{ descriptions[skillName] }}</div>
+<value-box [value]="skillModifier" [label]="'Modifikator'"></value-box>

+ 3 - 8
src/app/journal/journal-stats/info-row/armor-class/armor-class-details/armor-class-details.component.html

@@ -1,6 +1,6 @@
-<div class="details-title">Rüstungsklasse</div>
+<div class="title">Rüstungsklasse</div>
 
-<div class="details-content">
+<div class="content">
   Die Rüstungsklasse wird verwendet, um zu bestimmen, ob ein Angriff erfolgreich
   ist oder nicht. Ein Angreifer muss einen Würfelwurf (normalerweise einen W20)
   ablegen und dabei mindestens die Rüstungsklasse des Ziels erreichen. Wenn der
@@ -8,9 +8,4 @@
   Angriff abgewehrt.
 </div>
 
-<div class="details-value-container">
-  <div class="details-value" style="margin-top: 1.5rem">
-    {{ armorClass }}
-  </div>
-  <div class="details-label">Wert</div>
-</div>
+<value-box [value]="armorClass" [label]="'Wert'"></value-box>

+ 0 - 5
src/app/journal/journal-stats/info-row/armor-class/armor-class-details/armor-class-details.component.scss

@@ -1,5 +0,0 @@
-.calculation{
-    font-size: 1.25rem;
-    font-weight: 500;
-    margin-top: 1.5rem;
-}

+ 64 - 52
src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.html

@@ -1,66 +1,78 @@
-<div class="details-title">Zustände</div>
+<!-- DESCRIPTION -->
+<div class="title">Zustände</div>
 
-<div class="details-content">
+<div class="content">
   Zustände ändern die Fähigkeiten einer Kreatur auf verschiedene Arten und
   können die Folgen von Zaubern, Klassenmerkmalen, Monsterangriffen oder anderen
   Fähigkeiten sein. Der Zustand hält solange an, bis er aufgehoben wird, oder
   wie seine Wirkungsdauer ist.
 </div>
 
-<div class="current-status-container">
-  @for (condition of conditions; let index = $index; track condition ) {
-  <div class="condition-row">
-    <div class="condition">
-      <button class="accordion" (click)="toggleAcordion($event)">
-        {{ condition }}
-      </button>
-      <div class="panel">
-        @for(description of conditionDescriptions[condition]; track
+<div class="condition-handling">
+  <!-- CURRENTLY ACTIVE CONDITIONS -->
+  <div>
+    <div class="heading left t-0 b-075">Momentane Zustäne</div>
+    <mat-accordion>
+      @for (condition of conditions; let index = $index; track condition ) {
+      <mat-expansion-panel>
+        <mat-expansion-panel-header>
+          <mat-panel-title>{{ condition }}</mat-panel-title>
+        </mat-expansion-panel-header>
+        <ul>
+          @for(description of conditionDescriptions[condition]; track
+          description){
+          <li>{{ description }}</li>
+          }
+        </ul>
+        <icon-button
+          [icon]="'delete'"
+          style="margin: auto"
+          (click)="removeCondition(index)"
+        ></icon-button>
+      </mat-expansion-panel>
+      } @empty {
+      <div class="empty-list">keine Zustände</div>
+      }
+    </mat-accordion>
+  </div>
+
+  <!-- ADD CONDITIONS -->
+  <div class="heading left">Zustand hinzufügen</div>
+
+  <div>
+    <mat-form-field appearance="outline" class="t-075">
+      <mat-label>Zustand</mat-label>
+      <mat-select [(ngModel)]="currentCondition">
+        @for (condition of notUsedConditions(); track condition) {
+        <mat-option [value]="condition">{{ condition }}</mat-option
+        >}
+      </mat-select>
+    </mat-form-field>
+    @if(currentCondition !== '') {
+    <icon-button
+      style="display: inline; margin-left: 0.25rem"
+      [icon]="'add'"
+      (click)="addCondition()"
+    ></icon-button>
+
+    <div>
+      <ul>
+        @for(description of conditionDescriptions[currentCondition]; track
         description){
-        <div class="status-item-description">{{ description }}</div>
+        <li>{{ description }}</li>
         }
-      </div>
+      </ul>
     </div>
-
-    <button class="status-item-remove" (click)="removeCondition(index)">
-      X
-    </button>
+    }
   </div>
-  } @empty {
-  <div class="empty-list">keine Zustände</div>
-  }
-</div>
-
-<div class="details-subheading centered">Zustand hinzufügen</div>
-<div class="condition-selection">
-  <select [(ngModel)]="currentCondition">
-    <option *ngFor="let status of notUsedConditions()" [value]="status">
-      {{ status }}
-    </option>
-  </select>
-  <button (click)="addCondition()">hinzufügen</button>
-</div>
-
-@if (currentCondition !== ''){
-<div class="description-container">
-  @for(description of conditionDescriptions[currentCondition]; track
-  description){
-  <div class="status-item-description">{{ description }}</div>
-  }
 </div>
-}
 
-<div class="vertical-button-wrapper-2">
-  <ui-button
-    [type]="'apply'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('update')"
-  ></ui-button>
-  <ui-button
-    [type]="'dismiss'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('dismiss')"
-  ></ui-button>
+<!-- NAVIGATION BUTTONS -->
+<div class="vertical-buttons bottom">
+  <ui-button [color]="'green'" [width]="'w20'" (click)="close('update')">
+    Anpassen
+  </ui-button>
+  <ui-button [color]="'red'" [width]="'w20'" (click)="close('cancel')">
+    Löschen
+  </ui-button>
 </div>

+ 60 - 65
src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.scss

@@ -1,82 +1,77 @@
-
-.current-status-container{
-    margin-top: 2rem;
+.condition-handling {
+  height: calc(100% - 24.5rem);
+  overflow: auto;
 }
 
-.status-item{
-    font-size: 1.25rem;
-    font-weight: 500;
+.status-item {
+  font-size: 1.25rem;
+  font-weight: 500;
 }
 
-.empty-list{
-    font-size: 1.25rem;
-    font-weight: 600;
-    text-align: center;
-}
-.condition-row{
-    display: flex;
+.empty-list {
+  font-size: 1.25rem;
+  font-weight: 600;
+  text-align: center;
 }
 
-.condition{
-    width: 100%;
-}
+::ng-deep mat-accordion {
+  :first-child {
+    border-radius: 10px 10px 0 0 !important;
+  }
 
-.condition-selection{
-    margin-top: 0.5rem;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    gap: 1rem;
+  :last-child {
+    border-radius: 0 0 10px 10px !important;
+  }
 }
-
-.condition-description{
-    margin-top: 1rem;
+mat-expansion-panel {
+  border: var(--border) !important;
+  box-shadow: none !important;
+  mat-expansion-panel-header {
+    font-size: 1.25rem;
+    font-weight: 600;
+  }
 }
 
-.status-item-description{
-    margin: 0.5rem 0 0 0.5rem;
+.add-condition {
+  display: inline-block;
+  margin-left: 0.5rem;
+  border: none;
+  background-color: transparent;
+  transition: all 0.25s ease;
+  border-radius: 10px;
+  &:hover {
+    background-color: rgba(211, 211, 211, 0.5);
+  }
 }
 
+// TODO: Auslagern
+.button-container {
+  height: 9rem;
+  width: 27rem;
+  position: absolute;
+  bottom: 0;
+  display: flex;
+  justify-content: space-evenly;
+  align-items: center;
+  flex-direction: column;
 
+  .confirm {
+    width: 20rem;
+    margin: 0 auto;
+    background-color: var(--accept);
 
-// Accordion
-
-/* Style the buttons that are used to open and close the accordion panel */
-.accordion {
-  background-color: #eee;
-  color: #444;
-  cursor: pointer;
-  padding: 0.5rem;
-  width: 100%;
-  text-align: left;
-  border: none;
-  outline: none;
-  font-size: 1.25rem;
-    font-weight: 500;
-}
-
-/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */
-.active, .accordion:hover {
-  background-color: #ccc;
-}
+    &:hover {
+      background-color: var(--accept-hover);
+    }
+  }
 
-/* Style the accordion panel. Note: hidden by default */
-.panel {
-  padding: 0 18px;
-  background-color: white;
-  max-height: 0;
-  overflow: hidden;
-  transition: max-height 0.4s ease-in-out
-}
+  .cancel {
+    width: 20rem;
+    margin: 0 auto;
+    background-color: var(--delete);
 
-.accordion:after {
-  content: '\02795'; /* Unicode character for "plus" sign (+) */
-  font-size: 13px;
-  color: #777;
-  float: right;
-  margin-left: 5px;
+    &:hover {
+      background-color: var(--delete-hover);
+    }
+  }
 }
-
-.active:after {
-  content: "\2796"; /* Unicode character for "minus" sign (-) */
-}

+ 1 - 1
src/app/journal/journal-stats/info-row/conditions/conditions-details/conditions-details.component.ts

@@ -118,7 +118,7 @@ export class ConditionsDetailsComponent {
   public close(result: string): void {
     if (result === 'update') {
       this.detailsAccessor.closePanel(result, this.conditions);
-    } else if (result === 'dismiss') {
+    } else if (result === 'cancel') {
       this.detailsAccessor.closePanel({ state: result });
     }
   }

+ 0 - 2
src/app/journal/journal-stats/info-row/conditions/conditions.component.ts

@@ -57,8 +57,6 @@ export class ConditionsComponent {
         if (result.state === 'update') {
           this.conditions = result.data;
           this.dataAccessor.conditions = this.conditions;
-        } else {
-          throw new Error('DND-ERROR: Invalid state');
         }
         resultSubscription.unsubscribe();
       }

+ 13 - 14
src/app/journal/journal-stats/info-row/conditions/exhaustion-details/exhaustion-details.component.html

@@ -1,20 +1,15 @@
-<div class="details-title">Erschöpfung</div>
+<div class="title">Erschöpfung</div>
 
-<div class="details-content">
+<div class="content">
   Einige Spezialfähigkeiten und Umweltgefahren, wie Hunger oder extreme
   Temperaturen können zu Erschöpfung führen. Jede Stufe fügt einen weiteren
   Malus hinzu, sodass mehrere Mali gleichzeitig möglich sind. Erschöpfung kann
   z.B. durch eine lange Rast reduziert werden.
 </div>
 
-<div class="details-value-container">
-  <div class="details-value" style="margin-top: 1.5rem">
-    {{ exhaustion }}
-  </div>
-  <div class="details-label">aktuelle Erschöpfung</div>
-</div>
+<value-box [value]="exhaustion" [label]="'aktuelle Erschöpfung'"></value-box>
 
-<div class="exhaustion-table">
+<div class="t-2">
   <table class="table table-striped">
     <thead>
       <tr>
@@ -23,23 +18,27 @@
       </tr>
     </thead>
     <tbody>
-      <tr>
+      <tr [ngClass]="{ highlighted: exhaustion === 0 }">
+        <td>0</td>
+        <td>Keine Einschränkung</td>
+      </tr>
+      <tr [ngClass]="{ highlighted: exhaustion === 1 }">
         <td>1</td>
         <td>Nachteil auf Attributwürfe</td>
       </tr>
-      <tr>
+      <tr [ngClass]="{ highlighted: exhaustion === 2 }">
         <td>2</td>
         <td>Bewegungsrate halbiert</td>
       </tr>
-      <tr>
+      <tr [ngClass]="{ highlighted: exhaustion === 3 }">
         <td>3</td>
         <td>Nachteil auf Angriffs- und Rettungswürfe</td>
       </tr>
-      <tr>
+      <tr [ngClass]="{ highlighted: exhaustion === 4 }">
         <td>4</td>
         <td>Bewegungsrate fällt auf 0</td>
       </tr>
-      <tr>
+      <tr [ngClass]="{ highlighted: exhaustion === 5 }">
         <td>5</td>
         <td>Sofortiger Tod</td>
       </tr>

+ 3 - 3
src/app/journal/journal-stats/info-row/conditions/exhaustion-details/exhaustion-details.component.scss

@@ -1,3 +1,3 @@
-.exhaustion-table{
-    margin-top: 2rem,
-}
+.highlighted {
+    border: 2px solid black !important;
+}

+ 6 - 9
src/app/journal/journal-stats/info-row/death-save/death-save-details/death-save-details.component.html

@@ -1,6 +1,6 @@
-<div class="details-title">Todesrettungswürfe</div>
+<div class="title">Todesrettungswürfe</div>
 
-<div class="details-content">
+<div class="content">
   Immer wenn ein Charakter seinen Zug mit 0 Trefferpunkten beginnt und nicht
   stabilisiert wurde, muss er einen Todesrettungswurf ablegen. Ist das Ergebnis
   10 oder höher, ist der Wurf erfolgreich, ansonsten fehlgeschlagen. Beim
@@ -8,11 +8,8 @@
   er.
 </div>
 
-<div class="details-value-container">
-  <div class="details-bold">Eine 1 oder 20 würfeln</div>
-  <div class="details-content">
-    Würfelt ein Charakter eine 1, zählt der Wurf als zwei Fehlschläge. Würfelt
-    er eine 20, erhält er sofort einen Lebenspunkt dazu und ist nicht mehr
-    bewustlos.
-  </div>
+<div class="subheading left">Eine 1 oder 20 würfeln</div>
+<div class="content t-05">
+  Würfelt ein Charakter eine 1, zählt der Wurf als zwei Fehlschläge. Würfelt er
+  eine 20, erhält er sofort einen Lebenspunkt dazu und ist nicht mehr bewustlos.
 </div>

+ 3 - 8
src/app/journal/journal-stats/info-row/initiative/initiative-details/initiative-details.component.html

@@ -1,15 +1,10 @@
-<div class="details-title">Initiative</div>
+<div class="title">Initiative</div>
 
-<div class="details-content">
+<div class="content">
   Der Initiativebonus wird verwendet, um die Initiative des aktuellen Kampfes
   oder einer zeitkritischen Situation zu bestimmen. Jeder Charakter wirft einen
   W20 und addiert seinen Initiativebonus. Der Charakter mit dem höchsten
   Ergebnis darf zuerst agieren.
 </div>
 
-<div class="details-value-container">
-  <div class="details-value" style="margin-top: 1.5rem">
-    {{ initiative }}
-  </div>
-  <div class="details-label">Wert</div>
-</div>
+<value-box [value]="initiative" [label]="'Wert'"></value-box>

+ 21 - 37
src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.html

@@ -1,7 +1,7 @@
-<div class="details-title">Bewegung</div>
+<div class="title">Bewegung</div>
 
-<h4>Laufen</h4>
-<div class="details-content">
+<div class="heading left">Laufen</div>
+<div class="content t-05">
   Die Bewegungsrate gibt an, wie weit ein Charakter pro Runde laufen kann. Die
   Bewegungsrate wird in Fuß angegeben, wobei 5 Fuß 1,5 Metern und somit einem
   Feld entsprechen. Die Bewegung kann an einem Stück verwendet werden, oder in
@@ -9,43 +9,27 @@
   Bewegungsrate.
 </div>
 
-<div class="details-value-container">
-  <div>
-    <div class="details-value" style="margin-top: 1.5rem">
-      {{ movement }}
-    </div>
-    <div class="details-label">Fuß</div>
-  </div>
-  <div>
-    <div class="details-value" style="margin-top: 1.5rem">
-      {{ movement / 5 }}
-    </div>
-    <div class="details-label">Felder</div>
-  </div>
+<div class="value-row">
+  <value-box [value]="movement" [label]="'Fuß'"></value-box>
+  <value-box [value]="movement / 5" [label]="'Felder'"></value-box>
 </div>
 
-<h4>Springen</h4>
-Ein Charakter kann basierend auf seiner Stärke springen. Wenn man sich vor dem
-Sprung 10 Fuß (3 Meter) bewegt hat, kann man die doppelte Distanz springen.
-
-<div class="details-value-container">
-  <div>
-    <div class="details-value" style="margin-top: 1.5rem">
-      {{ strength / 2 }}
-    </div>
-    <div class="details-label">Fuß</div>
-  </div>
-  <div>
-    <div class="details-value" style="margin-top: 1.5rem">
-      {{ strength / 2 / 5 }}
-    </div>
-    <div class="details-label">Felder</div>
-  </div>
+<div class="heading left">Springen</div>
+<div class="content t-05">
+  Ein Charakter kann basierend auf seiner Stärke springen. Wenn man sich vor dem
+  Sprung 10 Fuß (2 Felder) bewegt hat, kann man die doppelte Distanz springen.
+</div>
+<div class="value-row">
+  <value-box [value]="strength / 2" [label]="'Fuß'"></value-box>
+  <value-box [value]="strength / 10" [label]="'Felder'"></value-box>
 </div>
 
-<h4>Umrechnungstabelle</h4>
-
-<div class="distance-table">
+<mat-expansion-panel>
+  <mat-expansion-panel-header>
+    <mat-panel-title
+      >Umrechnungstabelle</mat-panel-title
+    ></mat-expansion-panel-header
+  >
   <table class="table table-striped">
     <thead>
       <tr>
@@ -104,4 +88,4 @@ Sprung 10 Fuß (3 Meter) bewegt hat, kann man die doppelte Distanz springen.
       </tr>
     </tbody>
   </table>
-</div>
+</mat-expansion-panel>

+ 15 - 20
src/app/journal/journal-stats/info-row/movement/movement-details/movement-details.component.scss

@@ -1,23 +1,18 @@
-.distance-table {
-    margin-top: 0.5rem;
-}
+mat-expansion-panel {
+    border: var(--border) !important;
+    border-radius: 10px !important;
+    box-shadow: var(--shadow) !important;
+    margin-top: 2.5rem;
 
-.details-content {
-    margin-top: 0;
-}
+    mat-panel-title {
+        font-size: 1.25rem;
+        font-weight: 600;
+    }
+    table {
+        border: var(--border);
 
-td {
-    margin-left: 1rem;
-}
-
-.details-value-container {
-    display: flex;
-    flex-direction: row;
-    justify-content: space-around;
-    align-items: center;
-    // margin-bottom: 1.5rem;
-    margin-top: 0.5rem;
-}
-h4 {
-    margin-top: 1rem;
+        td {
+            margin-left: 1rem;
+        }
+    }
 }

+ 3 - 8
src/app/journal/journal-stats/info-row/proficiency/proficiency-details/proficiency-details.component.html

@@ -1,14 +1,9 @@
-<div class="details-title">Übungsbonus</div>
+<div class="title">Übungsbonus</div>
 
-<div class="details-content">
+<div class="content">
   Der Übungsbonus wird auf alle Rettungs-, Angriffs- und Fertigkeitswürfe
   addiert, in denen ein Spieler geübt ist. Der Übungsbonus steigt mit der
   Charakterstufe.
 </div>
 
-<div class="details-value-container">
-  <div class="details-value" style="margin-top: 1.5rem">
-    {{ proficiency }}
-  </div>
-  <div class="details-label">Wert</div>
-</div>
+<value-box [value]="proficiency" [label]="'Wert'"></value-box>

+ 1 - 1
src/app/journal/journal-stats/journal-stats.component.html

@@ -1,4 +1,4 @@
-<div class="center">
+<div class="flex-center">
   <div class="stats-container">
     <!-- Attribute and skill container -->
     <attribute-skill-container></attribute-skill-container>

+ 1 - 1
src/app/journal/journal-stats/journal-stats.component.scss

@@ -1,4 +1,4 @@
-.center {
+.flex-center {
     display: flex;
     justify-content: center;
 }

+ 22 - 22
src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.html

@@ -1,10 +1,15 @@
-<h4>Trefferwürfel</h4>
-
-<p>
+<div class="heading-line">
+  <div class="heading left t-0">Trefferwürfel</div>
+  <icon-button
+    [icon]="showEditButtons ? 'cross' : 'edit'"
+    (click)="showEditButtons = !showEditButtons"
+  ></icon-button>
+</div>
+<div class="content">
   Trefferwürfel werden verwendet, um bei einer kurzen Rast Trefferpunkte
   wiederherzustellen. Du kannst eine beliebige Anzahl deiner verfügbaren
   Trefferwürfel verwenden. Sie werden bei einer langen rast wiederhergestellt.
-</p>
+</div>
 <p><b>Würfelart: </b> W{{ hitDice.diceType }}</p>
 
 <div class="hit-dice-container">
@@ -17,22 +22,17 @@
     />
     }
   </div>
-  <button class="edit-button" (click)="showEditButtons = !showEditButtons">
-    <img src="assets/icons/UIIcons/edit.svg" alt="edit" />
-  </button>
+  @if(showEditButtons){
+  <div style="display: flex; flex-direction: column">
+    <icon-button
+      [icon]="'add'"
+      (click)="hitDice.diceNumber = hitDice.diceNumber + 1"
+    ></icon-button>
+    <icon-button
+      [icon]="'remove'"
+      style="margin-top: 1rem"
+      (click)="hitDice.diceNumber = hitDice.diceNumber - 1"
+    ></icon-button>
+  </div>
+  }
 </div>
-@if(showEditButtons){
-<button
-  class="add-button"
-  (click)="hitDice.diceNumber = hitDice.diceNumber + 1"
->
-  +
-</button>
-<button
-  class="remove-button"
-  [ngClass]="{ disabled: hitDice.diceNumber > 1 }"
-  (click)="hitDice.diceNumber = hitDice.diceNumber - 1"
->
-  -
-</button>
-}

+ 29 - 38
src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.scss

@@ -1,53 +1,44 @@
+.heading-line {
+    display: flex;
+    align-items: flex-start;
+    gap: 0.5rem;
+}
 .hit-dice-container {
     display: flex;
     flex-direction: row;
-    justify-content: space-between;
+    gap: 3rem;
 
     .input-container {
         display: flex;
         flex-direction: row;
         flex-wrap: wrap;
-        width: 90%;
+        width: 20rem;
         row-gap: 0.5rem;
-        input {
-            flex: 0 0 15%;
-            max-width: 15%;
-        }
-    }
-
-    button {
-        align-self: flex-start;
-        width: 10%;
+        column-gap: 3rem;
+        // input {
+        //     flex: 0 0 4rem;
+        // }
     }
 }
 
-.edit-button {
-    border: none;
-    background: none;
+input[type="checkbox"] {
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    width: 20px;
+    height: 20px;
+    background: white;
+    border: 1px solid #000;
+    position: relative;
 }
 
-.add-button {
-    background-color: var(--accept);
-    border: none;
-    border-radius: 6px;
-    box-shadow: var(--shadow);
-    height: 2rem;
-    width: 3rem;
-    font-size: 1.5rem;
-    &:hover {
-        background-color: var(--accept-hover);
-    }
-}
-
-.remove-button {
-    background-color: var(--delete);
-    border: none;
-    border-radius: 6px;
-    box-shadow: var(--shadow);
-    height: 2rem;
-    width: 3rem;
-    font-size: 1.5rem;
-    &:hover {
-        background-color: var(--delete-hover);
-    }
+input[type="checkbox"]:checked::after {
+    content: "";
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 12px;
+    height: 12px;
+    background: #815139;
+    transform: translate(-50%, -50%);
 }

+ 3 - 0
src/app/journal/journal-stats/life-container/hit-dice/hit-dice.component.ts

@@ -65,6 +65,9 @@ export class HitDiceComponent {
   }
 
   private emitHitDice(): void {
+    if (this.hitDice.diceUsed > this.hitDice.diceNumber) {
+      this.hitDice.diceUsed = this.hitDice.diceNumber;
+    }
     this.setHitDice.emit(this.hitDice);
   }
 }

+ 27 - 34
src/app/journal/journal-stats/life-container/life/life-details/life-details.component.html

@@ -1,38 +1,31 @@
-<div class="details-title">Trefferpunkte</div>
+<div class="title">Trefferpunkte</div>
 
-<div class="life-container">
-  <div class="life-box">
-    <input type="number" class="life-input" [(ngModel)]="maxHitPoints" />
-    <div for="" class="life-label">Maximale Trefferpunkte</div>
-  </div>
-
-  <div class="life-box">
-    <input
-      type="number"
-      class="life-input"
-      [(ngModel)]="currentHitPoints"
-      (change)="checkValidity()"
-    />
-    <div for="" class="life-label">Momentane Trefferpunkte</div>
-  </div>
-  <div class="life-box">
-    <input type="number" class="life-input" [(ngModel)]="temporaryHitPoints" />
-    <div for="" class="life-label">Temporäre Trefferpunkte</div>
-  </div>
+<div class="value-row t-2 b-15">
+  <value-box
+    [isInput]="true"
+    [(ngModel)]="maxHitPoints"
+    [label]="'Maximale Trefferpunkte'"
+    (change)="checkValidity()"
+  ></value-box>
+  <value-box
+    [isInput]="true"
+    [(ngModel)]="currentHitPoints"
+    [label]="'Momentane Trefferpunkte'"
+    (change)="checkValidity()"
+  ></value-box>
+  <value-box
+    [isInput]="true"
+    [(ngModel)]="temporaryHitPoints"
+    [label]="'Temporäre Trefferpunkte'"
+  ></value-box>
 </div>
-<hit-dice (setHitDice)="setHitDice($event)"></hit-dice>
+<hit-dice style="margin-top: 5rem" (setHitDice)="setHitDice($event)"></hit-dice>
 
-<div class="vertical-button-wrapper-2">
-  <ui-button
-    [type]="'apply'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('update')"
-  ></ui-button>
-  <ui-button
-    [type]="'dismiss'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('dismiss')"
-  ></ui-button>
+<div class="vertical-buttons bottom">
+  <ui-button [color]="'green'" [width]="'w20'" (click)="close('update')">
+    Anpassen
+  </ui-button>
+  <ui-button [color]="'red'" [width]="'w20'" (click)="close('cancel')">
+    Löschen
+  </ui-button>
 </div>

+ 39 - 2
src/app/journal/journal-stats/life-container/life/life-details/life-details.component.scss

@@ -1,8 +1,10 @@
 .life-container {
     display: flex;
-    flex-direction: column;
-    gap: 1.5rem;
+    flex-direction: row;
+    justify-content: space-evenly;
+    // gap: 1.5rem;
     margin-top: 3rem;
+    margin-bottom: 2rem;
 }
 
 .life-box {
@@ -30,3 +32,38 @@
         margin: 0;
     }
 }
+
+hit-dice {
+    margin-top: 1.5rem;
+}
+
+.button-container {
+    height: 9rem;
+    width: 27rem;
+    position: absolute;
+    bottom: 0;
+    display: flex;
+    justify-content: space-evenly;
+    align-items: center;
+    flex-direction: column;
+
+    .confirm {
+        width: 20rem;
+        margin: 0 auto;
+        background-color: var(--accept);
+
+        &:hover {
+            background-color: var(--accept-hover);
+        }
+    }
+
+    .cancel {
+        width: 20rem;
+        margin: 0 auto;
+        background-color: var(--delete);
+
+        &:hover {
+            background-color: var(--delete-hover);
+        }
+    }
+}

+ 5 - 3
src/app/journal/journal-stats/life-container/life/life-details/life-details.component.ts

@@ -36,10 +36,8 @@ export class LifeDetailsComponent {
         temporaryHitPoints: this.temporaryHitPoints,
         hitDice: this.hitDice,
       });
-    } else if (result === 'dismiss') {
+    } else if (result === 'cancel') {
       this.detailsAccessor.closePanel(result);
-    } else {
-      throw new Error('Unknown result: ' + result);
     }
   }
 
@@ -48,4 +46,8 @@ export class LifeDetailsComponent {
 
     this.hitDice = hitDiceData;
   }
+
+  test() {
+    console.log('TEST');
+  }
 }

+ 15 - 6
src/app/journal/journal-stats/life-container/life/life.component.html

@@ -1,6 +1,6 @@
-<div class="life-box">
-  <div class="life-box-name" (click)="openDetailsPanel()">Trefferpunkte</div>
-  <div class="life-box-bar" (click)="openDetailsPanel()">
+<div class="life-box" (click)="openDetailsPanel()">
+  <div class="life-box-name">Trefferpunkte</div>
+  <div class="life-box-bar">
     <div
       class="life-box-bar-current"
       [style.width.%]="currentHitPointsPercentage"
@@ -19,13 +19,22 @@
     </div>
   </div>
   <div class="life-box-buttons">
-    <button class="life-button add" (click)="addHitPoints()">
+    <button
+      class="life-button add"
+      (click)="$event.stopPropagation(); addHitPoints()"
+    >
       <img src="assets/icons/UIIcons/heal.svg" alt="heal" />
     </button>
-    <button class="life-button temp" (click)="addTemporaryHitPoints()">
+    <button
+      class="life-button temp"
+      (click)="$event.stopPropagation(); addTemporaryHitPoints()"
+    >
       <img src="assets/icons/UIIcons/temporary.svg" alt="temporary" />
     </button>
-    <button class="life-button remove" (click)="removeHitPoints()">
+    <button
+      class="life-button remove"
+      (click)="$event.stopPropagation(); removeHitPoints()"
+    >
       <img src="assets/icons/UIIcons/damage.svg" alt="damage" />
     </button>
   </div>

+ 1 - 0
src/app/journal/journal-stats/life-container/life/life.component.scss

@@ -5,6 +5,7 @@
     background-color: var(--field-background-color);
     box-shadow: var(--shadow);
     border-radius: 10px;
+    cursor: pointer;
 }
 
 .life-box-name {

+ 2 - 3
src/app/journal/journal-stats/life-container/life/life.component.ts

@@ -29,6 +29,7 @@ export class LifeComponent {
     this.maxHitPoints = hitPointsData.maxHitPoints;
     this.currentHitPoints = hitPointsData.currentHitPoints;
     this.temporaryHitPoints = hitPointsData.temporaryHitPoints;
+    this.hitDice = this.dataAccessor.hitDice;
     this.calculatePercentages();
   }
 
@@ -90,10 +91,8 @@ export class LifeComponent {
           console.log('HITDICE IN LIFE-RESPONSE: ', this.hitDice);
           this.calculatePercentages();
           this.updateDatabase();
-        } else if (result.state === 'dismiss') {
+        } else if (result.state === 'cancel') {
           // Do nothing
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
         }
         resultSubscription.unsubscribe();
       }

+ 169 - 0
src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.html

@@ -0,0 +1,169 @@
+<div class="dimensions">
+  <div class="shadow-box">
+    <div class="title t-0">Ausgewählte Zauber</div>
+    <hr style="margin-bottom: 0; margin: 1.5rem 2rem 0 2rem" />
+    <div class="heading-list">
+      <div>Kosten</div>
+      <div>Name</div>
+      <div>Stufe</div>
+      <div>Bonus</div>
+      <div>Effekt</div>
+      <div>Reichweite</div>
+    </div>
+  </div>
+  <div id="spells-table" class="item-list table-content">
+    @for(spell of preparedSpells; let index = $index; track spell){
+    <div
+      matRipple
+      class="spell-item"
+      [ngClass]="{ selected: checkedSpells[index] }"
+      (click)="checkedSpells[index] = !checkedSpells[index]"
+    >
+      <!--  Range Icon -->
+      <ng-container
+        [ngTemplateOutlet]="costTemplate"
+        [ngTemplateOutletContext]="{ spell: spell }"
+      ></ng-container>
+      <div class="vertical-line"></div>
+
+      <!-- Name -->
+      <ng-container
+        [ngTemplateOutlet]="spellNameTemplate"
+        [ngTemplateOutletContext]="{ spell: spell }"
+      ></ng-container>
+      <div class="vertical-line"></div>
+
+      <!-- Level -->
+      <ng-container
+        [ngTemplateOutlet]="spellLevelTemplate"
+        [ngTemplateOutletContext]="{ spell: spell }"
+      ></ng-container>
+      <div class="vertical-line"></div>
+
+      <!-- Attack -->
+      <ng-container
+        [ngTemplateOutlet]="spellAttackTemplate"
+        [ngTemplateOutletContext]="{ spell: spell }"
+      ></ng-container>
+      <div class="vertical-line"></div>
+
+      <!-- Damage/Heal -->
+      <ng-container
+        [ngTemplateOutlet]="spellDamageTemplate"
+        [ngTemplateOutletContext]="{ spell: spell }"
+      ></ng-container>
+      <div class="vertical-line"></div>
+
+      <!-- Range -->
+      <ng-container
+        [ngTemplateOutlet]="spellRangeTemplate"
+        [ngTemplateOutletContext]="{ spell: spell }"
+      ></ng-container>
+    </div>
+    }@empty{
+    <div
+      style="
+        text-align: center;
+        margin-top: 3rem;
+        font-size: 1.25rem;
+        font-weight: 500;
+      "
+    >
+      Noch keine Zauber vorbereitet.
+      <br />
+      Dies kannst du im Menü <i><b>Zauber</b></i> tun.
+    </div>
+    }
+  </div>
+
+  <div class="horizontal-buttons">
+    <ui-button [color]="'green'" style="width: 40%" (click)="update()">
+      Bestätigen
+    </ui-button>
+    <ui-button [color]="'red'" style="width: 40%" (click)="cancel()">
+      Abbrechen
+    </ui-button>
+  </div>
+</div>
+<!-- Templates -->
+
+<!-- COST -->
+<ng-template #costTemplate let-spell="spell">
+  <div class="bold">
+    <span *ngIf="spell.cost === 'action'">A</span>
+    <span *ngIf="spell.cost === 'bonus'">B</span>
+    <span *ngIf="spell.cost === 'reaction'">R</span>
+  </div>
+</ng-template>
+
+<!-- NAME -->
+<ng-template #spellNameTemplate let-spell="spell">
+  <div>
+    <div class="bold">{{ spell.german }}</div>
+    <div class="bold small">
+      <span *ngIf="spell.needsConcentration">C | </span>
+      <span *ngIf="spell.needsVerbal">V </span>
+      <span *ngIf="spell.needsSomatic">G </span>
+      <span *ngIf="spell.needsMaterial">M </span>
+      <div></div>
+    </div>
+  </div>
+</ng-template>
+
+<!-- Level -->
+<ng-template #spellLevelTemplate let-spell="spell">
+  <div *ngIf="spell.level !== 0" class="bold">{{ spell.level }}</div>
+  <div *ngIf="spell.level === 0" class="bold">Trick</div>
+</ng-template>
+
+<!-- Attack -->
+<ng-template #spellAttackTemplate let-spell="spell">
+  <div>
+    <div *ngIf="spell.needsSavingThrow">
+      <div>
+        {{ attributes[spell.savingThrowAttribute!] }}
+      </div>
+      <div>{{ spellSaveDC }}</div>
+    </div>
+    <div *ngIf="spell.needsAttackRoll">
+      <div>{{ spellAttackBonus }}</div>
+    </div>
+    <div *ngIf="!spell.needsSavingThrow && !spell.needsAttackRoll">-</div>
+  </div>
+</ng-template>
+
+<!-- Damage/Heal -->
+<ng-template #spellDamageTemplate let-spell="spell">
+  <div>
+    @if(spell.doesDamage){
+    <div *ngFor="let damage of spell.damage; let index = index">
+      <span>{{ damage.diceNumber }} {{ damage.diceType }} </span>
+      <span>
+        <icon [size]="'xs'" [type]="'damage'" [icon]="damage.damageType"></icon>
+      </span>
+    </div>
+    } @if(spell.doesHeal){
+    <div class="heal">
+      <span>{{ spell.heal.diceNumber }} {{ spell.heal.diceType }} </span>
+      <span *ngIf="spell.heal.additionalHeal"
+        >+{{ spell.heal.additionalHeal }}
+      </span>
+      <span>
+        <icon [size]="'xs'" [type]="'damage'" [icon]="'heal'"></icon>
+      </span>
+    </div>
+    }
+  </div>
+</ng-template>
+
+<!-- Range -->
+<ng-template #spellRangeTemplate let-spell="spell">
+  <div class="spell-range">
+    <div *ngIf="spell.isRanged">{{ spell.range }} ft.</div>
+    <div *ngIf="!spell.isRanged">Berührung</div>
+
+    <div *ngIf="spell.hasAreaOfEffect">
+      <span>{{ spell.radius }} ft. {{ areas[spell.areaOfEffectType] }} </span>
+    </div>
+  </div>
+</ng-template>

+ 97 - 0
src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.scss

@@ -0,0 +1,97 @@
+.dimensions {
+    height: 50rem;
+    width: 45rem;
+    padding: 0;
+    overflow: hidden;
+}
+
+.heading-list {
+    flex: 0 0 3rem;
+    padding: 10px 2rem;
+    display: grid;
+    grid-template-columns: 6fr 18fr 11fr 8fr 20fr 16fr;
+    text-align: center;
+    font-weight: 700;
+}
+
+.shadow-box {
+    box-shadow: var(--shadow-bottom);
+    position: relative;
+    padding-top: 1rem;
+}
+
+.item-list {
+    height: 36rem;
+    padding: 0 1rem;
+    display: block;
+    background: transparent;
+    border-radius: 4px;
+    overflow: auto;
+}
+
+.spell-item {
+    box-sizing: border-box;
+    margin: 15px 10px;
+    color: rgba(0, 0, 0, 0.87);
+    display: grid;
+    grid-template-columns: 6fr 0.1fr 20fr 0.1fr 10fr 0.1fr 8fr 0.1fr 20fr 0.1fr 16fr;
+    align-items: center;
+    justify-content: space-between;
+    box-sizing: border-box;
+    background: var(--items);
+    border-radius: 10px;
+    border: var(--border);
+    font-size: 1rem;
+    font-weight: 600;
+    text-align: center;
+    cursor: pointer;
+    box-shadow:
+        0 5px 5px -3px rgba(0, 0, 0, 0.2),
+        0 8px 8px 1px rgba(0, 0, 0, 0.14),
+        0 3px 10px 2px rgba(0, 0, 0, 0.12);
+    transition: background-color 0.2s ease-in-out;
+    &:hover {
+        background-color: #f8d8c6;
+    }
+}
+
+.selected {
+    background-color: #f8d8c6;
+    border: 3px solid var(--primary);
+    &:hover {
+        background-color: var(--items);
+    }
+}
+
+.bold {
+    font-weight: bold;
+}
+
+.small {
+    font-size: 0.625rem;
+}
+
+.large {
+    font-size: 1.125rem;
+}
+
+.vertical-line {
+    position: relative;
+    width: 1px;
+    height: 3.5rem;
+}
+
+.vertical-line::before {
+    content: "";
+    position: absolute;
+    top: 15%;
+    bottom: 15%;
+    left: 0;
+    border-left: 1px solid black;
+}
+
+.horizontal-buttons {
+    box-shadow: var(--shadow-top);
+    position: relative;
+    padding: 1.5rem 3rem;
+}

+ 23 - 0
src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.spec.ts

@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { FavoriteSpellsModalComponent } from './favorite-spells-modal.component';
+
+describe('FavoriteSpellsModalComponent', () => {
+  let component: FavoriteSpellsModalComponent;
+  let fixture: ComponentFixture<FavoriteSpellsModalComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [FavoriteSpellsModalComponent]
+    })
+    .compileComponents();
+    
+    fixture = TestBed.createComponent(FavoriteSpellsModalComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 60 - 0
src/app/journal/journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component.ts

@@ -0,0 +1,60 @@
+import { Component, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { Spell } from 'src/interfaces/spell';
+import { ModalService } from 'src/services/modal/modal.service';
+
+@Component({
+  selector: 'app-favorite-spells-modal',
+  templateUrl: './favorite-spells-modal.component.html',
+  styleUrl: './favorite-spells-modal.component.scss',
+})
+export class FavoriteSpellsModalComponent {
+  @Input() public preparedSpells: Spell[] = [];
+  @Input() public selectedSpells: Spell[] = [];
+  @Input() public spellAttackBonus: string = '0';
+  @Input() public spellSaveDC: number = 0;
+
+  checkedSpells: boolean[] = [];
+
+  public attributes: any = {
+    strength: 'STR',
+    dexterity: 'DEX',
+    constitution: 'CON',
+    intelligence: 'INT',
+    wisdom: 'WIS',
+    charisma: 'CHA',
+  };
+
+  public areas: any = {
+    cone: 'Kegel',
+    sphere: 'Kugel',
+    circle: 'Kreis',
+    line: 'Linie',
+    square: 'Quadrat',
+    cube: 'Würfel',
+  };
+
+  public constructor(private modalAccessor: ModalService) {}
+
+  public ngOnInit(): void {
+    this.checkedSpells = Array(this.preparedSpells.length).fill(false);
+    this.preparedSpells.forEach((spell, index) => {
+      this.checkedSpells[index] = this.selectedSpells.some(
+        (selectedSpell) => selectedSpell.id === spell.id
+      );
+    });
+  }
+
+  public update(): void {
+    const spells: Spell[] = this.preparedSpells.filter(
+      (spell, index) => this.checkedSpells[index]
+    );
+    this.modalAccessor.handleModalClosing('update', spells);
+    this.checkedSpells = [];
+  }
+
+  public cancel(): void {
+    this.modalAccessor.handleModalClosing('cancel', undefined);
+    this.checkedSpells = [];
+  }
+}

+ 3 - 5
src/app/journal/journal-stats/weapons-container/spell-table/spell-details/spell-details.component.html

@@ -2,9 +2,7 @@
 
 <div class="details-scrollcontainer">
   <div class="details-subheading">Beschreibung</div>
-  <div class="details-content">
-    {{ spell.description }}
-  </div>
+  <div class="details-content" [innerHTML]="spell.description_de"></div>
 
   <div class="details-subheading">Komponenten:</div>
   <div class="details-content-small">
@@ -69,9 +67,9 @@
     (click)="close('delete')"
   ></ui-button>
   <ui-button
-    [type]="'dismiss'"
+    [type]="'cancel'"
     [size]="'xlarge'"
     [color]="'primary'"
-    (click)="close('dismiss')"
+    (click)="close('cancel')"
   ></ui-button>
 </div>

+ 82 - 94
src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.html

@@ -1,6 +1,6 @@
 <div class="spell-box">
   <div class="heading-list">
-    <div>Typ</div>
+    <div>Kosten</div>
     <div>Name</div>
     <div>Stufe</div>
     <div>Bonus</div>
@@ -17,7 +17,7 @@
     <div class="item" cdkDrag (click)="showFullSpellcard(index)">
       <!--  Range Icon -->
       <ng-container
-        [ngTemplateOutlet]="distanceIconTemplate"
+        [ngTemplateOutlet]="costTemplate"
         [ngTemplateOutletContext]="{ spell: spell }"
       ></ng-container>
       <div class="vertical-line"></div>
@@ -60,7 +60,7 @@
     <div
       style="
         text-align: center;
-        margin-top: 2rem;
+        margin-top: 3rem;
         font-size: 1.25rem;
         font-weight: 500;
       "
@@ -69,108 +69,96 @@
     </div>
     }
   </div>
-  <input
-    id="typeahead-basic"
-    type="text"
-    [class]="showInput ? 'spellInput' : 'spellInput hidden'"
-    (selectItem)="onSpellSelect($event.item); $event.preventDefault()"
-    [(ngModel)]="newSpellName"
-    [ngbTypeahead]="search"
-    placement="top-start"
-    placeholder="Name des vorbereiteten Zaubers"
-  />
-  <div class="footer"></div>
-  <button
-    [class]="showInput ? 'slide-button cancel-button' : 'slide-button'"
-    (click)="toggleInput()"
-  >
-    @if(showInput){ Abbrechen} @else { Hinzufügen}
-  </button>
-</div>
-
-<!-- Templates -->
+  <div class="footer">
+    <ui-button [color]="'green'" style="width: 80%" (click)="openModal()">
+      Bearbeiten
+    </ui-button>
+  </div>
 
-<!-- ICON -->
-<ng-template #distanceIconTemplate let-spell="spell">
-  <icon
-    [size]="'s'"
-    [type]="'weapon'"
-    [icon]="spell.isRanged ? 'distance' : 'touch'"
-  ></icon>
-</ng-template>
+  <!-- Templates -->
 
-<!-- NAME -->
-<ng-template #spellNameTemplate let-spell="spell">
-  <div>
-    <div class="bold">{{ spell.german }}</div>
-    <div class="bold small">
+  <!-- COST -->
+  <ng-template #costTemplate let-spell="spell">
+    <div class="bold">
       <span *ngIf="spell.cost === 'action'">A</span>
-      <span *ngIf="spell.cost === 'bonus'">B</span>
+      <span *ngIf="spell.cost === 'bonus action'">B</span>
       <span *ngIf="spell.cost === 'reaction'">R</span>
-      <span> | </span>
-      <span *ngIf="spell.needsConcentration">C | </span>
-      <span *ngIf="spell.needsVerbal">V </span>
-      <span *ngIf="spell.needsSomatic">G </span>
-      <span *ngIf="spell.needsMaterial">M </span>
-      <div></div>
     </div>
-  </div>
-</ng-template>
+  </ng-template>
 
-<!-- Level -->
-<ng-template #spellLevelTemplate let-spell="spell">
-  <div *ngIf="spell.level !== 0" class="bold">{{ spell.level }}</div>
-  <div *ngIf="spell.level === 0" class="bold">Trick</div>
-</ng-template>
-
-<!-- Attack -->
-<ng-template #spellAttackTemplate let-spell="spell">
-  <div>
-    <div *ngIf="spell.needsSavingThrow">
-      <div>
-        {{ attributes[spell.savingThrowAttribute!] }}
+  <!-- NAME -->
+  <ng-template #spellNameTemplate let-spell="spell">
+    <div>
+      <div class="bold">{{ spell.german }}</div>
+      <div class="bold small">
+        <span *ngIf="spell.needsConcentration">C | </span>
+        <span *ngIf="spell.needsVerbal">V </span>
+        <span *ngIf="spell.needsSomatic">G </span>
+        <span *ngIf="spell.needsMaterial">M </span>
+        <div></div>
       </div>
-      <div>{{ spellSaveDC }}</div>
-    </div>
-    <div *ngIf="spell.needsAttackRoll">
-      <div>{{ spellAttackBonus }}</div>
     </div>
-    <div *ngIf="!spell.needsSavingThrow && !spell.needsAttackRoll">-</div>
-  </div>
-</ng-template>
+  </ng-template>
 
-<!-- Damage/Heal -->
-<ng-template #spellDamageTemplate let-spell="spell">
-  <div>
-    @if(spell.doesDamage){
-    <div *ngFor="let damage of spell.damage; let index = index">
-      <span>{{ damage.diceNumber }} {{ damage.diceType }} </span>
-      <span>
-        <icon [size]="'xs'" [type]="'damage'" [icon]="damage.damageType"></icon>
-      </span>
+  <!-- Level -->
+  <ng-template #spellLevelTemplate let-spell="spell">
+    <div *ngIf="spell.level !== 0" class="bold">{{ spell.level }}</div>
+    <div *ngIf="spell.level === 0" class="bold">Trick</div>
+  </ng-template>
+
+  <!-- Attack -->
+  <ng-template #spellAttackTemplate let-spell="spell">
+    <div>
+      <div *ngIf="spell.needsSavingThrow">
+        <div>
+          {{ attributes[spell.savingThrowAttribute!] }}
+        </div>
+        <div>{{ spellSaveDC }}</div>
+      </div>
+      <div *ngIf="spell.needsAttackRoll">
+        <div>{{ spellAttackBonus }}</div>
+      </div>
+      <div *ngIf="!spell.needsSavingThrow && !spell.needsAttackRoll">-</div>
     </div>
-    } @if(spell.doesHeal){
-    <div class="heal">
-      <span>{{ spell.heal.diceNumber }} {{ spell.heal.diceType }} </span>
-      <span *ngIf="spell.heal.additionalHeal"
-        >+{{ spell.heal.additionalHeal }}
-      </span>
-      <span>
-        <icon [size]="'xs'" [type]="'damage'" [icon]="'heal'"></icon>
-      </span>
+  </ng-template>
+
+  <!-- Damage/Heal -->
+  <ng-template #spellDamageTemplate let-spell="spell">
+    <div>
+      @if(spell.doesDamage){
+      <div *ngFor="let damage of spell.damage; let index = index">
+        <span>{{ damage.diceNumber }} {{ damage.diceType }} </span>
+        <span>
+          <icon
+            [size]="'xs'"
+            [type]="'damage'"
+            [icon]="damage.damageType"
+          ></icon>
+        </span>
+      </div>
+      } @if(spell.doesHeal){
+      <div class="heal">
+        <span>{{ spell.heal.diceNumber }} {{ spell.heal.diceType }} </span>
+        <span *ngIf="spell.heal.additionalHeal"
+          >+{{ spell.heal.additionalHeal }}
+        </span>
+        <span>
+          <icon [size]="'xs'" [type]="'damage'" [icon]="'heal'"></icon>
+        </span>
+      </div>
+      }
     </div>
-    }
-  </div>
-</ng-template>
+  </ng-template>
 
-<!-- Range -->
-<ng-template #spellRangeTemplate let-spell="spell">
-  <div class="spell-range">
-    <div *ngIf="spell.isRanged">{{ spell.range }} ft.</div>
-    <div *ngIf="!spell.isRanged">Berührung</div>
+  <!-- Range -->
+  <ng-template #spellRangeTemplate let-spell="spell">
+    <div class="spell-range">
+      <div *ngIf="spell.isRanged">{{ spell.range }} ft.</div>
+      <div *ngIf="!spell.isRanged">Berührung</div>
 
-    <div *ngIf="spell.hasAreaOfEffect">
-      <span>{{ spell.radius }} ft. {{ areas[spell.areaOfEffectType] }} </span>
+      <div *ngIf="spell.hasAreaOfEffect">
+        <span>{{ spell.radius }} ft. {{ areas[spell.areaOfEffectType] }} </span>
+      </div>
     </div>
-  </div>
-</ng-template>
+  </ng-template>
+</div>

+ 8 - 2
src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.scss

@@ -1,9 +1,8 @@
 .heading-list {
   flex: 0 0 3rem;
-  // padding: 0.5rem 0.625rem;
   padding: 10px 0.625rem;
   display: grid;
-  grid-template-columns: 6fr 20fr 10fr 8fr 20fr 16fr;
+  grid-template-columns: 4fr 17fr 9fr 8fr 19fr 16fr;
   text-align: center;
   font-weight: 700;
   box-shadow: var(--shadow-bottom);
@@ -89,6 +88,8 @@
   bottom: 1rem;
   right: 10%;
   width: 80%;
+  font-size: 1.25rem;
+  font-weight: 600;
   border-radius: 10px;
   background: var(--accept);
   transition: width 0.25s ease-in-out;
@@ -122,9 +123,14 @@
   right: 10%;
   width: 80%;
   border-radius: 10px;
+  padding-left: 0.875rem;
   box-shadow: var(--shadow);
 }
 
+.hidden {
+  box-shadow: none;
+}
+
 //// Drag and Drop
 
 .cdk-drag-preview {

+ 31 - 89
src/app/journal/journal-stats/weapons-container/spell-table/spell-table.component.ts

@@ -9,6 +9,7 @@ import { SpellModalComponent } from 'src/app/journal/spell-modal/spell-modal.com
 import { FullSpellcardComponent } from 'src/app/shared-components/full-spellcard/full-spellcard.component';
 import { Observable, OperatorFunction } from 'rxjs';
 import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
+import { FavoriteSpellsModalComponent } from './favorite-spells-modal/favorite-spells-modal.component';
 
 @Component({
   selector: 'spell-table',
@@ -24,9 +25,8 @@ export class SpellTableComponent {
 
   public spells!: Spell[];
   private preparedSpells!: Spell[];
-  private preparedSpellsNames: string[] = [];
+  // private preparedSpellsNames: string[] = [];
   public newSpellName: string = '';
-  public showInput: boolean = false;
 
   public attributes: any = {
     strength: 'STR',
@@ -55,7 +55,6 @@ export class SpellTableComponent {
   public ngOnInit(): void {
     this.spells = this.dataAccessor.favoriteSpells;
     this.preparedSpells = this.dataAccessor.getAllPreparedSpells();
-    this.preparedSpellsNames = this.preparedSpells.map((spell) => spell.german);
     this.subscribeToData();
   }
 
@@ -67,89 +66,32 @@ export class SpellTableComponent {
     const resultSubscription = this.modalAccessor.result$.subscribe(
       (result) => {
         resultSubscription.unsubscribe();
-        if (result.state === 'delete') {
+        if (result.state === 'remove') {
           this.spells.splice(spellIndex, 1);
           this.updateSpellsInDatabase();
-        } else if (result.state !== 'cancel') {
-          throw new Error('Unexpected result state, please send a bug report.');
         }
       }
     );
   }
 
-  // LEGACY CODE
-  public openDetailsPanel(index: number): void {
-    this.detailsAccessor.openPanel(SpellDetailsComponent, {
-      spell: this.spells[index],
-      modifiers: {
-        attackBonus: this.spellAttackBonus,
-        saveDC: this.spellSaveDC,
-      },
-    });
-    const resultSubscription = this.detailsAccessor.result$.subscribe(
-      (result) => {
-        if (result.state === 'delete') {
-          this.deleteSpell(index);
-        } else if (result.state === 'update') {
-          this.openModal(true, index);
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
-        }
-        resultSubscription.unsubscribe();
-      }
-    );
-  }
-  //
-
-  public openModal(isUpdate: boolean, index?: number): void {
-    this.modalAccessor.openModal(SpellModalComponent, {
-      spell:
-        index !== undefined
-          ? JSON.parse(JSON.stringify(this.spells[index]))
-          : undefined,
-      isUpdate: isUpdate,
+  public openModal(): void {
+    this.modalAccessor.openModal(FavoriteSpellsModalComponent, {
+      preparedSpells: this.preparedSpells,
+      selectedSpells: this.spells,
+      spellAttackBonus: this.spellAttackBonus,
+      spellSaveDC: this.spellSaveDC,
     });
     const resultSubscription = this.modalAccessor.result$.subscribe(
       (result) => {
         if (result.state === 'update') {
-          this.updateSpell(result.data, index!);
-        } else if (result.state === 'add') {
-          this.addSpell(result.data);
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
+          this.spells = result.data;
+          this.updateSpellsInDatabase();
         }
         resultSubscription.unsubscribe();
       }
     );
   }
 
-  public toggleInput(): void {
-    this.showInput = !this.showInput;
-    this.newSpellName = '';
-  }
-
-  public onSpellSelect(spellname: any): void {
-    const newSpell = this.preparedSpells.filter(
-      (spell) => spell.german === spellname
-    );
-    if (newSpell.length !== 1) {
-      throw new Error('Spell not found.');
-    } else {
-      this.addSpell(newSpell[0]);
-    }
-    this.newSpellName = '';
-  }
-
-  public addSpell(spell: Spell) {
-    this.spells.push(spell);
-    this.updateSpellsInDatabase();
-  }
-
-  public updateSpell(spell: Spell, index: number): void {
-    this.spells[index] = spell;
-    this.updateSpellsInDatabase();
-  }
-
   public deleteSpell(index: number): void {
     this.spells.splice(index, 1);
     this.updateSpellsInDatabase();
@@ -194,24 +136,24 @@ export class SpellTableComponent {
     });
   }
 
-  public search: OperatorFunction<string, readonly string[]> = (
-    text$: Observable<string>
-  ) =>
-    text$.pipe(
-      debounceTime(200),
-      distinctUntilChanged(),
-      map((term) =>
-        term.length < 2
-          ? []
-          : this.preparedSpellsNames
-              .filter((v) => v.toLowerCase().indexOf(term.toLowerCase()) > -1)
-              .filter(
-                (v) =>
-                  !this.spells.some(
-                    (spell) => spell.german.toLowerCase() === v.toLowerCase()
-                  )
-              )
-              .slice(0, 5)
-      )
-    );
+  // public search: OperatorFunction<string, readonly string[]> = (
+  //   text$: Observable<string>
+  // ) =>
+  //   text$.pipe(
+  //     debounceTime(200),
+  //     distinctUntilChanged(),
+  //     map((term) =>
+  //       term.length < 2
+  //         ? []
+  //         : this.preparedSpellsNames
+  //             .filter((v) => v.toLowerCase().indexOf(term.toLowerCase()) > -1)
+  //             .filter(
+  //               (v) =>
+  //                 !this.spells.some(
+  //                   (spell) => spell.german.toLowerCase() === v.toLowerCase()
+  //                 )
+  //             )
+  //             .slice(0, 5)
+  //     )
+  //   );
 }

+ 46 - 61
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.html

@@ -1,23 +1,29 @@
-<div class="details-title">{{ weapon?.name }}</div>
+<div class="title">{{ weapon?.name }}</div>
 
-<div class="property-title">Angriff</div>
+<div class="subheading left">Angriff</div>
 
-<div>Angriffsmodifikator:</div>
-{{ weapon?.attackBonus }}
+<div class="flex-row">
+  <div class="label">Modifikator:</div>
+  <span>{{ weapon?.attackBonus }}</span>
+</div>
 
 <!-- Singel Damage -->
-<div *ngIf="!weapon?.isVersatile">
-  Schaden:
-  <div *ngFor="let damage of weapon?.damage; let index = index">
-    {{ damage.diceNumber }} {{ damage.diceType }} {{ damage.damageType }}
-    <span *ngIf="index === 0 && damageModifier !== '0'">
-      {{ damageModifier }}
-    </span>
-  </div>
+@if(!weapon?.isVersatile){
+<div class="flex-row">
+  <div class="label">Schaden:</div>
+  @for(damage of weapon?.damage; let index = $index; track damage){
+  {{ damage.diceNumber }} {{ damage.diceType }}
+  <span *ngIf="index === 0 && damageModifier !== '0'">
+    {{ damageModifier }}
+  </span>
+  {{ damageTranslator[damage.damageType] }}
+
+  }
 </div>
+}
 
 <!-- Versatility Damage -->
-<div *ngIf="weapon?.isVersatile">
+<div *ngIf="weapon?.isVersatile" class="label">
   Einhändiger Schaden:
   <div *ngFor="let damage of weapon?.damage">
     {{ damage.diceNumber }} {{ damage.diceType }} {{ damage.damageType }}
@@ -32,32 +38,9 @@
   </div>
 </div>
 
-<!-- Ranged -->
-<div *ngIf="weapon?.isRanged">
-  Reichweite:
-  {{ weapon?.range }}
-</div>
-
-<!-- Thrown -->
-<div *ngIf="weapon?.canBeThrown">
-  Wurfweite:
-  {{ weapon?.throwRange }}
-</div>
-
 <!-- Magical -->
 
-<div *ngIf="weapon?.isMagical">
-  Magischer Modifikator:
-  {{ weapon?.magicBonus }}
-</div>
-
-<!-- Weight -->
-<div>
-  Gewicht:
-  {{ weapon?.weight }}
-</div>
-
-<div class="property-title">Eigenschaften</div>
+<div class="subheading left">Eigenschaften</div>
 <div class="weapon-properties">
   <span *ngIf="weapon?.proficient">Geübt </span>
   <span *ngIf="weapon?.isRanged">Fernkampf </span>
@@ -68,30 +51,32 @@
   <span *ngIf="weapon?.isMagical">Magisch </span>
 </div>
 
-<!-- Description -->
-<div class="property-title">Beschreibung</div>
-<div class="weapon-description">
-  <!-- TODO: realize -->
-  bla
+@if(weapon?.isRanged || weapon?.canBeThrown){
+<div class="subheading left">Reichweite</div>
+
+<!-- Ranged -->
+<div *ngIf="weapon?.isRanged">
+  Reichweite:
+  {{ weapon?.range }}
+</div>
+
+<!-- Thrown -->
+<div *ngIf="weapon?.canBeThrown">
+  Wurfweite:
+  {{ weapon?.throwRange }}
 </div>
+}
 
-<div class="vertical-button-wrapper-3">
-  <ui-button
-    [type]="'edit'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('update')"
-  ></ui-button>
-  <ui-button
-    [type]="'delete'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('delete')"
-  ></ui-button>
-  <ui-button
-    [type]="'dismiss'"
-    [size]="'xlarge'"
-    [color]="'primary'"
-    (click)="close('dismiss')"
-  ></ui-button>
+<!-- Description -->
+@if(weapon?.description != ""){
+<div class="subheading left">Beschreibung</div>
+<p class="content" [innerHTML]="weapon?.description"></p>
+}
+<div class="vertical-buttons bottom">
+  <ui-button [color]="'green'" [width]="'w20'" (click)="close('update')">
+    Anpassen
+  </ui-button>
+  <ui-button [color]="'red'" [width]="'w20'" (click)="close('delete')">
+    Löschen
+  </ui-button>
 </div>

+ 8 - 3
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.scss

@@ -1,6 +1,11 @@
-.property-title{
+.property-title {
     font-size: 1.25rem;
     font-weight: bold;
     margin-top: 1.5rem;
-    text-align:center;
-}
+    text-align: center;
+}
+
+.label {
+    width: 8rem;
+    font-weight: 500;
+}

+ 17 - 2
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-details/weapon-details.component.ts

@@ -8,11 +8,26 @@ import { Weapon } from 'src/interfaces/weapon';
   styleUrls: ['./weapon-details.component.scss'],
 })
 export class WeaponDetailsComponent {
-  public constructor(public detailsAccessor: DetailsService) {}
-
   @Input() weapon: Weapon | undefined;
   @Input() damageModifier: string = '0';
 
+  public damageTranslator: any = {
+    bludgeoning: 'Wucht',
+    piercing: 'Stich',
+    slashing: 'Hieb',
+    fire: 'Feuer',
+    cold: 'Kälte',
+    lightning: 'Blitz',
+    poison: 'Gift',
+    acid: 'Säure',
+    necrotic: 'Nekrotisch',
+    psychic: 'Psychisch',
+    holy: 'Heilig',
+    divine: 'Göttlich',
+    force: 'Kraft',
+  };
+
+  public constructor(public detailsAccessor: DetailsService) {}
   public close(result: string): void {
     this.detailsAccessor.closePanel(result);
   }

+ 252 - 182
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.html

@@ -1,200 +1,270 @@
-<div class="modal-dimensions">
-  <h2 style="text-align: center">
+<div class="dimensions">
+  <div class="title">
     @if(isUpdate){Waffe bearbeiten} @else{Waffe hinzufügen}
-  </h2>
-
-  <div class="add-form-group">
-    <div class="input-element">
-      <label for="weaponName">Name</label>
-      <input type="text" class="add-input" id="weaponName" [(ngModel)]="name" />
-    </div>
-    <div class="form-element-row">
-      <div class="checkbox-element">
-        <input type="checkbox" [(ngModel)]="proficient" />
-        <label for="weaponProficient">Geübt</label>
-      </div>
-      <div class="checkbox-element">
-        <input type="checkbox" [(ngModel)]="isFinesse" />
-        <label for="weaponFinesse">Finesse</label>
-      </div>
-      <div class="checkbox-element">
-        <input type="checkbox" [(ngModel)]="isVersatile" />
-        <label for="Vielseitig">Vielseitig</label>
-      </div>
-      <div class="checkbox-element">
-        <input type="checkbox" [(ngModel)]="isTwoHanded" />
-        <label for="weaponTwoHanded">Zweihändig</label>
-      </div>
-      <div class="checkbox-element">
-        <input type="checkbox" [(ngModel)]="isRanged" />
-        <label for="weaponRanged">Fernkampf</label>
-      </div>
-      <div class="checkbox-element">
-        <select [(ngModel)]="weight">
-          <option *ngFor="let weight of weights" [value]="weight">
-            {{ weight }}
-          </option>
-        </select>
-        <label>Gewicht</label>
-      </div>
-      <div class="checkbox-element">
-        <input type="checkbox" [(ngModel)]="canBeThrown" />
-        <label for="weaponRanged">Wurfwaffe</label>
-      </div>
-      <div class="checkbox-element">
-        <input type="checkbox" [(ngModel)]="isMagical" />
-        <label>Magisch</label>
-      </div>
-    </div>
+  </div>
 
-    <div class="input-element">
-      <label for="weaponAttackBonus">Angriffsbonus</label>
-      <select [(ngModel)]="attackBonus">
-        <option *ngFor="let attackBonus of attackBonuses" [value]="attackBonus">
-          {{ attackBonus }}
-        </option>
-      </select>
-    </div>
+  <div class="content">
+    <div class="input-label">Name</div>
+    <mat-form-field appearance="outline" class="w-100">
+      <input matInput [(ngModel)]="name" />
+    </mat-form-field>
+    <hr />
 
-    <div class="input-element" *ngIf="isMagical">
-      <label>Magischer Modifikator</label>
-      <select [(ngModel)]="magicBonus">
-        <option
-          *ngFor="let magicBonus of magicBonuses"
-          [value]="magicBonus.value"
-        >
-          {{ magicBonus.display }}
-        </option>
-      </select>
-    </div>
+    <div class="flex-row t-1">
+      <div class="checkbox-column">
+        <div class="checkbox-row">
+          <input id="proficient" type="checkbox" [(ngModel)]="proficient" />
+          <label for="proficient">Geübt</label>
+        </div>
+        <div class="checkbox-row">
+          <input id="finesse" type="checkbox" [(ngModel)]="isFinesse" />
+          <label for="finesse">Finesse</label>
+        </div>
+        <div class="checkbox-row">
+          <input id="versatile" type="checkbox" [(ngModel)]="isVersatile" />
+          <label for="versatile">Vielseitig</label>
+        </div>
+        <div class="checkbox-row">
+          <input id="isTwohanded" type="checkbox" [(ngModel)]="isTwoHanded" />
+          <label for="isTwohanded">Zweihändig</label>
+        </div>
+      </div>
+      <div class="checkbox-column">
+        <div class="checkbox-row">
+          <input id="hasReach" type="checkbox" [(ngModel)]="hasReach" />
+          <label for="hasReach">Reichweite</label>
+        </div>
+        <div class="checkbox-row">
+          <input id="isRanged" type="checkbox" [(ngModel)]="isRanged" />
+          <label for="isRanged">Fernkampf</label>
+        </div>
 
-    <div class="input-element" *ngIf="isRanged">
-      <label for="weaponRange">Normale Reichweite</label>
-      <input
-        type="number"
-        class="add-input"
-        id="weaponRange"
-        [(ngModel)]="range[0]"
-      />
+        <div class="checkbox-row">
+          <input id="canBeThrown" type="checkbox" [(ngModel)]="canBeThrown" />
+          <label for="canBeThrown">Wurfwaffe</label>
+        </div>
+        <div class="checkbox-row">
+          <input id="isMagical" type="checkbox" [(ngModel)]="isMagical" />
+          <label for="isMagical">Magisch</label>
+        </div>
+      </div>
     </div>
 
-    <div class="input-element" *ngIf="isRanged">
-      <label for="weaponRange">Große Reichweite</label>
-      <input
-        type="number"
-        class="add-input"
-        id="weaponRange"
-        [(ngModel)]="range[1]"
-      />
-    </div>
+    <hr />
 
-    <div class="input-element" *ngIf="canBeThrown">
-      <label for="weaponRange">Normale Wurfreichweite</label>
-      <input
-        type="number"
-        class="add-input"
-        id="weaponRange"
-        [(ngModel)]="throwRange[0]"
-      />
-    </div>
+    <!-- TAB-PANEL -->
+    <div class="d-flex">
+      <div
+        ngbNav
+        #nav="ngbNav"
+        [(activeId)]="active"
+        class="flex-column navigation-bar"
+        orientation="vertical"
+      >
+        <ng-container ngbNavItem="damage">
+          <button ngbNavLink>Schaden</button>
+          <ng-template ngbNavContent>
+            <div class="flex-row">
+              <div class="w-50">
+                <div class="input-label">Angriffsbonus</div>
+                <mat-form-field appearance="outline">
+                  <mat-select [(ngModel)]="attackBonus">
+                    @for (attackBonus of attackBonuses; track attackBonus) {
+                    <mat-option [value]="attackBonus">{{
+                      attackBonus
+                    }}</mat-option
+                    >}
+                  </mat-select>
+                </mat-form-field>
+              </div>
 
-    <div class="input-element" *ngIf="canBeThrown">
-      <label for="weaponRange">Große Wurfreichweite</label>
-      <input
-        type="number"
-        class="add-input"
-        id="weaponRange"
-        [(ngModel)]="throwRange[1]"
-      />
-    </div>
+              <div *ngIf="isMagical">
+                <div class="input-label">Magischer Modifikator</div>
+                <mat-form-field appearance="outline">
+                  <mat-select [(ngModel)]="magicBonus">
+                    @for (magicBonus of magicBonuses; track magicBonus) {
+                    <mat-option [value]="magicBonus.value">
+                      {{ magicBonus.display }} </mat-option
+                    >}
+                  </mat-select>
+                </mat-form-field>
+              </div>
+            </div>
 
-    <h3 style="text-align: center">Schaden</h3>
+            <div class="flex-row t-05">
+              @for(damageEntry of damage; let index = $index; track
+              damageEntry){
 
-    <div class="damage-container">
-      <div class="damage-box" *ngFor="let damage of damage; let index = index">
-        <div class="dice-row">
-          <div class="flex-column">
-            <label>Anzahl</label>
-            <select [(ngModel)]="damage.diceNumber">
-              <option *ngFor="let number of numbers" [value]="number">
-                {{ number }}
-              </option>
-            </select>
-          </div>
+              <div class="damage-box">
+                <div class="subheading left t-025">
+                  @if(index == 0){Schaden} @else {Zusatzschaden}
+                </div>
+                <div class="input-label">Anzahl Würfel</div>
+                <mat-form-field appearance="outline">
+                  <mat-select [(ngModel)]="damageEntry.diceNumber">
+                    @for (number of numbers; track number) {
+                    <mat-option [value]="number"> {{ number }} </mat-option>}
+                  </mat-select>
+                </mat-form-field>
 
-          <div class="flex-column">
-            <label>Würfel</label>
-            <select [(ngModel)]="damage.diceType">
-              <option *ngFor="let die of dice" [value]="die">
-                {{ die }}
-              </option>
-            </select>
-          </div>
-        </div>
+                <div class="input-label t-05">
+                  Würfelart @if(isVersatile && index === 0){ (Einhändig)}
+                </div>
+                <mat-form-field appearance="outline">
+                  <mat-select [(ngModel)]="damageEntry.diceType">
+                    @for (die of dice; track die) {
+                    <mat-option [value]="die"> {{ die }} </mat-option>}
+                  </mat-select>
+                </mat-form-field>
+                @if(isVersatile && index === 0){
+                <div class="input-label t-05">Würfelart (Zweihändig)</div>
+                <mat-form-field appearance="outline">
+                  <mat-select [(ngModel)]="versatileDamage">
+                    @for (die of dice; track die) {
+                    <mat-option [value]="die"> {{ die }} </mat-option>}
+                  </mat-select>
+                </mat-form-field>
+                }
 
-        <div *ngIf="isVersatile && index === 0">
-          Zweihändiger Schaden
-          <div class="flex-row gap-10">
-            <div class="flex-column">
-              <label>Würfel</label>
-              <select [(ngModel)]="versatileDamage">
-                <option *ngFor="let die of dice" [value]="die">
-                  {{ die }}
-                </option>
-              </select>
+                <div class="input-label t-05">Schadensart</div>
+                <mat-form-field appearance="outline">
+                  <mat-select [(ngModel)]="damageEntry.damageType">
+                    @for (type of damageTypes; track type) {
+                    <mat-option [value]="type.value">
+                      {{ type.display }}
+                    </mat-option>
+                    }
+                  </mat-select>
+                </mat-form-field>
+                @if(index !== 0){
+                <icon-button
+                  [icon]="'delete'"
+                  (click)="removeDamage(index)"
+                ></icon-button>
+                }
+              </div>
+              @if(damage.length < 2){
+              <icon-button
+                [icon]="'add'"
+                style="margin-top: 7rem; margin-left: 5rem"
+                (click)="addDamage()"
+              ></icon-button>
+              } }
             </div>
-          </div>
-        </div>
-
-        <label for="damageType">Schadensart</label>
-        <select [(ngModel)]="damage.damageType">
-          <option *ngFor="let type of damageTypes" [value]="type.value">
-            {{ type.display }}
-          </option>
-        </select>
-
-        <icon
-          *ngIf="index > 0"
-          (click)="removeDamage(index)"
-          [size]="'m'"
-          [type]="'UI'"
-          [icon]="'remove'"
-          [class]="'pointer'"
-        ></icon>
+          </ng-template>
+        </ng-container>
+        <ng-container ngbNavItem="range">
+          @if(isRanged || canBeThrown){
+          <button ngbNavLink>Reichweite</button>
+          } @else {
+          <button class="disabled-button" disabled>Reichweite</button>
+          }
+          <ng-template ngbNavContent>
+            <div class="numbers">
+              @if(isRanged){
+              <div class="flex-row t-1">
+                <div class="w-50">
+                  <div class="input-label">Normale Reichweite</div>
+                  <mat-form-field appearance="outline">
+                    <input
+                      class="right"
+                      type="number"
+                      matInput
+                      [(ngModel)]="range[0]"
+                    />
+                    <span class="input-value" matTextSuffix>Fuß</span>
+                  </mat-form-field>
+                </div>
+                <div>
+                  <div class="input-label">Erweiterte Reichweite</div>
+                  <mat-form-field appearance="outline">
+                    <input
+                      class="right"
+                      type="number"
+                      matInput
+                      [(ngModel)]="range[1]"
+                    />
+                    <span class="input-value" matTextSuffix>Fuß</span>
+                  </mat-form-field>
+                </div>
+              </div>
+              } @if(canBeThrown){
+              <div class="flex-row t-2">
+                <div class="w-50">
+                  <div class="input-label">Normale Wurfreichweite</div>
+                  <mat-form-field appearance="outline">
+                    <input
+                      class="right"
+                      type="number"
+                      matInput
+                      [(ngModel)]="throwRange[0]"
+                    />
+                    <span class="input-value" matTextSuffix>Fuß</span>
+                  </mat-form-field>
+                </div>
+                <div>
+                  <div class="input-label">Erweiterte Wurfreichweite</div>
+                  <mat-form-field appearance="outline">
+                    <input
+                      class="right"
+                      type="number"
+                      matInput
+                      [(ngModel)]="throwRange[1]"
+                    />
+                    <span class="input-value" matTextSuffix>Fuß</span>
+                  </mat-form-field>
+                </div>
+              </div>
+              }
+            </div>
+          </ng-template>
+        </ng-container>
+        <ng-container ngbNavItem="description">
+          <button ngbNavLink>Beschreibung</button>
+          <ng-template ngbNavContent>
+            <div class="NgxEditor__Wrapper">
+              <ngx-editor-menu [editor]="editor" [toolbar]="toolbar">
+              </ngx-editor-menu>
+              <ngx-editor
+                [editor]="editor"
+                [(ngModel)]="description"
+                placeholder="Beschreibung der Waffe"
+              ></ngx-editor>
+            </div>
+          </ng-template>
+        </ng-container>
       </div>
-      <icon
-        *ngIf="damage.length < 3"
-        (click)="addDamage()"
-        [size]="'m'"
-        [type]="'UI'"
-        [icon]="'add'"
-        [class]="'pointer'"
-      ></icon>
-    </div>
 
-    <div class="button-wrapper-2-block">
-      @if(isUpdate){
-      <ui-button
-        [type]="'update'"
-        [size]="'xlarge'"
-        [color]="'primary'"
-        (click)="update()"
-      ></ui-button>
-      }@else{
-      <ui-button
-        *ngIf="!isUpdate"
-        [type]="'add'"
-        [size]="'xlarge'"
-        [color]="'primary'"
-        (click)="add()"
-      ></ui-button>
-      }
-      <ui-button
-        [type]="'dismiss'"
-        [size]="'xlarge'"
-        [color]="'primary'"
-        (click)="cancel()"
-      ></ui-button>
+      <div
+        [ngbNavOutlet]="nav"
+        style="
+          width: 100%;
+          min-height: 20rem;
+          max-height: 26rem;
+          overflow-y: auto;
+          overflow-x: hidden;
+        "
+        class="ms-4"
+      ></div>
     </div>
+
+    <hr />
+  </div>
+
+  <div class="horizontal-buttons">
+    @if(isUpdate){
+    <ui-button [color]="'green'" style="width: 40%" (click)="update()">
+      Anpassen
+    </ui-button>
+    }@else{
+    <ui-button [color]="'green'" style="width: 40%" (click)="add()">
+      Erstellen
+    </ui-button>
+    }
+    <ui-button [color]="'red'" style="width: 40%" (click)="cancel()">
+      Abbrechen
+    </ui-button>
   </div>
 </div>
+
+Hallo, was geht ab ? Ich möchte gerne

+ 81 - 54
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.scss

@@ -1,75 +1,102 @@
-.modal-dimensions {
-    width: 40vw;
-    background-color: var(--modal-background);
-    border-radius: 10px;
-    border: 1px solid var(--border-color);
-    padding: 1rem;
-}
-
-.add-form-group {
+.checkbox-row {
     display: flex;
-    flex-direction: column;
+    flex-direction: row;
     gap: 1rem;
+    align-items: center;
 }
-.input-element {
+
+.checkbox-column {
+    width: 50%;
     display: flex;
     flex-direction: column;
+    gap: 0.5rem;
+    padding-left: 0.5rem;
 }
 
-.checkbox-element {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    justify-content: center;
-    flex-basis: 33.33%;
+.damage-box {
+    width: 50%;
 }
 
-.form-element-row {
-    display: flex;
-    flex-direction: row;
-    flex-wrap: wrap;
-    justify-content: space-around;
-    text-align: center;
-    row-gap: 1rem;
+.damage-box {
+    icon-button {
+        padding-left: 5.5rem;
+        margin-bottom: 1rem;
+        margin-top: 0.5rem;
+    }
 }
 
-.damage-container {
-    display: flex;
-    flex-direction: row;
-    gap: 1rem;
+::ng-deep div.d-flex {
+    .mat-mdc-form-field-infix {
+        height: 40px !important;
+        min-height: 40px !important;
+        padding-top: 8px !important;
+    }
 }
 
-.damage-row {
-    display: flex;
-    flex-direction: row;
-    justify-content: center;
-    align-items: center;
-    gap: 0.1rem;
+.numbers {
+    input::-webkit-outer-spin-button,
+    input::-webkit-inner-spin-button {
+        display: none;
+    }
+
+    input {
+        -moz-appearance: textfield;
+    }
+
+    .input-value {
+        padding-left: 0.5rem;
+    }
+
+    span {
+        color: darkgrey;
+    }
+    ::ng-deep .mat-mdc-text-field-wrapper {
+        width: 12rem !important;
+    }
 }
 
-.damage-box {
-    display: flex;
-    flex-direction: column;
-    align-items: left;
-    gap: 0.5rem;
-    flex-basis: 30%;
+div.nav-pills.flex-column.nav {
+    border-right: 1px solid darkgray;
+    padding-right: 4px;
 }
 
-.dice-row {
-    display: flex;
-    flex-direction: row;
-    gap: 1rem;
-    margin-bottom: 1rem;
+::ng-deep .ProseMirror {
+    height: 17.5rem !important;
+    overflow-y: auto;
 }
 
-.button-wrapper {
-    width: 100%;
-    display: grid;
-    grid-template-rows: 1fr 1fr;
-    grid-template-columns: 1fr;
-    gap: 10px;
-    margin-top: 2rem;
-    margin-top: 2rem;
+.navigation-bar {
+    padding-top: 0.5rem;
+    gap: 1rem;
+    height: 20rem;
     align-items: center;
-    justify-content: center;
+    border-right: 1px solid rgba(0, 0, 0, 0.125);
+    padding-right: 4px;
+    width: 11rem;
+    // box-shadow: var(--shadow);
+
+    .nav-link {
+        width: 100%;
+        border-radius: 10px;
+        transition: all 0.25s ease-in-out;
+        // font-size: 1.25rem;
+        font-weight: 600;
+        color: var(--text);
+        // padding: 0;
+
+        &.active,
+        &:hover {
+            background-color: var(--tab-active);
+            box-shadow: var(--shadow);
+        }
+    }
+
+    .disabled-button {
+        padding: 8px 0;
+        border: none;
+        font-weight: 600;
+        color: black;
+        cursor: not-allowed;
+        opacity: 0.5;
+    }
 }

+ 21 - 4
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-modal/weapon-modal.component.ts

@@ -2,6 +2,7 @@ import { Component, Input } from '@angular/core';
 import { Weapon } from 'src/interfaces/weapon';
 import { Damage } from 'src/interfaces/damage';
 import { ModalService } from 'src/services/modal/modal.service';
+import { Editor } from 'ngx-editor';
 
 @Component({
   selector: 'app-weapon-modal',
@@ -15,6 +16,7 @@ export class WeaponModalComponent {
 
   public name: string = '';
   public range: number[] = [5, 5];
+  public hasReach: boolean = false;
   public throwRange: number[] = [5, 5];
   public attackBonus: string = '+0';
   public damage: Damage[] = [{ diceNumber: '', diceType: '', damageType: '' }];
@@ -28,6 +30,17 @@ export class WeaponModalComponent {
   public weight: string = 'normal';
   public isMagical: boolean = false;
   public magicBonus: number = 0;
+  public description: string = '';
+
+  active = 'damage';
+  editor: Editor = new Editor();
+  html = '';
+  toolbar: any = [
+    // default value
+    ['bold', 'italic'],
+    ['bullet_list'],
+    [{ heading: ['h3', 'h4', 'h5', 'h6'] }],
+  ];
 
   // Options for the select boxes
   public weights: string[] = ['leicht', 'normal', 'schwer'];
@@ -48,7 +61,7 @@ export class WeaponModalComponent {
     { display: 'Kraft', value: 'force' },
   ];
 
-  public dice: string[] = ['d4', 'd6', 'd8', 'd10', 'd12', 'd20', 'd100'];
+  public dice: string[] = ['W4', 'W6', 'W8', 'W10', 'W12', 'W20', 'W100'];
 
   public numbers: string[] = [
     '1',
@@ -64,9 +77,6 @@ export class WeaponModalComponent {
   ];
 
   public attackBonuses: string[] = [
-    '-5',
-    '-4',
-    '-3',
     '-2',
     '-1',
     '+0',
@@ -109,6 +119,7 @@ export class WeaponModalComponent {
   public loadItem(): void {
     this.name = this.item.name;
     this.range = this.item.range;
+    this.hasReach = this.item.hasReach;
     this.throwRange = this.item.throwRange;
     this.attackBonus = this.item.attackBonus;
     this.damage = this.item.damage;
@@ -122,6 +133,7 @@ export class WeaponModalComponent {
     this.weight = this.item.weight;
     this.isMagical = this.item.isMagical;
     this.magicBonus = this.item.magicBonus;
+    this.description = this.item.description;
   }
 
   // RESPONSES
@@ -132,6 +144,7 @@ export class WeaponModalComponent {
   }
 
   public add(): void {
+    console.log(this.createItem());
     this.modalAccessor.handleModalClosing('add', this.createItem());
     this.resetItem();
   }
@@ -145,6 +158,7 @@ export class WeaponModalComponent {
     return {
       name: this.name,
       range: this.range,
+      hasReach: this.hasReach,
       throwRange: this.throwRange,
       attackBonus: this.attackBonus,
       damage: this.damage,
@@ -158,6 +172,7 @@ export class WeaponModalComponent {
       weight: this.weight,
       isMagical: this.isMagical,
       magicBonus: this.magicBonus,
+      description: this.description,
     };
   }
 
@@ -167,6 +182,7 @@ export class WeaponModalComponent {
   public resetItem(): void {
     this.name = '';
     this.range = [5, 5];
+    this.hasReach = false;
     this.throwRange = [5, 5];
     this.attackBonus = '+0';
     this.damage = [{ diceNumber: '', diceType: '', damageType: '' }];
@@ -180,6 +196,7 @@ export class WeaponModalComponent {
     this.weight = 'normal';
     this.isMagical = false;
     this.magicBonus = 0;
+    this.description = '';
   }
 
   // COMPONENT LOGIC

+ 3 - 1
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.html

@@ -54,7 +54,9 @@
     }
   </div>
   <div class="footer">
-    <button (click)="openModal(false)">Hinzufügen</button>
+    <ui-button [color]="'green'" style="width: 80%" (click)="openModal(false)">
+      Hinzufügen
+    </ui-button>
   </div>
 </div>
 

+ 1 - 1
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.scss

@@ -1,7 +1,7 @@
 .heading-list {
   flex: 0 0 3rem;
   display: grid;
-  padding: 10px 20px;
+  padding: 10px 12px;
   grid-template-columns: 6fr 20fr 8fr 16fr 10fr;
   text-align: center;
   font-weight: 700;

+ 1 - 4
src/app/journal/journal-stats/weapons-container/weapon-table/weapon-table.component.ts

@@ -118,10 +118,7 @@ export class WeaponTableComponent {
           this.deleteWeapon(index);
         } else if (result.state === 'update') {
           this.openModal(true, index);
-        } else {
-          throw new Error('DND-Error: Unknown state: ' + result.state);
-        }
-        resultSubscription.unsubscribe();
+        } else resultSubscription.unsubscribe();
       }
     );
   }

+ 6 - 2
src/app/journal/journal.module.ts

@@ -6,6 +6,7 @@ import { CdkTableModule } from '@angular/cdk/table';
 import { DragDropModule } from '@angular/cdk/drag-drop';
 import { ReactiveFormsModule } from '@angular/forms';
 import { MarkdownModule } from 'ngx-markdown';
+import { NgxEditorModule } from 'ngx-editor';
 
 // Material Design
 import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@@ -83,7 +84,6 @@ import { JournalMapsComponent } from './journal-maps/journal-maps.component';
 import { JournalRulesetComponent } from './journal-ruleset/journal-ruleset.component';
 import { JournalSettingsComponent } from './journal-settings/journal-settings.component';
 import { SimpleItemModalComponent } from './journal-inventory/simple-item-modal/simple-item-modal.component';
-import { FoodDetailsComponent } from './journal-inventory/food-details/food-details.component';
 import { SpellcardComponent } from './journal-spellcards/spellcard/spellcard.component';
 import { AddCardComponent } from './journal-spellcards/add-card/add-card.component';
 import { GeneralComponent } from './journal-character/general/general.component';
@@ -92,6 +92,8 @@ import { SubclassComponent } from './journal-character/subclass/subclass.compone
 import { SpeciesComponent } from './journal-character/species/species.component';
 import { BackgroundComponent } from './journal-character/background/background.component';
 import { StoryComponent } from './journal-character/story/story.component';
+import { FavoriteSpellsModalComponent } from './journal-stats/weapons-container/spell-table/favorite-spells-modal/favorite-spells-modal.component';
+import { MatRippleModule } from '@angular/material/core';
 
 @NgModule({
   declarations: [
@@ -159,7 +161,6 @@ import { StoryComponent } from './journal-character/story/story.component';
     SimpleItemDetailsComponent,
     ModalComponent,
     SimpleItemModalComponent,
-    FoodDetailsComponent,
     WeaponModalComponent,
     SpellcardComponent,
     AddCardComponent,
@@ -169,6 +170,7 @@ import { StoryComponent } from './journal-character/story/story.component';
     SpeciesComponent,
     BackgroundComponent,
     StoryComponent,
+    FavoriteSpellsModalComponent,
   ],
   imports: [
     CommonModule,
@@ -187,6 +189,8 @@ import { StoryComponent } from './journal-character/story/story.component';
     MatTabsModule,
     MatExpansionModule,
     MarkdownModule.forRoot(),
+    NgxEditorModule,
+    MatRippleModule,
   ],
 })
 export class JournalModule {}

+ 2 - 2
src/app/journal/spell-modal/spell-modal.component.html

@@ -162,7 +162,7 @@
       ></ui-button>
       }
       <ui-button
-        [type]="'dismiss'"
+        [type]="'cancel'"
         [size]="'xlarge'"
         [color]="'primary'"
         (click)="cancel()"
@@ -263,5 +263,5 @@
 </ng-template>
 
 <ng-template #descriptionTabContent>
-  <textarea style="height: 10rem" [(ngModel)]="description"></textarea>
+  <textarea style="height: 10rem" [(ngModel)]="description_de"></textarea>
 </ng-template>

+ 15 - 17
src/app/journal/spell-modal/spell-modal.component.scss

@@ -1,4 +1,4 @@
-.modal-dimensions{
+.modal-dimensions {
     width: 40vw;
     background-color: antiquewhite;
     border-radius: 10px;
@@ -6,25 +6,25 @@
     padding: 1rem;
 }
 
-.range-area-container{
+.range-area-container {
     display: flex;
     flex-direction: row;
 }
 
-.range-box, .area-box{
+.range-box,
+.area-box {
     display: flex;
     flex-direction: column;
     flex-basis: 45%;
     gap: 1rem;
 }
 
-.add-form-group{
+.add-form-group {
     display: flex;
     flex-direction: column;
     gap: 1rem;
-    
 }
-.input-element{
+.input-element {
     display: flex;
     flex-direction: column;
     // gap: 0.1rem;
@@ -32,7 +32,7 @@
     // justify-content: center;
 }
 
-.checkbox-element{
+.checkbox-element {
     display: flex;
     flex-direction: column;
     align-items: center;
@@ -40,25 +40,24 @@
     flex-basis: 33.33%;
 }
 
-.form-element-row{
+.form-element-row {
     display: flex;
     flex-direction: row;
     flex-wrap: wrap;
     justify-content: space-around;
-    text-align:center;
+    text-align: center;
     row-gap: 1rem;
 }
 
-.damage-container{
+.damage-container {
     display: flex;
     flex-direction: row;
     gap: 1rem;
     // align-items: center;
     // justify-content: center;
-    
 }
 
-.damage-row{
+.damage-row {
     display: flex;
     flex-direction: row;
     justify-content: center;
@@ -66,15 +65,15 @@
     gap: 0.1rem;
 }
 
-.damage-box{
-    display:flex;
+.damage-box {
+    display: flex;
     flex-direction: column;
     align-items: left;
     gap: 0.5rem;
     flex-basis: 30%;
 }
 
-.dice-row{
+.dice-row {
     display: flex;
     flex-direction: row;
     // justify-content: center;
@@ -83,8 +82,7 @@
     margin-bottom: 1rem;
 }
 
-
-.button-wrapper{
+.button-wrapper {
     width: 100%;
     display: grid;
     grid-template-rows: 1fr 1fr;

+ 5 - 5
src/app/journal/spell-modal/spell-modal.component.ts

@@ -24,13 +24,13 @@ export class SpellModalComponent {
   public cost: string = 'action';
   public duration: number = 0;
   public timeToCast: number = 0;
-  public canRitual: string = 'false';
+  public canRitual: 'true' | 'false' | 'only' = 'false';
   public needsConcentration: boolean = false;
   public needsVerbal: boolean = false;
   public needsSomatic: boolean = false;
   public needsMaterial: boolean = false;
   public school: string = '';
-  public description: string = '';
+  public description_de: string = '';
   public doesDamage: boolean = false;
   public doesHeal: boolean = false;
   public needsAttackRoll: boolean = false;
@@ -167,7 +167,7 @@ export class SpellModalComponent {
     this.needsSomatic = this.spell.needsSomatic;
     this.needsMaterial = this.spell.needsMaterial;
     this.school = this.spell.school;
-    this.description = this.spell.description;
+    this.description_de = this.spell.description_de;
     this.doesDamage = this.spell.doesDamage;
     this.needsSavingThrow = this.spell.needsSavingThrow;
     this.savingThrowAttribute = this.spell.savingThrowAttribute;
@@ -198,7 +198,7 @@ export class SpellModalComponent {
       cost: this.cost,
       canRitual: this.canRitual,
       school: this.school,
-      description: this.description,
+      description_de: this.description_de,
       needsConcentration: this.needsConcentration,
       needsVerbal: this.needsVerbal,
       needsSomatic: this.needsSomatic,
@@ -232,7 +232,7 @@ export class SpellModalComponent {
     this.needsSomatic = false;
     this.needsMaterial = false;
     this.school = '';
-    this.description = '';
+    this.description_de = '';
     this.doesDamage = true;
     this.needsSavingThrow = false;
     this.savingThrowAttribute = '';

+ 2 - 2
src/app/shared-components/full-spellcard/full-spellcard.component.html

@@ -107,14 +107,14 @@
         </tr>
         }
         <h3>Beschreibung</h3>
-        <p>{{ spell.description }}</p>
+        <div [innerHTML]="spell.description_de"></div>
       </tbody>
     </table>
   </div>
 
   <div class="delete-row">
     @if(isFromDashboard){
-    <button class="delete-button" (click)="delete()">Entfernen</button>
+    <button class="delete-button" (click)="remove()">Entfernen</button>
     }@else {
 
     <!-- Add to favorites -->

+ 3 - 0
src/app/shared-components/icon-button/icon-button.component.html

@@ -0,0 +1,3 @@
+<button matRipple>
+  <img [src]="'assets/icons/UIIcons/' + icon + '.svg'" [alt]="icon" />
+</button>

+ 15 - 0
src/app/shared-components/icon-button/icon-button.component.scss

@@ -0,0 +1,15 @@
+:host {
+    display: block; /* Make sure the host element is a block-level element */
+    width: 2.25rem;
+    height: 1.5rem;
+}
+
+button {
+    border: none;
+    background-color: transparent;
+    transition: all 0.25s ease;
+    border-radius: 10px !important;
+    &:hover {
+        background-color: rgba(211, 211, 211, 0.5);
+    }
+}

+ 6 - 6
src/app/journal/journal-inventory/food-details/food-details.component.spec.ts → src/app/shared-components/icon-button/icon-button.component.spec.ts

@@ -1,18 +1,18 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 
-import { FoodDetailsComponent } from './food-details.component';
+import { IconButtonComponent } from './icon-button.component';
 
-describe('FoodDetailsComponent', () => {
-  let component: FoodDetailsComponent;
-  let fixture: ComponentFixture<FoodDetailsComponent>;
+describe('IconButtonComponent', () => {
+  let component: IconButtonComponent;
+  let fixture: ComponentFixture<IconButtonComponent>;
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      declarations: [FoodDetailsComponent]
+      declarations: [IconButtonComponent]
     })
     .compileComponents();
     
-    fixture = TestBed.createComponent(FoodDetailsComponent);
+    fixture = TestBed.createComponent(IconButtonComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });

+ 10 - 0
src/app/shared-components/icon-button/icon-button.component.ts

@@ -0,0 +1,10 @@
+import { Component, Input } from '@angular/core';
+
+@Component({
+  selector: 'icon-button',
+  templateUrl: './icon-button.component.html',
+  styleUrl: './icon-button.component.scss',
+})
+export class IconButtonComponent {
+  @Input() icon!: string;
+}

+ 20 - 3
src/app/shared-components/shared-components.module.ts

@@ -3,10 +3,27 @@ import { CommonModule } from '@angular/common';
 import { SwitchComponent } from './switch/switch.component';
 import { UiButtonComponent } from './ui-button/ui-button.component';
 import { FullSpellcardComponent } from './full-spellcard/full-spellcard.component';
+import { IconButtonComponent } from './icon-button/icon-button.component';
+import { ValueBoxComponent } from './value-box/value-box.component';
+import { FormsModule } from '@angular/forms';
+import { MatRippleModule } from '@angular/material/core';
 
 @NgModule({
-  declarations: [SwitchComponent, UiButtonComponent, FullSpellcardComponent],
-  imports: [CommonModule],
-  exports: [SwitchComponent, UiButtonComponent],
+  declarations: [
+    SwitchComponent,
+    UiButtonComponent,
+    FullSpellcardComponent,
+    IconButtonComponent,
+    ValueBoxComponent,
+  ],
+  imports: [CommonModule, FormsModule, MatRippleModule],
+  exports: [
+    SwitchComponent,
+    UiButtonComponent,
+    FullSpellcardComponent,
+    IconButtonComponent,
+    ValueBoxComponent,
+    FormsModule,
+  ],
 })
 export class SharedComponentsModule {}

+ 3 - 1
src/app/shared-components/ui-button/ui-button.component.html

@@ -1 +1,3 @@
-<div class="ui-button" [class]="size + ' ' + color">{{ text }}</div>
+<button [class]="width + ' ' + color">
+  <ng-content></ng-content>
+</button>

+ 113 - 36
src/app/shared-components/ui-button/ui-button.component.scss

@@ -1,64 +1,141 @@
-.ui-button{
-    // background-color: var(--tertiary-color);
-    text-align: center;
+button {
+    display: block;
+    font-size: 1.25rem;
+    font-weight: 600;
+    height: 3rem;
     border-radius: 10px;
-    padding: 10px;
-    color: black;
     cursor: pointer;
-    box-shadow: 2px 2px 5px 3px rgba(0,0,0,0.2);
-    margin:auto;
-    transition: background-color 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
+    box-shadow: var(--shadow);
+    transition: background-color 0.25s ease-in-out;
+}
+.default {
+    width: 100%;
+}
+
+.green {
+    background-color: var(--accept);
+    &:hover {
+        background-color: var(--accept-hover);
+    }
+}
+
+.red {
+    background-color: var(--delete);
+    &:hover {
+        background-color: var(--delete-hover);
+    }
+}
+
+.blue {
+    background-color: var(--edit);
+    &:hover {
+        background-color: var(--edit-hover);
+    }
+}
+
+.neutral {
+    background-color: var(--neutral);
+    &:hover {
+        background-color: var(--neutral-hover);
+    }
+}
+
+.w1 {
+    width: 1rem !important;
+}
+
+.w2 {
+    width: 2rem !important;
+}
+
+.w3 {
+    width: 3rem !important;
+}
+
+.w4 {
+    width: 4rem !important;
 }
 
-// .ui-button:hover{
-//     background-color: #9e6a50;
-//     box-shadow: 1px 1px 5px 3px rgba(0,0,0,0.4);
-// }
+.w5 {
+    width: 5rem !important;
+}
+
+.w6 {
+    width: 6rem !important;
+}
+
+.w7 {
+    width: 7rem !important;
+}
+
+.w8 {
+    width: 8rem !important;
+}
+
+.w9 {
+    width: 9rem !important;
+}
+
+.w10 {
+    width: 10rem !important;
+}
+
+.w11 {
+    width: 11rem !important;
+}
+
+.w12 {
+    width: 12rem !important;
+}
+
+.w13 {
+    width: 13rem !important;
+}
 
-.primary{
-    background-color: var(--primary-color);
+.w14 {
+    width: 14rem !important;
 }
 
-.primary:hover{
-    background-color: var(--primary-color-dark);
+.w15 {
+    width: 15rem !important;
 }
 
-.secondary{
-    background-color: var(--secondary-color);
+.w16 {
+    width: 16rem !important;
 }
 
-.secondary:hover{
-    background-color: var(--secondary-color-dark);
+.w17 {
+    width: 17rem !important;
 }
 
-.tertiary{
-    background-color: var(--tertiary-color);
+.w18 {
+    width: 18rem !important;
 }
 
-.tertiary:hover{
-    background-color: var(--tertiary-color-dark);
+.w19 {
+    width: 19rem !important;
 }
 
-.quaternary{
-    background-color: var(--quaternary-color);
+.w20 {
+    width: 20rem !important;
 }
 
-.quaternary:hover{
-    background-color: var(--quaternary-color-dark);
+.w21 {
+    width: 21rem !important;
 }
 
-.small{
-    width: 20%;
+.w22 {
+    width: 22rem !important;
 }
 
-.medium{
-    width: 40%;
+.w23 {
+    width: 23rem !important;
 }
 
-.large{
-    width: 60%
+.w24 {
+    width: 24rem !important;
 }
 
-.xlarge{
-    width: 80%;
+.w25 {
+    width: 25rem !important;
 }

+ 18 - 18
src/app/shared-components/ui-button/ui-button.component.ts

@@ -6,24 +6,24 @@ import { Component, Input } from '@angular/core';
   styleUrls: ['./ui-button.component.scss'],
 })
 export class UiButtonComponent {
-  @Input() type!: string;
-  @Input() size!: string;
-  @Input() color!: string;
+  // TO delete
+  @Input() size: string = '';
+  @Input() type: string = 'default';
+  //
 
-  public text?: string;
+  /**
+   *  The width of the button, defaulted to 100%.
+   *  Available are w1 - w20 in rem.
+   * @type {string}
+   * @memberof UiButtonComponent
+   */
+  @Input() width: string = 'default';
 
-  public textArray: any = {
-    add: 'Hinzufügen',
-    apply: 'Anwenden',
-    edit: 'Anpassen',
-    delete: 'Löschen',
-    dismiss: 'Abbrechen',
-    update: 'Aktualisieren',
-  };
-
-  constructor() {}
-
-  ngOnInit(): void {
-    this.text = this.textArray[this.type];
-  }
+  /**
+   * The color of the button, default is neutral.
+   * Available are green, red, blue, neutral.
+   * @type {string}
+   * @memberof UiButtonComponent
+   */
+  @Input() color: string = 'neutral';
 }

+ 14 - 0
src/app/shared-components/value-box/value-box.component.html

@@ -0,0 +1,14 @@
+<div class="container">
+  @if(isInput){
+  <input
+    [(ngModel)]="data"
+    (ngModelChange)="onChange($event)"
+    (blur)="onTouched()"
+    id="input"
+    type="number"
+  />
+  } @else {
+  <div class="value" id="input">{{ value }}</div>
+  }
+  <label for="input">{{ label }}</label>
+</div>

+ 33 - 0
src/app/shared-components/value-box/value-box.component.scss

@@ -0,0 +1,33 @@
+.container {
+    max-width: 5rem;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    gap: 0.375rem;
+}
+
+input,
+.value {
+    width: 3.5rem;
+    height: 2.75rem;
+    font-size: 1.5rem;
+    text-align: center;
+    border-radius: 10px;
+    border: none;
+    box-shadow: var(--shadow);
+    background-color: white;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    &::-webkit-inner-spin-button,
+    &::-webkit-outer-spin-button {
+        -webkit-appearance: none;
+        margin: 0;
+    }
+}
+
+label {
+    text-align: center;
+    font-weight: 500;
+}

+ 23 - 0
src/app/shared-components/value-box/value-box.component.spec.ts

@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ValueBoxComponent } from './value-box.component';
+
+describe('ValueBoxComponent', () => {
+  let component: ValueBoxComponent;
+  let fixture: ComponentFixture<ValueBoxComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ValueBoxComponent]
+    })
+    .compileComponents();
+    
+    fixture = TestBed.createComponent(ValueBoxComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 36 - 0
src/app/shared-components/value-box/value-box.component.ts

@@ -0,0 +1,36 @@
+import { Component, forwardRef, Input } from '@angular/core';
+import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
+
+@Component({
+  selector: 'value-box',
+  templateUrl: './value-box.component.html',
+  styleUrl: './value-box.component.scss',
+  providers: [
+    {
+      provide: NG_VALUE_ACCESSOR,
+      useExisting: forwardRef(() => ValueBoxComponent),
+      multi: true,
+    },
+  ],
+})
+export class ValueBoxComponent {
+  public data: any;
+  @Input() value: any;
+  @Input() label!: string;
+  @Input() isInput: boolean = false;
+
+  onChange: any = () => {};
+  onTouched: any = () => {};
+
+  writeValue(data: any): void {
+    this.data = data;
+  }
+
+  registerOnChange(fn: any): void {
+    this.onChange = fn;
+  }
+
+  registerOnTouched(fn: any): void {
+    this.onTouched = fn;
+  }
+}

+ 1 - 1
src/assets/icons/UIIcons/cross.svg

@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M256 16C123.45 16 16 123.45 16 256s107.45 240 240 240 240-107.45 240-240S388.55 16 256 16zm0 60c99.41 0 180 80.59 180 180s-80.59 180-180 180S76 355.41 76 256 156.59 76 256 76zm-80.625 60c-.97-.005-2.006.112-3.063.313v-.032c-18.297 3.436-45.264 34.743-33.375 46.626l73.157 73.125-73.156 73.126c-14.63 14.625 29.275 58.534 43.906 43.906L256 299.906l73.156 73.156c14.63 14.628 58.537-29.28 43.906-43.906l-73.156-73.125 73.156-73.124c14.63-14.625-29.275-58.5-43.906-43.875L256 212.157l-73.156-73.125c-2.06-2.046-4.56-3.015-7.47-3.03z" fill="#59040f" fill-opacity="1"></path></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>

+ 1 - 0
src/assets/icons/UIIcons/lock.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M240-80q-33 0-56.5-23.5T160-160v-400q0-33 23.5-56.5T240-640h40v-80q0-83 58.5-141.5T480-920q83 0 141.5 58.5T680-720v80h40q33 0 56.5 23.5T800-560v400q0 33-23.5 56.5T720-80H240Zm0-80h480v-400H240v400Zm240-120q33 0 56.5-23.5T560-360q0-33-23.5-56.5T480-440q-33 0-56.5 23.5T400-360q0 33 23.5 56.5T480-280ZM360-640h240v-80q0-50-35-85t-85-35q-50 0-85 35t-35 85v80ZM240-160v-400 400Z"/></svg>

+ 1 - 1
src/assets/icons/UIIcons/remove.svg

@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"/></svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M200-440v-80h560v80H200Z"/></svg>

BIN
src/assets/images/spellcards_coming_soon.jpeg


BIN
src/assets/images/spells/backup.jpg


BIN
src/assets/images/spells/bladeWard.jpg


BIN
src/assets/images/spells/boomingBlade.jpg


BIN
src/assets/images/spells/chillTouch.jpg


BIN
src/assets/images/spells/controlFlames.jpg


BIN
src/assets/images/spells/createBonfire.jpg


BIN
src/assets/images/spells/druidCraft.jpg


BIN
src/assets/images/spells/friends.jpg


BIN
src/assets/images/spells/frostbite.jpg


BIN
src/assets/images/spells/greenFlameBlade.jpg


BIN
src/assets/images/spells/infestation.jpg


BIN
src/assets/images/spells/light.jpg


BIN
src/assets/images/spells/lightningLure.jpg


BIN
src/assets/images/spells/magicStone.jpg


BIN
src/assets/images/spells/mending.jpg


BIN
src/assets/images/spells/message.jpg


BIN
src/assets/images/spells/mindSilver.jpg


BIN
src/assets/images/spells/minorIllusion.jpg


BIN
src/assets/images/spells/moldEarth.jpg


BIN
src/assets/images/spells/poisonSpray.jpg


BIN
src/assets/images/spells/primalSavagery.jfif


BIN
src/assets/images/spells/produceFlame.jpg


BIN
src/assets/images/spells/rayOfFrost.jpg


BIN
src/assets/images/spells/sacredFlame.jpg


BIN
src/assets/images/spells/shapeWater.jfif


BIN
src/assets/images/spells/sprayPoison.jfif


BIN
src/assets/images/spells/swordBurst.jfif


BIN
src/assets/images/spells/thornWhip.jpg


BIN
src/assets/images/spells/thunderClap.jpg


BIN
src/assets/images/spells/viciousMockery.jpg


+ 20 - 0
src/button-styles.scss

@@ -0,0 +1,20 @@
+.horizontal-buttons {
+    display: flex;
+    justify-content: space-between;
+    padding: 2rem 0;
+}
+
+.vertical-buttons {
+    width: 27rem;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    gap: 1.5rem;
+}
+
+.bottom {
+    position: absolute;
+    bottom: 0;
+    margin-bottom: 2rem;
+    margin-top: 2rem;
+}

+ 251 - 0
src/helpers.scss

@@ -0,0 +1,251 @@
+.t-0 {
+    margin-top: 0 !important;
+}
+
+.t-0125 {
+    margin-top: 0.125rem !important;
+}
+
+.t-025 {
+    margin-top: 0.25rem !important;
+}
+
+.t-0375 {
+    margin-top: 0.375rem !important;
+}
+
+.t-05 {
+    margin-top: 0.5rem !important;
+}
+
+.t-0625 {
+    margin-top: 0.625rem !important;
+}
+
+.t-075 {
+    margin-top: 0.75rem !important;
+}
+
+.t-0875 {
+    margin-top: 0.875rem !important;
+}
+
+.t-1 {
+    margin-top: 1rem !important;
+}
+
+.t-1125 {
+    margin-top: 1.125rem !important;
+}
+
+.t-125 {
+    margin-top: 1.25rem !important;
+}
+
+.t-1375 {
+    margin-top: 1.375rem !important;
+}
+
+.t-15 {
+    margin-top: 1.5rem !important;
+}
+
+.t-1625 {
+    margin-top: 1.625rem !important;
+}
+
+.t-175 {
+    margin-top: 1.75rem !important;
+}
+
+.t-1875 {
+    margin-top: 1.875rem !important;
+}
+
+.t-2 {
+    margin-top: 2rem !important;
+}
+
+.b-0 {
+    margin-bottom: 0 !important;
+}
+
+.b-0125 {
+    margin-bottom: 0.125rem !important;
+}
+
+.b-025 {
+    margin-bottom: 0.25rem !important;
+}
+
+.b-0375 {
+    margin-bottom: 0.375rem !important;
+}
+
+.b-05 {
+    margin-bottom: 0.5rem !important;
+}
+
+.b-0625 {
+    margin-bottom: 0.625rem !important;
+}
+
+.b-075 {
+    margin-bottom: 0.75rem !important;
+}
+
+.b-0875 {
+    margin-bottom: 0.875rem !important;
+}
+
+.b-1 {
+    margin-bottom: 1rem !important;
+}
+
+.b-1125 {
+    margin-bottom: 1.125rem !important;
+}
+
+.b-125 {
+    margin-bottom: 1.25rem !important;
+}
+
+.b-1375 {
+    margin-bottom: 1.375rem !important;
+}
+
+.b-15 {
+    margin-bottom: 1.5rem !important;
+}
+
+.b-1625 {
+    margin-bottom: 1.625rem !important;
+}
+
+.b-175 {
+    margin-bottom: 1.75rem !important;
+}
+
+.b-1875 {
+    margin-bottom: 1.875rem !important;
+}
+
+.b-2 {
+    margin-bottom: 2rem !important;
+}
+
+.left {
+    text-align: left !important;
+}
+
+.center {
+    text-align: center !important;
+}
+
+.right {
+    text-align: right !important;
+}
+
+.row {
+    display: flex !important;
+}
+
+.column {
+    display: flex !important;
+    flex-direction: column !important;
+}
+
+// Überprüfen, ob es verwendet wird
+
+.flex-centered {
+    align-items: center;
+    justify-content: center;
+}
+
+.flex-left {
+    justify-content: start;
+}
+
+.flex-right {
+    justify-content: end;
+}
+
+.gap-01 {
+    gap: 0.1rem;
+}
+
+.gap-02 {
+    gap: 0.2rem;
+}
+
+.gap-03 {
+    gap: 0.3rem;
+}
+
+.gap-04 {
+    gap: 0.4rem;
+}
+
+.gap-05 {
+    gap: 0.5rem;
+}
+
+.gap-06 {
+    gap: 0.6rem;
+}
+
+.gap-07 {
+    gap: 0.7rem;
+}
+
+.gap-08 {
+    gap: 0.8rem;
+}
+
+.gap-09 {
+    gap: 0.9rem;
+}
+
+.gap-10 {
+    gap: 1rem;
+}
+
+.gap-11 {
+    gap: 1.1rem;
+}
+
+.gap-12 {
+    gap: 1.2rem;
+}
+
+.gap-13 {
+    gap: 1.3rem;
+}
+
+.gap-14 {
+    gap: 1.4rem;
+}
+
+.gap-15 {
+    gap: 1.5rem;
+}
+
+.gap-16 {
+    gap: 1.6rem;
+}
+
+.gap-17 {
+    gap: 1.7rem;
+}
+
+.gap-18 {
+    gap: 1.8rem;
+}
+
+.gap-19 {
+    gap: 1.9rem;
+}
+
+.gap-20 {
+    gap: 2rem;
+}

+ 4 - 3
src/interfaces/spell.ts

@@ -8,13 +8,14 @@ export interface Spell {
   cost: string;
   timeToCast: number;
   duration: number;
-  canRitual: string;
+  canRitual: 'true' | 'false' | 'only';
   needsConcentration: boolean;
   needsVerbal: boolean;
   needsSomatic: boolean;
   needsMaterial: boolean;
   school: string;
-  description: string;
+  description_de: string;
+  description_en?: string;
   needsAttackRoll: boolean;
   needsSavingThrow: boolean;
   savingThrowAttribute?: string;
@@ -31,7 +32,7 @@ export interface Spell {
   heal: Heal;
 }
 
-// Additions
+// Possible Additions
 
 // Number of targets
 // duration

+ 2 - 0
src/interfaces/weapon.ts

@@ -3,6 +3,7 @@ export interface Weapon {
   damage: Damage[];
   attackBonus: string;
   range: number[];
+  hasReach: boolean;
   throwRange?: number[];
   proficient: boolean;
   isVersatile: boolean;
@@ -14,6 +15,7 @@ export interface Weapon {
   versatileDamage?: string;
   isMagical: boolean;
   magicBonus?: number;
+  description: string;
 }
 
 interface Damage {

+ 0 - 1
src/services/species/species.service.ts

@@ -13,7 +13,6 @@ export class SpeciesService {
       case 'HalfElfDetection':
         return this.halfElfDetection;
       default:
-        // throw new Error(`DND-Error: Species ${name} not found`);
         return this.notImplementedYet;
     }
   }

+ 1651 - 46
src/services/spells/spells.service.ts

@@ -67,7 +67,7 @@ export class SpellsService {
       isCustom: false,
       german: 'Göttliche Führung',
       english: 'guidance',
-      classes: ['Cleric', 'Druid'],
+      classes: ['Test', 'Cleric', 'Druid'],
       level: 0,
       cost: 'action',
       duration: 10,
@@ -83,8 +83,12 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
-        'Du berührst eine bereitwillige Kreatur. Einmal vor dem Ende des Zaubers kann das Ziel mit einem W4 würfeln und das Ergebnis zu einem Attributswurf seiner Wahl addieren. Es kann mit dem W4 vor oder nach dem Attributswurf würfeln. Dann endet der Zauber.',
+      description_de: `
+        Du berührst eine bereitwillige Kreatur. Einmal vor dem Ende des Zaubers kann das Ziel mit einem W4 würfeln und das Ergebnis zu einem Attributswurf seiner Wahl addieren. Es kann mit dem W4 vor oder nach dem Attributswurf würfeln. Dann endet der Zauber.
+      `,
+      description_en: `
+        You touch one willing creature. Once before the spell ends, the target can roll a d4 and add the number rolled to one ability check of its choice. It can roll the die before or after making the ability check. The spell then ends.
+      `,
       school: 'Divination',
       isRanged: false,
       range: 5,
@@ -97,7 +101,7 @@ export class SpellsService {
       isCustom: false,
       german: 'Totenläuten',
       english: 'tollTheDead',
-      classes: ['Cleric', 'Warlock', 'Wizard'],
+      classes: ['Test', 'Cleric', 'Warlock', 'Wizard'],
       level: 0,
       cost: 'action',
       duration: 0,
@@ -114,28 +118,1452 @@ export class SpellsService {
       damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'necrotic' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
-        'Du zeigst auf eine Kreatur innehalb von 18 Meter, die du sehen kannst und der Klang schmerzhafter Glocken füllt die Luft um sie herum für einen Moment. Das Ziel muss einen Weisheitsrettungswurf machen oder 1W8 Nekrotischen Schaden erleiden. Wenn das Ziel bereits Schaden erlitten hat, erhöht sich der Schaden auf 1W12.',
+      description_de: `
+        <p>Du zeigen auf eine Kreatur, die Sie in Reichweite sehen können, und der Klang einer traurigen Glocke erfüllt für einen Moment die Luft um sie herum. Dem Ziel muss ein Weisheitswurf gelingen oder es erleidet 1W8 nekrotischen Schaden. Wenn dem Ziel einer seiner Trefferpunkte fehlt, erleidet es stattdessen 1W12 nekrotischen Schaden.
+
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um einen Würfel, wenn du 5 erreichstth Stufe (2W8 oder 2W12), 11th Stufe (3W8 oder 3W12) und 17th Stufe (4W8 oder 4W12)</p>
+      `,
+      description_en: `
+        <p>You point at one creature you can see within range, and the sound of a dolorous bell fills the air around it for a moment. The target must succeed on a Wisdom saving throw or take 1d8 necrotic damage. If the target is missing any of its hit points, it instead takes 1d12 necrotic damage.<p>
+
+        <p> <b>At Higher Levels:</b> The spell’s damage increases by one die when you reach 5th level (2d8 or 2d12), 11th level (3d8 or 3d12), and 17th level (4d8 or 4d12).<p>
+      `,
+      school: 'Necromancy',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 2,
+      isCustom: false,
+      german: 'Thaumaturgie',
+      english: 'thaumaturgy',
+      classes: ['Test', 'Cleric'],
+      level: 0,
+      cost: 'action',
+      duration: 10,
+      timeToCast: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: false,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du manifestierst ein kleines Wunder, ein Zeichen übernatürlicher Macht, in Reichweite. Du kannst einen der folgenden magischen Effekte in Reichweite erschaffen:</p>
+        <ul>
+          <li>Deine Stimme dröhnt für 1 Minute dreimal so laut, wie normal.</li>
+          <li>Du lässt Flammen flackern, heller oder dunkler werden oder die Farbe wechseln. All dies hält 1 Minute an.</li>
+          <li>Du erzeugst für 1 Minute harmlose Erschütterungen im Boden.</li>
+          <li>Du erschaffst ein kurzes Geräusch, das von einem Punkt deiner Wahl in Reichweite ertönt, wie ein Grollen von Donner, den Ruf eines Raben oder ein unheilvolles Flüstern.</li>
+          <li>Du lässt eine nicht verriegelte Tür oder ein Fenster auffliegen oder zuschlagen.</li>
+          <li>Du änderst für 1 Minute das Aussehen deiner Augen.</li>
+        </ul>
+        <p>Wenn du diesen Zauber mehrmals wirkst, kannst du bis zu drei der nicht sofortigen Effekte gleichzeitig aktiviert haben und du kannst solche Effekte als Aktion aufheben.</p>
+      `,
+      description_en: `
+        <p>You manifest a minor wonder, a sign of supernatural power, within range. You create one of the following magical effects within range.</p>
+        <ul>
+          <li>Your voice booms up to three times as loud as normal for 1 minute.</li>
+          <li>You cause flames to flicker, brighten, dim, or change color for 1 minute.</li>
+          <li>> You cause harmless tremors in the ground for 1 minute.</li>
+          <li>You create an instantaneous sound that originates from a point of your choice within range, such as a rumble of thunder, the cry of a raven, or ominous whispers.</li>
+          <li>You instantaneously cause an unlocked door or window to fly open or slam shut.</li>
+          <li>You alter the appearance of your eyes for 1 minute.</li>
+        <p>If you cast this spell multiple times, you can have up to three of its 1-minute effects active at a time, and you can dismiss such an effect as an action.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 3,
+      german: 'Gift versprühen',
+      english: 'sprayPoison',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Artificer', 'Sorcerer', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Constitution',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd12', damageType: 'poison' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `<p>Du streckst deine Hand in Richtung einer Kreatur in Reichweite, die du sehen kannst, und erzeugst eine Wolke aus ekelhaftem Gas aus deiner Handfläche. Die Kreatur muss einen Konstitutionsrettungswurf schaffen, sonst erleidet sie 1W12 Giftschaden.</p>`,
+      description_en: `
+        <p>You extend your hand toward a creature you can see within range and project a puff of noxious gas from your palm. The creature must succeed on a Constitution saving throw or take 1d12 poison damage.</p>
+      `,
+      school: 'Conjuration',
+      isRanged: true,
+      range: 10,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 4,
+      german: 'Ausbessern',
+      english: 'mending',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Cleric', 'Druid', 'Wizard', 'Sorcerer'],
+      timeToCast: 10,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Dieser Zauber repariert eine Bruchstelle oder einen Riss in einem Gegenstand, den du berührst, wie ein zerbrochenes Kettenglied, die beiden Hälften eines zerbrochenen Schlüssels, einen zerrissenen Umhang oder einen lecken Weinschlauch. Solange der Riss oder die Bruchstelle in keiner Dimension größer als 1 Fuß ist, kannst du sie flicken, sodass keine Spur des vorherigen Schadens übrigbleibt.</p>
+        <p>Der Zauber kann einen magischen Gegenstand oder ein Konstrukt auf physische Weise reparieren, der Zauber kann einem solchen Gegenstand aber nicht seine Magie wiedergeben.</p>`,
+      description_en: `
+        <p>This spell repairs a single break or tear in an object you touch, such as broken chain link, two halves of a broken key, a torn clack, or a leaking wineskin. As long as the break or tear is no larger than 1 foot in any dimension, you mend it, leaving no trace of the former damage.</p>
+        <p>This spell can physically repair a magic item or construct, but the spell can't restore magic to such an object.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 5,
+      german: 'Befall',
+      english: 'infestation',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Sorcerer', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Constitution',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'poison' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du lässt eine Wolke aus Parasiten auf ein Ziel in maximal 30 Fuß Distanz localStorage. Das Ziel muss einen Konstitutionsrettungswurf bestehen, oder 1W6 Giftschaden erleiden und 5 Fuß in eine zufällige Richtung laufen. Ein W4 gibt die Richtung vor:</p>
+        <ul>
+          <li>1: Norden</li>
+          <li>2: Süden</li>
+          <li>3: Westen</li>
+          <li>4: Osten</li>
+        </ul>
+        <p>Der Zauber löst keine Gelegenheitsangriffe aus.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um 1W6, wenn du die 5. Stufe (2W6), die 11. Stufe (3W6) und die 17. Stufe (4W6) erreichst.</p>
+      `,
+      description_en: `
+        <p>You cause a cloud of mites, fleas, and other parasites to appear momentarily on one creature you can see within range. The target must succeed on a Constitution saving throw, or it takes 1d6 poison damage and moves 5 feet in a random direction if it can move and its speed is at least 5 feet. Roll a d4 for the direction:
+        <ul>
+          <li>1: north</li>
+          <li>2: south</li>
+          <li>3: east</li>
+          <li>4: west</li>
+          </ul>
+        <p>This movement doesn’t provoke opportunity attacks, and if the direction rolled is blocked, the target doesn’t move.</p>
+        <p>The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>
+      `,
+      school: 'Conjuration',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+    },
+    {
+      id: 6,
+      german: 'Blitzköder',
+      english: 'lightningLure',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Wizard', 'Warlock'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: false,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Strength',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'lightning' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du wirft eine Blitzfalle auf eine Kreatur in 15 Fuß Distanz. Das Ziel muss einen Stärkerettungswurf bestehen, oder 1W8 Blitzschaden erleiden und 10 Fuß in deine Richtung gezogen werden.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um 1W8, wenn du die 5. Stufe (2W8), die 11. Stufe (3W8) und die 17. Stufe (4W8) erreichst.</p>
+      `,
+      description_en: `
+        <p>You create a lash of lightning energy that strikes at one creature of your choice that you can see within range. The target must succeed on a Strength saving throw or be pulled up to 10 feet in a straight line toward you and then take 1d8 lightning damage if it is within 5 feet of you.</p>
+        <p><b>At Higher Levels:</b> The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>
+
+      `,
+      school: 'Evocation',
+      isRanged: true,
+      range: 15,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+    },
+    {
+      id: 7,
+      german: 'Botschaft',
+      english: 'message',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Wizard', 'Sorcerer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 1,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du deutest mit dem Finger auf eine Kreatur in Reichweite und flüsterst eine Botschaft. Das Ziel (und nur das Ziel) hört die Botschaft und kann in einem Flüstern antworten, das nur du hören kannst.</p>
+      <p>Du kannst diesen Zauber durch feste Gegenstände hindurch wirken, wenn du das Ziel kennst und weißt, dass es jenseits der Barriere liegt. "Magische Stille", 1 Fuß Stein, 15 Fuß Holz, eine dünne Schicht Blei oder gewöhnliches Metall blockieren den Zauber. Der Zauber muss nicht einer geraden Linie folgen und kann frei um Ecken oder durch Öffnungen reisen.</p>`,
+      description_en: `
+      <p>You point your finger toward a creature within range and whisper a message. The target (and only the target) hears the message and can reply in a whisper that only you can hear.</p>
+      <p>You can cast this spell through solid objects if you are familiar with the target and know it is beyond the barrier. Magical silence, 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood blocks the spell. The spell doesn’t have to follow a straight line and can travel freely around corners or through openings.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 120,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 8,
+      german: 'Donnerschlag',
+      english: 'thunderclap',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Druid', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Constitution',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'thunder' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du erzeugst einen Knall, der bis zu 100 Fuß weit zu hören ist. Jede Kreatur in Reichweite, außer dir, muss einen Konstitutionsrettungswurf schaffen oder 1W6 Donnerschaden erleiden.</p>
+        <p>Der Schaden des Zaubers erhöht sich um 1W6, wenn du die 5. Stufe (2W6), die 11. Stufe (3W6) und die 17. Stufe (4W6) erreichst.</p>
+        `,
+      description_en: `
+        <p>You create a burst of thunderous sound that can be heard up to 100 feet away. Each creature within range, other than you, must succeed on a Constitution saving throw or take 1d6 thunder damage.</p>
+        <p>The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>
+      `,
+      school: 'Evocation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'circle',
+      radius: 5,
+    },
+    {
+      id: 9,
+      german: 'Dornenpeitsche',
+      english: 'thornWhip',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'piercing' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du erschaffst eine lange, dornige Peitsche aus Efeu oder einem anderen Pflanzenmaterial, die du auf eine Kreatur in Reichweite richtest. Dein Angriffswurf mit dem Zauberangriffswurf bestimmt, ob der Zauber trifft oder nicht. Bei einem Treffer erleidet das Ziel 1W6 Piercingschaden und du ziehst das Ziel 10 Fuß in deine Richtung. Wenn das Ziel dadurch in deine Reichweite kommt, kannst du es mit einem Angriff mit einer Nahkampfwaffe deiner Wahl angreifen.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um 1W6, wenn du die 5. Stufe (2W6), die 11. Stufe (3W6) und die 17. Stufe (4W6) erreichst.</p>`,
+      description_en: `
+        <p>You create a long, vine-like whip covered in thorns that lashes out at your command toward a creature in range. Make a melee spell attack against the target. If the attack hits, the creature takes 1d6 piercing damage, and if the creature is Large or smaller, you pull the creature up to 10 feet closer to you.</p>
+        <p>This spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 10,
+      german: 'Druidenkunst',
+      english: 'druidcraft',
+      level: 0,
+      isCustom: false,
+
+      classes: ['Test', 'Druid'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du flüsterst den Geistern der Natur zu und erschaffst innerhalb der Reichweite einen der folgenden Effekte:</p>
+        <ul>
+          <li>Du erschaffst einen kleinen, harmlosen sensorischen Effekt der vorhersagt, wie das Wetter an deinem Aufenthaltsort für die nächsten 24 Stunden sein wird. Der Effekt könnte sich als goldene Kugel für einen klaren Himmel, als Wolke für Regen, als fallende Schneeflocken für Schnee – und so weiter – manifestieren. Dieser Effekt hält eine Runde lang an.</li>
+          <li>Du sorgst dafür, dass augenblicklich eine Blume erblüht, eine Samenkapsel sich öffnet oder eine Blattknospe aufblüht.</li>
+          <li>Du erschaffst einen augenblicklichen, harmlosen sensorischen Effekt, wie fallende Blätter, einen Windhauch, die Geräusche eines kleinen Tieres oder den leichten Geruch eines Stinktiers. Der Effekt muss in einem Würfel mit 5 Fuß Kantenlänge passen.</li>
+          <li>Du kannst augenblicklich eine Kerze, eine Fackel oder ein kleines Lagerfeuer entzünden oder löschen.</li>
+        </ul>
+          `,
+      description_en: `
+        <p>Whispering to the spirits of nature, you create one of the following effects within range:</p>
+        <ul>
+          <li>You create a tiny, harmless sensory effect that predicts what the weather will be at your location for the next 24 hours. The effect might manifest as a golden orb for clear skies, a cloud for rain, falling snowflakes for snow, and so on. This effect persists for 1 round.</li>
+          <li>You instantly make a flower blossom, a seed pod open, or a leaf bud bloom.</li>
+          <li>You create an instantaneous, harmless sensory effect, such as falling leaves, a puff of wind, the sound of a small animal, or the faint odor of skunk. The effect must fit in a 5-foot cube.</li>
+          <li>You instantly light or snuff out a candle, a torch, or a small campfire.</li>
+        </ul>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 11,
+      german: 'Dröhnende Klinge',
+      english: 'boomingBlade',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 1,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'thunder' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du schwingst die Waffe, mit der der Zauber gewirkt wurde, und führst mit ihr einen Nahkampfangriff gegen eine Kreatur im Umkreis von 5 Fuß um dich herum aus. Bei einem Treffer erleidet das Ziel die normalen Effekte des Waffenangriffs und wird dann bis zum Beginn deines nächsten Zuges von dröhnender Energie umhüllt. Wenn sich das Ziel bis dahin freiwillig 5 Fuß oder mehr bewegt, erleidet das Ziel 1W8 Donnerschaden und der Zauber endet.</p>
+      <p>Der Schaden des Zaubers erhöht sich um 1W8, wenn du die 5. Stufe (2W8), die 11. Stufe (3W8) und die 17. Stufe (4W8) erreichst.</p>
+      `,
+      description_en: `
+      <p>You brandish the weapon used in the spell’s casting and make a melee attack with it against one creature within 5 feet of you. On a hit, the target suffers the weapon attack’s normal effects and then becomes sheathed in booming energy until the start of your next turn. If the target willingly moves 5 feet or more before then, the target takes 1d8 thunder damage, and the spell ends.</p>
+      <p>At 5th level, the melee attack deals an extra 1d8 thunder damage to the target on a hit, and the damage the target takes for moving increases to 2d8. Both damage rolls increase by 1d8 at 11th level (2d8 and 3d8) and again at 17th level (3d8 and 4d8).</p>
+      `,
+      school: 'Evocation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 11,
+      german: 'Einfache Illusion',
+      english: 'minorIllusion',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Wizard', 'Warlock', 'Sorcerer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 1,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du erschaffst ein Geräusch oder ein Bild eines Gegenstands in Reichweite, das für die Wirkungsdauer anhält. Die Illusion endet auch, wenn du sie als Aktion aufhebst oder diesen Zauber noch einmal wirkst. Wenn du ein Geräusch erschaffst, kann die Lautstärke von einem Flüstern bis zu einem Schrei reichen. Es kann deine Stimme sein, die Stimme eines anderen, das Brüllen eines Löwen, schlagende Trommeln oder ein anderes Geräusch deiner Wahl. Das Geräusch hält für die Wirkungsdauer an, oder du machst einzelne Laute zu verschiedenen Zeiten bis der Zauber endet.</p>
+      <p>Wenn du das Bildnis eines Gegenstandes erschaffst - wie das eines Stuhles, schlammiger Fußabdrücke oder einer kleinen Truhe - kann es nicht größer als ein Würfel mit einer Seitenlänge von 1,50m sein. Das Bild kann keine Geräusche, kein Licht, keine Gerüche oder andere sensorische Effekte erzeugen. Körperliche Interaktion mit dem Trugbild offenbart, dass es sich um eine Illusion handelt, weil Dinge es einfach durchdringen können. Eine Kreatur, die ihre Aktion verwendet, um das Bildnis oder das Geräusch zu untersuchen, kann erkennen, dass es sich um eine Illusion handelt, indem sie einen erfolgreichen Wurf auf Intelligenz (Nachforschungen) gegen deinen Zauberrettungswurf-SG ablegt. Wenn die Kreatur die Illusion als das durchschaut, was sie ist, dann verblast sie für die Kreatur.</p>
+      `,
+      description_en: `
+      <p>You create a sound or an image of an object within range that lasts for the duration. The illusion also ends if you dismiss it as an action or cast this spell again.</p>
+      <p>If you create a sound, its volume can range from a whisper to a scream. It can be your voice, someone else’s voice, a lion’s roar, a beating of drums, or any other sound you choose. The sound continues unabated throughout the duration, or you can make discrete sounds at different times before the spell ends.</p>
+      <p>If you create an image of an object - such as a chair, muddy footprints, or a small chest - it must be no larger than a 5-foot cube. The image can’t create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it. A creature that uses its action to examine the image can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the illusion becomes faint to the creature.</p>
+      `,
+      school: 'Illusion',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 12,
+      german: 'Erde Formen',
+      english: 'moldEarth',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 600,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: true,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du wählst ein Stück Erde oder Stein in Reichweite, das du sehen kannst und das in einen Würfel von 5 Fußn passt. Du kannst es auf eine der folgenden Arten manipulieren:</p>
+        <ul>
+          <li>Wenn du einen Bereich mit loser Erde anvisierst, kannst du sie augenblicklich ausheben, über den Boden bewegen und bis zu 5 Fuß entfernt ablegen. Diese Bewegung hat nicht genug Kraft, um Schaden zu verursachen.</li>
+          <li>Du lässt Formen, Farben oder beides auf der Erde oder den Steinen erscheinen, indem du Wörter schreibst, Bilder kreierst oder Muster formst. Die Veränderungen halten 1 Stunde lang an.</li>
+          <li>Befindet sich die Erde oder der Stein, auf den du zielst, auf dem Boden, verwandelst du ihn in schwieriges Terrain. Alternativ kannst du den Boden auch in normales Gelände verwandeln, wenn er bereits schwieriges Gelände ist. Diese Veränderung hält 1 Stunde lang an.</li>
+        </ul>
+        <p>Wenn du diesen Zauber mehrmals wirkst, kannst du nicht mehr als zwei seiner nicht-augenblicklichen Effekte gleichzeitig aktiv haben, und du kannst einen solchen Effekt als eine Aktion abbrechen.</p>
+      `,
+      description_en: `
+        <p>You choose a portion of dirt or stone that you can see within range and that fits within a 5-foot cube. You manipulate it in one of the following ways:</p>
+        <ul>
+          <li>If you target an area of loose earth, you can instantaneously excavate it, move it along the ground, and deposit it up to 5 feet away. This movement doesn’t have enough force to cause damage.</li>
+          <li>You cause shapes, colors, or both to appear on the dirt or stone, spelling out words, creating images, or shaping patterns. The changes last for 1 hour.</li>
+          <li>If the dirt or stone you target is on the ground, you cause it to become difficult terrain. Alternatively, you can cause the ground to become normal terrain if it is already difficult terrain. This change lasts for 1 hour.</li>
+        </ul>
+        <p>If you cast this spell multiple times, you can have no more than two of its non-instantaneous effects active at a time, and you can dismiss such an effect as an action.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'cube',
+      radius: 5,
+    },
+    {
+      id: 13,
+      german: 'Erfrierung',
+      english: 'frostbite',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Warlock', 'Artificer', 'Sorcerer', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Constitution',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'cold' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du verursachst betäubenden Frost auf einer Kreatur in Reichweite, die du sehen kannst. Das Ziel muss einen Rettungswurf auf Konstitution machen. Bei einem misslungenen Rettungswurf erleidet das Ziel 1W6 Kälteschaden und hat Nachteil beim nächsten Angriffswurf, den es vor dem Ende seines nächsten Zuges macht.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W6 wenn du Stufe 5 (auf 2W6), Stufe 11 (auf 3W6) und Stufe 17 (auf 4W6) erreichst.</p>
+      `,
+      description_en: `
+        <p>You cause numbing frost to form on one creature that you can see within range. The target must make a Constitution saving throw. On a failed save, the target takes 1d6 cold damage, and it has disadvantage on the next weapon attack roll it makes before the end of its next turn.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>
+      `,
+      school: 'Evocation',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 14,
+      german: 'Feuerpfeil',
+      english: 'fireBolt',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Wizard', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd10', damageType: 'fire' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du schleuderst einen Splitter aus Feuer auf eine Kreatur in Reichweite. Lege einen Fernkampf-Zauberangriff gegen das Ziel ab. Bei einem Treffer erleidet das Ziel 1W10 Feuerschaden. Ein brennbarer Gegenstand, der von diesem Zauber getroffen wird, geht in Flammen auf, wenn er nicht getragen oder in der Hand gehalten wird.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W10 wenn du Stufe 5 (auf 2W10), Stufe 11 (auf 3W10) und Stufe 17 (auf 4W10) erreichst.</p>
+      `,
+      description_en: `
+        <p>You hurl a mote of fire at a creature or object within range. Make a ranged spell attack against the target. On a hit, the target takes 1d10 fire damage. A flammable object hit by this spell ignites if it isn’t being worn or carried.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d10 when you reach 5th level (2d10), 11th level (3d10), and 17th level (4d10).</p>
+      `,
+      school: 'Evocation',
+      isRanged: true,
+      range: 120,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 15,
+      german: 'Flammen Erzeugen',
+      english: 'produceFlames',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 100,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'fire' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Eine flackernde Flamme erscheint in deiner Hand. Die Flamme bleibt für die Wirkungsdauer bestehen und beschädigt weder dich noch deine Ausrüstung. Sie strahlt in einem Radius von 15 Fuß helles Licht und in einem zusätzlichen Radius von 15 Fuß dämmriges Licht ab. Der Zauber endet, wenn du ihn als Aktion aufhebst oder noch einmal wirkst.</p>
+        <p>Du kannst mit der Flamme auch angreifen, doch dies beendet den Zauber. Wenn du diesen Zauber wirkst, oder als Aktion in einem späteren Zug, kannst du die Flamme auf eine Kreatur innerhalb von 30 Fuß werfen. Lege einen Fernkampf-Zauberangriff ab. Bei einem Treffer erleidet das Ziel 1W8 Feuerschaden.</p>
+        <p>Der Schaden des Zaubers erhöht sich um je 1W8 wenn du Stufe 5 (auf 2W8), Stufe 11 (auf 3W8) und Stufe 17 (auf 4W8) erreichst.</p>
+      `,
+      description_en: `
+        <p>A flickering flame appears in your hand. The flame remains there for the duration and harms neither you nor your equipment. The flame sheds bright light in a 10-foot radius and dim light for an additional 10 feet. The spell ends if you dismiss it as an action or if you cast it again.</p>
+        <p>You can also attack with the flame, although doing so ends the spell. When you cast this spell, or as an action on a later turn, you can hurl the flame at a creature within 30 feet of you. Make a ranged spell attack. On a hit, the target takes 1d8 fire damage.</p>
+        <p>The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>
+      `,
+      school: 'Conjuration',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 16,
+      german: 'Flammen kontrollieren',
+      english: 'controlFlames',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Artificer', 'Sorcerer', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 600,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du wählst ein nicht-magisches Feuer in Reichweite, das du sehen kannst, und das in einem Würfel mit einer Seitenlänge von 5 Fuß passt. Du beeinflusst es auf eine der folgenden Arten:</p>
+        <ul>
+          <li>Du dehnst die Flamme augenblicklich 5 Fuß in eine Richtung aus, vorausgesetzt, dass Holz oder anderer Brennstoff an der neuen Stelle vorhanden ist.</li>
+          <li>Du löschst die Flammen innerhalb des Würfels augenblicklich.</li>
+          <li>Du verdoppelst oder halbierst den Bereich des hellen und schwachen Lichts, das die Flamme ausstrahlt, veränderst ihre Farbe oder beides. Die Veränderung hält 1 Stunde lang an.</li>
+          <li>Du lässt einfache Formen - wie die vage Form einer Kreatur, eines unbelebten Objekts oder eines Ortes - in den Flammen erscheinen und nach Belieben beleben. Die Formen bleiben 1 Stunde lang bestehen.</li>
+        </ul>
+        <p>Wenn du diesen Zauber mehrmals wirkst, kannst du bis zu drei seiner nicht-augenblicklichen Effekte gleichzeitig aktiv haben, und du kannst einen solchen Effekt als Aktion abbrechen.</p>
+      `,
+      description_en: `
+        <p>You choose nonmagical flame that you can see within range and that fits within a 5-foot cube. You affect it in one of the following ways:</p>
+        <ul>
+          <li>You instantaneously expand the flame 5 feet in one direction, provided that wood or other fuel is present in the new location.</li>
+          <li>You instantaneously extinguish the flames within the cube.</li>
+          <li>You double or halve the area of bright light and dim light cast by the flame, change its color, or both. The change lasts for 1 hour.</li>
+          <li>You cause simple shapes - such as the vague form of a creature, an inanimate object, or a location - to appear within the flames and animate as you like. The shapes last for 1 hour.</li>
+        </ul>
+        <p>If you cast this spell multiple times, you can have up to three of its non-instantaneous effects active at a time, and you can dismiss such an effect as an action.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'cube',
+      radius: 5,
+    },
+    {
+      id: 17,
+      german: 'Freundschaft',
+      english: 'friends',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 10,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: true,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Für die Wirkungsdauer hast du einen Vorteil auf alle Charisma-Würfe, die auf eine Kreatur deiner Wahl gewirkt werden, die dir nicht feindlich gesonnen sind. Wenn der Zauber endet, begreift die Kreatur, dass du Magie verwendet hast, um ihre Stimmung zu beeinflussen und wird feindselig. Eine Kreatur, die zu Gewalt neigt, könnte dich angreifen. Andere Kreaturen könnten sich (nach Entscheidung des Spielleiters) andere Möglichkeiten suchen, um sich zu rächen, abhängig von der Art, wie du mit ihr interagiert hast.</p>
+      `,
+      description_en: `
+        <p>For the duration, you have advantage on all Charisma checks directed at one creature of your choice that isn’t hostile toward you. When the spell ends, the creature realizes that you used magic to influence its mood and becomes hostile toward you. A creature prone to violence might attack you. Another creature might seek retribution in other ways (at the DM’s discretion), depending on the nature of your interaction with it.</p>
+      `,
+      school: 'Enchantment',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 18,
+      german: 'Gedankensplitter',
+      english: 'mindSliver',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: false,
+      needsMaterial: false,
+      needsConcentration: false,
+
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Intelligence',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'psychic' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du treibst einen verstörenden Splitter psychischer Energie in den Geist einer Kreatur, die du in Reichweite sehen kannst. Das Ziel muss einen erfolgreichen Rettungswurf auf Intelligenz durchführen, sonst nimmt es 1W6 psychischen Schaden und muss 1W4 von seinem nächsten Rettungswurf vor Ende deines nächsten Zuges abziehen.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W6 wenn du Stufe 5 (auf 2W6), Stufe 11 (auf 3W6) und Stufe 17 (auf 4W6) erreichst.</p>
+      `,
+      school: 'Enchantment',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 19,
+      german: 'Gehässiger Spott',
+      english: 'viciousMockery',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: false,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Wisdom',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd4', damageType: 'psychic' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du rufst einer Kreatur in Richweite, die du sehen kannst, eine wahre Flut von Beleidigungen entgegen, in die subtile Verzauberungen gewebt sind. Wenn das Ziel dich hören kann (es braucht dich nicht zu verstehen), muss ihm ein Weisheitsrettungswurf gelingen, um nicht 1W4 psychischen Schaden zu erleiden und beim nächsten Angriffswurf im Nachteil zu sein, den es bis zum Einde seines nächsten Zuges ausführt.</p>
+        <p><b>Auf höheren Graden:</b> Der Schaden des Zaubers steigt jeweils um 1W4 bei Erreichen der 5. (2W4), 11. (3W4) und 17. Stufe (4W4).</p>`,
+      description_en: `
+        <p>You unleash a string of insults laced with subtle enchantments at a creature you can see within range. If the target can hear you (though it need not understand you), it must succeed on a Wisdom saving throw or take 1d4 psychic damage and have disadvantage on the next attack roll it makes before the end of its next turn.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d4 when you reach 5th level (2d4), 11th level (3d4), and 17th level (4d4).</p>
+      `,
+      school: 'Enchantment',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 20,
+      german: 'Gift versprühen',
+      english: 'poisonSpray',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Constitution',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd12', damageType: 'poison' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du streckst deine Hand in Richtung einer Kreatur in Reichweite, die du sehen kannst, und erzeugst eine Wolke aus ekelhaftem Gas aus deiner Handfläche. Die Kreatur muss einen Rettungswurf auf Konstitution schaffen, sonst erleidet sie 1W12 Giftschaden.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W12 wenn du Stufe 5 (auf 2W12), Stufe 11 (auf 3W12) und Stufe 17 (auf 4W12) erreichst.</p>
+      `,
+      description_en: `
+        <p>You extend your hand toward a creature you can see within range and project a puff of noxious gas from your palm. The creature must succeed on a Constitution saving throw or take 1d12 poison damage.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d12 when you reach 5th level (2d12), 11th level (3d12), and 17th level (4d12).</p>
+      `,
+      school: 'Conjuration',
+      isRanged: true,
+      range: 10,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 21,
+      german: 'Grünfeuerklinge',
+      english: 'greenFlameBlade',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: false,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '0', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Als Teil der Aktion, mit der du diesen Zauber wirkst, musst du einen Nahkampfangriff mit einer Waffe gegen eine Kreatur in der Reichweite des Zaubers ausführen, sonst misslingt der Zauber. Bei einem Treffer erleidet das Ziel die normalen Auswirkungen des Angriffs, und grünes Feuer springt vom Ziel auf eine andere Kreatur deiner Wahl, die du sehen kannst und die sich innerhalb von 5 Fußn zum Ziel befindet. Die zweite Kreatur erleidet Feuerschaden gleich dem Modifikator deines Attributs zum Zauberwirken.</p>
+      <p><b>Auf höheren Stufen:</b> Auf der 5. Stufe fügt der Nahkampfangriff dem Ziel zusätzlich 1W8 Punkte Feuerschaden zu, und der Schaden, den das zweite Ziel erleidet, steigt um 1W8 + der Modifikator deines Attributs zum Zauberwirken. Beide Schadensarten steigen in der 11. und 17. Stufe um 1W8.</p>
+      `,
+      description_en: `
+      <p>As part of the action used to cast this spell, you must make a melee attack with a weapon against one creature within the spell’s range, otherwise the spell fails. On a hit, the target suffers the weapon attack’s normal effects, and green fire leaps from the target to a different creature of your choice that you can see within 5 feet of it. The second creature takes fire damage equal to your spellcasting ability modifier.</p>
+      <p><b>At higher levels:</b> At 5th level, the melee attack deals an extra 1d8 fire damage to the target, and the fire damage to the second creature increases to 1d8 + your spellcasting ability modifier. Both damage rolls increase by 1d8 at 11th level and 17th level.</p>
+      `,
+      school: 'Evocation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 22,
+      german: 'Heilige Flamme',
+      english: 'sacredFlame',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Cleric'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Dexterity',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'radiant' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Flammengleiches Licht senkt sich auf eine Kreatur in Reichweite, die du sehen kannst, herab. Die Kreatur muss einen Rettungswurf auf Geschicklichkeit schaffen, sonst erleidet sie 1W8 gleißenden Schaden. Bei einem Rettungswurf erhält das Ziel keinen Vorteil aus Deckung.</p>
+      <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W8 wenn du Stufe 5 (auf 2W8), Stufe 11 (auf 3W8) und Stufe 17 (auf 4W8) erreichst.</p>
+      `,
+      description_en: `
+      <p>Flame-like radiance descends on a creature that you can see within range. The target must succeed on a Dexterity saving throw or take 1d8 radiant damage. The target gains no benefit from cover for this saving throw.</p>
+      <p><b>At higher levels:</b> The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>
+      `,
+      school: 'Evocation',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 23,
+      german: 'Kalte Hand',
+      english: 'chillTouch',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'necrotic' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du erschaffst eine gespenstische, skelettierte Hand im Bereich einer Kreatur in Reichweite. Mache einen Fernkampf-Zauberangriff gegen die Kreatur, um sie mit der Kälte des Grabes zu attackieren. Bei einem Treffer erleidet die Kreatur 1W8 nekrotischen Schaden und kann bis zu Beginn deines nächsten Zuges keine Trefferpunkt zurückbekommen. Bis dann hält sich die Hand an dem Ziel fest.</p>
+      <p>Wenn du eine untote Kreatur triffst, hat sie außerdem Nachteil auf Angriffswürfe gegen dich bis zum Ende deines nächsten Zuges.</p>
+      <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W8 wenn du Stufe 5 (auf 2W8), Stufe 11 (auf 3W8) und Stufe 17 (auf 4W8) erreichst.</p>
+      `,
+      description_en: `
+      <p>You create a ghostly, skeletal hand in the space of a creature within range. Make a ranged spell attack against the creature to assail it with the chill of the grave. On a hit, the target takes 1d8 necrotic damage, and it can’t regain hit points until the start of your next turn. Until then, the hand clings to the target.</p>
+      <p>If you hit an undead target, it also has disadvantage on attack rolls against you until the end of your next turn.</p>
+      <p><b>At higher levels:</b> The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>
+      `,
       school: 'Necromancy',
       isRanged: true,
-      range: 60,
+      range: 120,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 24,
+      german: 'Klingenbann',
+      english: 'bladeWard',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 100,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: false,
+      needsMaterial: false,
+      needsConcentration: true,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du streckst die Hand aus und zeichnest ein Zeichen des Schutzes in die Luft. Bis zum Ende deines nächsten Zuges hast du Resistenz gegen Wucht-, Hieb- und Stichschaden, der von Angriffen mit Waffen verursacht wird.</p>
+      `,
+      description_en: `
+      <p>You extend your hand and trace a sigil of warding in the air. Until the end of your next turn, you have resistance against bludgeoning, piercing, and slashing damage dealt by weapon attacks.</p>
+      `,
+      school: 'Abjuration',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 25,
+      german: 'Kältestrahl',
+      english: 'rayOfFrost',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Wizard', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'cold' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Ein eisiger Strahl aus blau-weißem Licht schießt auf eine Kreatur in Reichweite zu. Lege einen Fernkampf-Zauberangriff gegen das Ziel ab. Bei einem Treffer erleidet die Kreatur 1W8 Kälteschaden und ihre Bewegungsrate wird bis zum Beginn deines nächsten Zuges um 10 Fuß verringert.</p>
+      <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W8 wenn du Stufe 5 (auf 2W8), Stufe 11 (auf 3W8) und Stufe 17 (auf 4W8) erreichst.</p>
+      `,
+      description_en: `
+      <p>A frigid beam of blue-white light streaks toward a creature within range. Make a ranged spell attack against the target. On a hit, it takes 1d8 cold damage, and its speed is reduced by 10 feet until the start of your next turn.</p>
+      <p><b>At higher levels:</b> The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>
+      `,
+      school: 'Evocation',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 26,
+      german: 'Lagerfeuer erschaffen',
+      english: 'createBonfire',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 10,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: true,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Dexterity',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'fire' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du erschaffst ein Lagerfeuer in Reichweite auf dem Boden, den du sehen kannst. Bis der Zauber endet, füllt das Lagerfeuer einen Würfel von 5 Fußn. Jede Kreatur, die sich zum Zeitpunkt des Zaubers im Bereich des Feuers befindet, muss einen Rettungswurf auf Geschicklichkeit ablegen oder 1W8 Feuerschaden erleiden. Eine Kreatur muss den Rettungswurf auch machen, wenn sie den Raum des Lagerfeuers zum ersten Mal in einem Zug betritt oder ihren Zug dort beendet.</p>
+      <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W8 wenn du Stufe 5 (auf 2W8), Stufe 11 (auf 3W8) und Stufe 17 (auf 4W8) erreichst.</p>
+      `,
+      description_en: `
+      <p>You create a bonfire on ground that you can see within range. Until the spell ends, the magic bonfire fills a 5-foot cube. Any creature in the bonfire’s space when you cast the spell must succeed on a Dexterity saving throw or take 1d8 fire damage. A creature must also make the saving throw when it enters the bonfire’s space for the first time on a turn or ends its turn there.</p>
+      <p><b>At higher levels:</b> The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>
+      `,
+      school: 'Conjuration',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'cube',
+      radius: 5,
+    },
+    {
+      id: 27,
+      german: 'Licht',
+      english: 'light',
+      level: 0,
+      isCustom: false,
+      classes: [
+        'Test',
+        'Bard',
+        'Cleric',
+        'Druid',
+        'Paladin',
+        'Sorcerer',
+        'Wizard',
+      ],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 600,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: false,
+      needsMaterial: true,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du berührst einen Gegenstand, der nicht größer als 10 Fuß in einer beliebigen Dimension ist. Bis der Zauber endet, strahlt das Objekt helles Licht in einem Radius von 20 Fußn und schwaches Licht für weitere 20 Fuß aus. Das Licht kann nach Belieben gefärbt werden. Wenn du das Objekt vollständig mit etwas Undurchsichtigem abdeckst, wird das Licht blockiert. Der Zauber endet, wenn du ihn erneut wirkst oder ihn als Aktion abbrichst.</p>
+      <p>Wenn du ein Objekt anvisierst, das von einer feindlichen Kreatur gehalten oder getragen wird, muss diese Kreatur einen Rettungswurf auf Geschicklichkeit bestehen, um den Zauber zu vermeiden.</p>
+      `,
+      description_en: `
+      <p>You touch one object that is no larger than 10 feet in any dimension. Until the spell ends, the object sheds bright light in a 20-foot radius and dim light for an additional 20 feet. The light can be colored as you like. Completely covering the object with something opaque blocks the light. The spell ends if you cast it again or dismiss it as an action.</p>
+      <p>If you target an object held or worn by a hostile creature, that creature must succeed on a Dexterity saving throw to avoid the spell.</p>
+      `,
+      school: 'Evocation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 28,
+      german: 'Magierhand',
+      english: 'mageHand',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 10,
+      canRitual: 'true',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Eine gespenstische, schwebende Hand erscheint an einem Punkt deiner Wahl in Reichweite. Die Hand bleibt für die Wirkungsdauer bestehen oder bis du sie mit einer Aktion wegschickst. Die Hand verschwindet, wenn sie sich weiter als 30 Fuß von dir entfernt oder du den Zauber noch einmal wirkst.</p>
+      <p>Du kannst eine Aktion verwenden, um die Hand zu kontrollieren. Du kannst die Hand verwenden, um Gegenstände zu manipulieren, verschlossene Türen oder Behälter zu öffnen, einen Gegenstand aus einem geöffneten Behälter zu holen oder ihn zu verstauen, oder den Inhalt einer Phiole auszugießen. Du kannst die Hand immer wenn du sie verwendest bis zu 9m weit bewegen.</p>
+      <p>Die Hand kann nicht angreifen, keine magischen Gegenstände aktivieren oder mehr als 10 Pfund tragen.</p>
+      `,
+      description_en: `
+      <p>A spectral, floating hand appears at a point you choose within range. The hand lasts for the duration or until you dismiss it as an action. The hand vanishes if it is ever more than 30 feet away from you or if you cast this spell again.</p>
+      <p>You can use your action to control the hand. You can use the hand to manipulate an object, open an unlocked door or container, stow or retrieve an item from an open container, or pour the contents out of a vial. You can move the hand up to 30 feet each time you use it.</p>
+      <p>The hand can’t attack, activate magic items, or carry more than 10 pounds.</p>
+      `,
+      school: 'Conjuration',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 29,
+      german: 'Magiestein',
+      english: 'magicStone',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Hexenmeister'],
+      timeToCast: 0,
+      cost: 'bonus',
+      duration: 10,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'bludgeoning' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du berührst ein bis drei Kieselsteine und belegst sie mit Magie. Du oder eine andere Person kann mit einem der Kieselsteine einen Fernzauberangriff durchführen, indem du ihn wirfst oder mit einer Schleuder schleuderst. Wenn du ihn wirfst, hat er eine Reichweite von 60 Fuß. Wenn jemand anderes mit dem Kieselstein angreift, addiert dieser Angreifer deinen Zaubermodifikator, nicht den des Angreifers, zum Angriffswurf. Bei einem Treffer erleidet das Ziel Wuchtschaden in Höhe von 1W6 + deinem Zaubermodifikator. Treffer oder Fehlschuss, der Zauber endet dann auf dem Stein.</p>
+      <p>Wenn du diesen Zauber erneut wirkst, endet der Zauber auf allen Steinen, die noch davon betroffen sind, vorzeitig.</p>
+      `,
+      description_en: `
+      <p>You touch one to three pebbles and imbue them with magic. You or someone else can make a ranged spell attack with one of the pebbles by throwing it or hurling it with a sling. If thrown, it has a range of 60 feet. If someone else attacks with the pebble, that attacker adds your spellcasting ability modifier, not the attacker’s, to the attack roll. On a hit, the target takes bludgeoning damage equal to 1d6 + your spellcasting ability modifier. Hit or miss, the spell then ends on the stone.</p>
+      <p>If you cast this spell again, the spell ends on any pebbles still affected by your previous casting.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 30,
+      german: 'Resistenz',
+      english: 'resistance',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Cleric', 'Druid', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 10,
+      canRitual: 'true',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: true,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du berührst eine willige Kreatur. Einmal bevor der Zauber endet, kann das Ziel einen W4 werfen und die gewürfelte Zahl zu einem Rettungswurf seiner Wahl addieren. Es kann den Würfel werfen, bevor oder nachdem es den Rettungswurf gemacht hat. Der Zauber endet dann.</p>
+      `,
+      description_en: `
+      <p>You touch one willing creature. Once before the spell ends, the target can roll a d4 and add the number rolled to one saving throw of its choice. It can roll the die before or after making the saving throw. The spell then ends.</p>
+      `,
+      school: 'Abjuration',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 31,
+      german: 'Schauriger Strahl',
+      english: 'eldritchBlast',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Hexenmeister'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd10', damageType: 'force' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Ein Strahl aus knisternder Energie schießt auf eine Kreatur in Reichweite zu. Lege einen Fernkampf-Zauberangriff gegen das Ziel ab. Bei einem Treffer erleidet das Ziel 1W10 Energieschaden.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W10 wenn du Stufe 5 (auf 2W10), Stufe 11 (auf 3W10) und Stufe 17 (auf 4W10) erreichst.</p>
+      `,
+      description_en: `
+        <p>A beam of crackling energy streaks toward a creature within range. Make a ranged spell attack against the target. On a hit, the target takes 1d10 force damage.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d10 when you reach 5th level (2d10), 11th level (3d10), and 17th level (4d10).</p>
+      `,
+      school: 'Evocation',
+      isRanged: true,
+      range: 120,
       hasAreaOfEffect: false,
       areaOfEffectType: '',
       radius: 0,
     },
     {
-      id: 2,
+      id: 32,
+      german: 'Schockgriff',
+      english: 'shockingGrasp',
+      level: 0,
       isCustom: false,
-      german: 'Thaumaturgie',
-      english: 'thaumaturgy',
-      classes: ['Cleric'],
+      classes: ['Test', 'Sorcerer', 'Wizard', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd8', damageType: 'lightning' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Blitze springen aus deinen Händen und verpassen einer Kreatur, die du zu berühren versuchst, einen Schock. Führe einen Nahkampf-Zauberangriff gegen das Ziel durch. Du hast einen Vorteil beim Angriffswurf, wenn das Ziel Rüstung trägt, die aus Metall besteht. Bei einem Treffer erleidet die Kreatur 1W8 Blitzschaden und kann bis zum Beginn deines nächsten Zuges keine Reaktion durchführen.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W8 wenn du Stufe 5 (auf 2W8), Stufe 11 (auf 3W8) und Stufe 17 (auf 4W8) erreichst.</p>
+      `,
+      description_en: `
+        <p>Lightning springs from your hand to deliver a shock to a creature you try to touch. Make a melee spell attack against the target. You have advantage on the attack roll if the target is wearing armor made of metal. On a hit, the target takes 1d8 lightning damage, and it can’t take reactions until the start of its next turn.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>
+      `,
+      school: 'Evocation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 33,
+      german: 'Schwertexplosion',
+      english: 'swordBurst',
       level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Warlock', 'Wizard'],
+      timeToCast: 0,
       cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Dexterity',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'force' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Für einen Moment fegt eine Schar spektraler Klingen in Kreisform um dich herum. Alle Kreaturen innerhalb von 5 Fußn müssen einen Rettungswurf auf Geschicklichkeit ausführen, ansonsten erleiden sie 1W6 Energieschaden.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W6 wenn du Stufe 5 (auf 2W6), Stufe 11 (auf 3W6) und Stufe 17 (auf 4W6) erreichst.</p>
+      `,
+      description_en: `
+        <p>You create a momentary circle of spectral blades that sweep around you. Each creature within range, other than you, must succeed on a Dexterity saving throw or take 1d6 force damage.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>
+      `,
+      school: 'Conjuration',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'circle',
+      radius: 5,
+    },
+    {
+      id: 34,
+      german: 'Shillelagh',
+      english: 'shillelagh',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid'],
+      timeToCast: 0,
+      cost: 'bonus',
       duration: 10,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: true,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Das Holz einer Keule oder eines Kampfstabs, die du in der Hand hältst, ist mit der Kraft der Natur durchdrungen. Während dieser Zeit kannst du deine Zauberfähigkeit anstelle von Stärke für die Angriffs- und Schadenswürfe von Nahkampfangriffen mit dieser Waffe verwenden, und der Schadenswürfel der Waffe wird zu einem W8. Die Waffe wird außerdem magisch, falls sie es nicht schon ist. Der Zauber endet, wenn du ihn erneut wirkst oder wenn du die Waffe loslässt.</p>
+      `,
+      description_en: `
+        <p>The wood of a club or quarterstaff you are holding is imbued with nature’s power. For the duration, you can use your spellcasting ability instead of Strength for the attack and damage rolls of melee attacks using that weapon, and the weapon’s damage die becomes a d8. The weapon also becomes magical, if it isn’t already. The spell ends if you cast it again or if you let go of the weapon.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 35,
+      german: 'Säurespritzer',
+      english: 'acidSplash',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Wizard', 'Artificer'],
       timeToCast: 0,
+      cost: 'action',
+      duration: 0,
       canRitual: 'false',
       needsVerbal: true,
-      needsSomatic: false,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Dexterity',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'acid' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du schleuderst eine Blase aus Säure. Wähle eine Kreatur in Reichweite oder zwei Kreaturen in Reichweite, die sich innerhalb von 5 Fuß voneinander befinden. Das Ziel muss einen Rettungswurf auf Geschicklichkeit bestehen oder erleidet 1W6 Säureschaden.</p>
+        <p><b>Auf höheren Stufen:</b> Der Schaden des Zaubers erhöht sich um je 1W6 wenn du Stufe 5 (auf 2W6), Stufe 11 (auf 3W6) und Stufe 17 (auf 4W6) erreichst.</p>
+      `,
+      description_en: `
+        <p>You hurl a bubble of acid. Choose one creature within range, or choose two creatures within range that are within 5 feet of each other. A target must succeed on a Dexterity saving throw or take 1d6 acid damage.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>
+      `,
+      school: 'Conjuration',
+      isRanged: true,
+      range: 60,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'circle',
+      radius: 5,
+    },
+    {
+      id: 36,
+      german: 'Tanzende Lichter',
+      english: 'dancingLights',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Sorcerer', 'Wizard', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 10,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: true,
+      needsConcentration: true,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '0', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du erschaffst bis zu vier fackelgroße Lichter in Reichweite, die als Fackeln, Laternen oder leuchtende Kugeln erscheinen, die für die Dauer der Aktion in der Luft schweben. Du kannst die vier Lichter auch zu einer leuchtenden, vage humanoiden Form von mittlerer Größe kombinieren. Unabhängig davon, welche Form du wählst, verströmt jedes Licht ein schwaches Licht in einem Radius von 10 Fuß. Als Bonusaktion in deinem Zug kannst du die Lichter bis zu 300 Fuß weit an einen neuen Platz in Reichweite bewegen. Ein Licht muss sich in einem Umkreis von 20 Fußn um ein anderes durch diesen Zauber erzeugtes Licht befinden, und ein Licht erlischt, wenn es den Wirkungsbereich des Zaubers verlässt.</p>
+      `,
+      description_en: `
+        <p>You create up to four torch-sized lights within range, making them appear as torches, lanterns, or glowing orbs that hover in the air for the duration. You can also combine the four lights into one glowing vaguely humanoid form of Medium size. Whichever form you choose, each light sheds dim light in a 10-foot radius.</p>
+        <p>As a bonus action on your turn, you can move the lights up to 60 feet to a new spot within range. A light must be within 20 feet of another light created by this spell, and a light winks out if it exceeds the spell’s range.</p>
+      `,
+      school: 'Evocation',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 37,
+      german: 'Taschenspielerei',
+      english: 'prestidigitation',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Bard', 'Sorcerer', 'Wizard', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 600,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '0', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Dies ist ein einfacher Zaubertrick, den Zauberlehrlinge zum Üben verwenden. Du erzeugst einen der folgenden magischen Effekte in Reichweite:</p>
+        <ul>
+          <li>Du erzeugst einen unmittelbaren, harmlosen sensorischen Effekt, etwa einen Funkenregen, einen Windstoß, eine leise Melodie oder einen merkwürdigen Geruch.</li>
+          <li>Du entzündest oder löschst unmittelbar eine Kerze, eine Fackel oder ein kleines Lagerfeuer.</li>
+          <li>Du kannst unmittelbar einen Gegenstand, der nicht größer als ein Würfel mit 1 Fuß Kantenlänge ist, säubern oder verschmutzen.</li>
+          <li>Du kannst nichtlebendes Material, das nicht größer als ein Würfel mit 1 Fußn Kantenlänge ist, abkühlen, erhitzen oder würzen. Dies hält eine Stunde lang an.</li>
+          <li>Du lässt einen Farbfleck, ein Mal oder ein Symbol eine Stunde lang auf einem Gegenstand oder einer Oberfläche erscheinen.</li>
+          <li>Du erzeugst ein nichtmagisches Schmuckstück oder ein illusorisches Bild, das in deine Hand passt und das bis zum Ende deines nächsten Zuges erhalten bleibt.</li>
+        </ul>
+        <p>Wirkst du diesen Zauber mehrmals, können bis zu drei der langfristigen Effekte gleichzeitig aktiv sein. Du kannst einen solchen Effekt als Aktion beenden.</p>
+      `,
+      description_en: `
+        <p>This spell is a minor magical trick that novice spellcasters use for practice. You create one of the following magical effects within range:</p>
+        <ul>
+          <li>You create an instantaneous, harmless sensory effect, such as a shower of sparks, a puff of wind, faint musical notes, or an odd odor.</li>
+          <li>You instantaneously light or snuff out a candle, a torch, or a small campfire.</li>
+          <li>You instantaneously clean or soil an object no larger than 1 cubic foot.</li>
+          <li>You chill, warm, or flavor up to 1 cubic foot of nonliving material for 1 hour.</li>
+          <li>You make a color, a small mark, or a symbol appear on an object or a surface for 1 hour.</li>
+          <li>You create a nonmagical trinket or an illusory image that can fit in your hand and that lasts until the end of your next turn.</li>
+        </ul>
+        <p>If you cast this spell multiple times, you can have up to three of its non-instantaneous effects active at a time, and you can dismiss such an effect as an action.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 10,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 38,
+      german: 'Verschonung der Toten',
+      english: 'spareTheDying',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Cleric'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
       needsMaterial: false,
       needsConcentration: false,
       needsAttackRoll: false,
@@ -143,9 +1571,142 @@ export class SpellsService {
       doesDamage: false,
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du berührst eine lebende Kreatur mit 0 Trefferpunkten. Die Kreatur wird stabilisiert. Der Zauber hat keine Auswirkungen auf Untote oder Konstrukte.</p>
+      `,
+      description_en: `
+        <p>You touch a living creature that has 0 hit points. The creature becomes stable. This spell has no effect on undead or constructs.</p>
+      `,
+      school: 'Necromancy',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 39,
+      german: 'Urtümliche Wildheit',
+      english: 'primalSavagery',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: true,
+      needsSavingThrow: false,
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd10', damageType: 'acid' }],
+      doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
-        'Du erzeugst einen der folgenden magischen Effekte innerhalb von 9 Metern: \b\b • Deine Stimme wird dreimal lauter.\b • Du lässt einen unverschlossenen Tür oder ein Fenster aufspringen. \b• Du lässt eine Flamme aufleuchten, erlöschen oder ihre Farbe ändern. \b• Du lässt den Boden für eine Minute beben.\b • Du erzeugst Geräusche, die von dir ausgehen, wie das Flüstern einer Stimme, das Brüllen eines Löwen, das Knurren von Donner oder das Klappern von Metall. \b• Du lässt eine Tür oder ein Fenster, das du berührst, für eine Minute verriegeln oder entriegeln.',
+      description_de: `
+        <p>Deine Zähne oder Fingernägel werden zu scharfen Klauen, die du als Nahkampfwaffe verwenden kannst. Du führst einen Nahkampf-Zauberangriff gegen eine Kreatur deiner Wahl durch. Bei einem Treffer erleidet die Kreatur 1W10 Säureschaden.</p>
+        <p><b>Auf höheren Graden:</b> Der Schaden des Zaubers erhöht sich um je 1W10 wenn du Stufe 5 (auf 2W10), Stufe 11 (auf 3W10) und Stufe 17 (auf 4W10) erreichst.</p>
+      `,
+      description_en: `
+        <p>You channel primal magic to cause your teeth or fingernails to sharpen, ready to deliver a corrosive attack. Make a melee spell attack against one creature within 5 feet of you. On a hit, the target takes 1d10 acid damage.</p>
+        <p><b>At higher levels:</b> The spell’s damage increases by 1d10 when you reach 5th level (2d10), 11th level (3d10), and 17th level (4d10).</p>
+      `,
+      school: 'Transmutation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: false,
+      areaOfEffectType: '',
+      radius: 0,
+    },
+    {
+      id: 40,
+      german: 'Wasser formen',
+      english: 'shapeWater',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Sorcerer', 'Wizard', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 600,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: false,
+      doesDamage: false,
+      damage: [{ diceNumber: '0', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du wählst eine Wasserfläche, die du in Reichweite sehen kannst und die in einen Würfel von 5 Fußn passt. Du manipulierst es auf eine der folgenden Arten:</p>
+        <ul>
+          <li>Du bewegst das Wasser augenblicklich oder änderst es auf andere Weise, wie du es dir vorstellst, bis zu 5 Fuß in jede Richtung. Diese Bewegung hat nicht genug Kraft, um Schaden zu verursachen.</li>
+          <li>Du bringst das Wasser dazu, sich zu einfachen Formen zu formen und sich auf deine Anweisung hin zu bewegen. Diese Veränderung hält 1 Stunde lang an.</li>
+          <li>Du veränderst die Farbe oder Deckkraft des Wassers. Das Wasser muss immer auf dieselbe Weise verändert werden. Diese Veränderung hält 1 Stunde lang an.</li>
+          <li>Du frierst das Wasser ein, vorausgesetzt, es befinden sich keine Lebewesen darin. Das Wasser taut in 1 Stunde wieder auf.</li>
+        </ul>
+        <p>Wenn du diesen Zauber mehrmals wirkst, kannst du nicht mehr als zwei seiner nicht sofortigen Effekte gleichzeitig aktiv haben, und du kannst einen solchen Effekt als Aktion abbrechen.</p>
+      `,
+      description_en: `
+      <p>You choose an area of water that you can see within range and that fits within a 5-foot cube. You manipulate it in one of the following ways:</p>
+      <ul>
+        <li>You instantaneously move or otherwise change the flow of the water as you direct, up to 5 feet in any direction. This movement doesn’t have enough force to cause damage.</li>
+        <li>You cause the water to form into simple shapes and animate at your direction. This change lasts for 1 hour.</li>
+        <li>You change the water’s color or opacity. The water must be changed in the same way throughout. This change lasts for 1 hour.</li>
+        <li>You freeze the water, provided that there are no creatures in it. The water unfreezes in 1 hour.</li>
+      </ul>
+      <p>If you cast this spell multiple times, you can have no more than two of its non-instantaneous effects active at a time, and you can dismiss such an effect as an action.</p>
+      `,
+      school: 'Transmutation',
+      isRanged: true,
+      range: 30,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'cube',
+      radius: 5,
+    },
+    {
+      id: 41,
+      german: 'Windböe',
+      english: 'gust',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Druid', 'Sorcerer', 'Wizard', 'Artificer'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: true,
+      needsSomatic: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Strength',
+      doesDamage: false,
+      damage: [{ diceNumber: '', diceType: '', damageType: '' }],
+      doesHeal: false,
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du ergreifst die Luft und zwingst sie, einen der folgenden Effekte an einem Punkt in Reichweite, den du sehen kannst, zu erzeugen:</p>
+        <ul>
+          <li>Eine Kreatur mittlerer oder kleiner Größe, die du auswählst, muss einen Rettungswurf auf Stärke bestehen oder wird bis zu 5 Fuß von dir weggestoßen.</li>
+          <li>Du erzeugst einen kleinen Luftstoß, der einen Gegenstand bewegen kann, der weder gehalten noch getragen wird und nicht mehr als 5 Pfund wiegt. Der Gegenstand wird bis zu 10 Fuß von dir weggeschoben. Er wird nicht mit so viel Kraft gestoßen, dass er Schaden anrichtet.</li>
+          <li>Du erzeugst mit Luft einen harmlosen sensorischen Effekt, z.B. das Rascheln von Blättern, das Zuschlagen von Fensterläden durch den Wind oder das Kräuseln deiner Kleidung in einer Brise.</li>
+        </ul>
+      `,
+      description_en: `
+      <p>You seize the air and compel it to create one of the following effects at a point you can see within range:</p>
+      <ul>
+        <li>One Medium or smaller creature that you choose must succeed on a Strength saving throw or be pushed up to 5 feet away from you.</li>
+        <li>You create a small blast of air capable of moving one object that is neither held nor carried and that weighs no more than 5 pounds. The object is pushed up to 10 feet away from you. It isn’t pushed with enough force to cause damage.</li>
+        <li>You create a harmless sensory effect using air, such as causing leaves to rustle, wind to slam shutters shut, or your clothing to ripple in a breeze.</li>
+      </ul>
+      `,
       school: 'Transmutation',
       isRanged: true,
       range: 30,
@@ -154,29 +1715,70 @@ export class SpellsService {
       radius: 0,
     },
     {
-      id: 3,
-      german: 'Beschwörung',
-      english: 'conjuration',
+      id: 42,
+      german: 'Wort des Strahlens',
+      english: 'wordOfRadiance',
       level: 0,
       isCustom: false,
-      classes: ['Cleric'],
+      classes: ['Test', 'Cleric'],
       timeToCast: 0,
-      cost: 'bonus action',
-      duration: 10,
+      cost: 'action',
+      duration: 0,
       canRitual: 'false',
       needsVerbal: true,
       needsSomatic: true,
-      needsMaterial: true,
+      needsMaterial: false,
+      needsConcentration: false,
+      needsAttackRoll: false,
+      needsSavingThrow: true,
+      savingThrowAttribute: 'Constitution',
+      doesDamage: true,
+      damage: [{ diceNumber: '1', diceType: 'd6', damageType: 'radiant' }],
+      doesHeal: false,
+      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
+      description_de: `
+      <p>Du sprichst ein göttliches Wort aus, und ein brennendes Gleißen bricht aus dir heraus. Jede Kreatur deiner Wahl, welche du innerhalb der Reichweite sehen kannst, muss einen Konstitutionsrettungswurf ablegen oder erleidet 1W6 gleißenden Schaden.</p>
+      <p><b>Auf höheren Graden:</b> Der Schaden des Zaubers erhöht sich um je 1W6 wenn du Stufe 5 (auf 2W6), Stufe 11 (auf 3W6) und Stufe 17 (auf 4W6) erreichst.</p>
+      `,
+      description_en: `
+      <p>You utter a divine word, and burning radiance erupts from you. Each creature of your choice that you can see within range must succeed on a Constitution saving throw or take 1d6 radiant damage.</p>
+      <p><b>At higher levels:</b> The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>
+      `,
+      school: 'Evocation',
+      isRanged: false,
+      range: 5,
+      hasAreaOfEffect: true,
+      areaOfEffectType: 'circle',
+      radius: 5,
+    },
+    {
+      id: 43,
+      german: 'Zielsicherer Schlag',
+      english: 'trueStrike',
+      level: 0,
+      isCustom: false,
+      classes: ['Test', 'Sorcerer', 'Wizard'],
+      timeToCast: 0,
+      cost: 'action',
+      duration: 0,
+      canRitual: 'false',
+      needsVerbal: false,
+      needsSomatic: true,
+      needsMaterial: false,
       needsConcentration: true,
       needsAttackRoll: false,
       needsSavingThrow: false,
       doesDamage: false,
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
-      heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
-        'Du schützt eine Kreatur in Reichweite vor Angriffen. Während der Wirkungsdauer muss jede Kreatur, die bei einem Angriff oder schädlichen Zauber die geschützte Kreatur als Ziel hat, zuerst einen Weisheitsrettungswurf bestehen. Scheitert der Wurf, muss die Kreatur ein neues Ziel wählen, oder sie verliert den Angriff oder Zauber. Dieser Zauber schützt die entsprechende Kreatur nicht vor Flächeneffekten wie der Explosion eines Feuerballs. Greift die geschützte Kreatur an oder wirkt sie einen Zauber auf eine feindliche Kreatur, endet der Effekt dieses Zaubers.',
-      school: 'Conjuration',
+      heal: { diceNumber: '0', diceType: '', additionalHeal: 0 },
+      description_de: `
+        <p>Du streckst deine Hand aus und deutest mit einem Finger auf das Ziel. Deine Magie gewährt dir einen kurzen Einblick in die Verteidigung des Ziels. In deinem nächsten Zug erhältst du Vorteil bei deinem ersten Angriffswurf gegen das Ziel, vorausgesetzt der Zauber ist nicht vorbei.</p>
+      `,
+      description_en: `
+        <p>You extend your hand and point a finger at a target in range. Your magic grants you a brief insight into the target’s defenses. On your next turn, you gain advantage on your first attack roll against the target, provided that this spell hasn’t ended.</p>
+      `,
+      school: 'Divination',
       isRanged: true,
       range: 30,
       hasAreaOfEffect: false,
@@ -191,7 +1793,7 @@ export class SpellsService {
       level: 1,
       cost: 'action',
       isCustom: false,
-      classes: ['Cleric'],
+      classes: ['Test', 'Cleric'],
       duration: 0,
       timeToCast: 0,
       canRitual: 'false',
@@ -205,7 +1807,7 @@ export class SpellsService {
       damage: [{ diceNumber: '3', diceType: 'd10', damageType: 'necrotic' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
+      description_de:
         'Mach einen Nahkampf-Zauberangriff gegen eine Kreatur deiner Wahl. Bei einem Erfolg erleidet das Ziel 3W10 Nekrotischen Schaden. Auf höheren Graden: Wirkst du diesen Zauber, indem du einen Zauberplatz des 2. Grades oder höher nutzt, steigt der Schaden für jeden Grad über dem 1. um 1W10.',
       school: 'Necromancy',
       isRanged: false,
@@ -222,7 +1824,7 @@ export class SpellsService {
       cost: 'action',
       duration: 0,
       isCustom: false,
-      classes: ['Bard', 'Cleric', 'Druid', 'Paladin', 'Ranger'],
+      classes: ['Test', 'Bard', 'Cleric', 'Druid', 'Paladin', 'Ranger'],
       timeToCast: 0,
       canRitual: 'false',
       needsVerbal: true,
@@ -235,7 +1837,7 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: true,
       heal: { diceNumber: '1', diceType: 'd8', additionalHeal: 4 },
-      description:
+      description_de:
         'Eine Kreatur, die du berührst, gewinnt Trefferpunkte in Höhe von 1W8 + deinem Attributsmodifikator im Zauberwirken zurück. Dieser Zauber wirkt nicht auf Untote oder Konstrukte. Auf höheren Graden: Wirkst du diesen Zauber, indem du einen Zauberplatz des 2. Grades oder höher nutzt, steigt die Heilung für jeden Grad über dem 1. um 1W8.',
       school: 'Evocation',
       isRanged: false,
@@ -253,6 +1855,7 @@ export class SpellsService {
       duration: 100,
       isCustom: false,
       classes: [
+        'Test',
         'Bard',
         'Cleric',
         'Druid',
@@ -273,8 +1876,8 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
-        'Während der Wirkungsdauer nimmst du die Gegenwart von Magie im Abstand von bis zu neun Metern von dir wahr. Wenn du auf diese Weise Magie wahrnimmst, kannst du deine Aktion verwenden, um schwache Auren um sichtbare magische Kreaturen oder Objekte sowie ihre magische Schule zu erkennen, falls vorhanden. Dieser Zauber durchdringt die meisten Barrieren, wird aber von 30 Zentimetern Stein, 2,5 Zentimetern gewöhnlichem Metall, dünnem Bleiblech sowie von einem Meter Holz oder Erde blockiert.',
+      description_de:
+        'Während der Wirkungsdauer nimmst du die Gegenwart von Magie im Abstand von bis zu 30 Fuß von dir wahr. Wenn du auf diese Weise Magie wahrnimmst, kannst du deine Aktion verwenden, um schwache Auren um sichtbare magische Kreaturen oder Objekte sowie ihre magische Schule zu erkennen, falls vorhanden. Dieser Zauber durchdringt die meisten Barrieren, wird aber von 30 Zentimeter Stein, 2,5 Zentimetern gewöhnlichem Metall, dünnem Bleiblech sowie von einem Meter Holz oder Erde blockiert.',
       school: 'Divination',
       isRanged: true,
       range: 30,
@@ -290,7 +1893,7 @@ export class SpellsService {
       cost: 'action',
       duration: 10,
       isCustom: false,
-      classes: ['Cleric', 'Paladin'],
+      classes: ['Test', 'Cleric', 'Paladin'],
       timeToCast: 0,
       canRitual: 'false',
       needsVerbal: true,
@@ -303,7 +1906,7 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
+      description_de:
         'Du segnest bis zu drei Kreaturen deiner Wahl in Reichweite. Wenn ein Ziel während der Wirkungsdauer einen Angriffs- oder Rettungswurf ausführt, darf es mit einem W4 würfeln und das Würfelergebnis zu seinem Angriffs- oder Rettungswurf addieren. Auf höheren Graden: Wirkst du diesen Zauber, indem du einen Zauberplatz des 2. Grades oder höher nutzt, kannst du für jeden Grad über dem 1. eine zusätzliche Kreatur als Ziel wählen.',
       school: 'Enchantment',
       isRanged: true,
@@ -317,7 +1920,7 @@ export class SpellsService {
       german: 'Heilendes Wort',
       english: 'healingWord',
       isCustom: false,
-      classes: ['Bard', 'Cleric', 'Druid'],
+      classes: ['Test', 'Bard', 'Cleric', 'Druid'],
       level: 1,
       cost: 'bonus action',
       duration: 0,
@@ -333,7 +1936,7 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: true,
       heal: { diceNumber: '1', diceType: 'd4', additionalHeal: 4 },
-      description:
+      description_de:
         'Eine Kreatur deiner Wahl in Reichweite, die du sehen kannst, gewinnt Trefferpunkte in Höhe von 1W4 + deinem Zauberwirken-Attributsmodifikator zurück. Dieser Zauber wirkt nicht auf Untote oder Konstrukte. Auf höheren Graden: Wirkst du diesen Zauber, indem du einen Zauberplatz des 2. Grades oder höher nutzt, steigt die Heilung für jeden Grad über dem 1. um 1W4.',
       school: 'Evocation',
       isRanged: true,
@@ -350,7 +1953,7 @@ export class SpellsService {
       cost: 'action',
       duration: 0,
       isCustom: false,
-      classes: ['Cleric'],
+      classes: ['Test', 'Cleric'],
       timeToCast: 0,
       canRitual: 'false',
       needsVerbal: true,
@@ -363,7 +1966,7 @@ export class SpellsService {
       damage: [{ diceNumber: '4', diceType: 'd6', damageType: 'radiant' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
+      description_de:
         'Ein Lichtblitz schießt auf eine Kreatur deiner Wahl in Reichweite zu. Führe einen Fernkampf-Zauberangriff gegen das Ziel aus. Bei einem Erfolg erleidet das Ziel 4W6 gleißenden Schaden. Dank des mystischen dämmrigen Lichts, das auf dem Ziel glitzert, ist der nächste Angriffswurf gegen das Ziel vor Ende deines nächsten Zugs im Vorteil. Auf höheren Graden: Wirkst du diesen Zauber, indem du einen Zauberplatz des 2. Grades oder höher nutzt, steigt der Schaden für jeden Grad über dem 1. um 1W6.',
       school: 'Evocation',
       isRanged: true,
@@ -380,7 +1983,7 @@ export class SpellsService {
       cost: 'action',
       duration: 100,
       isCustom: false,
-      classes: ['Cleric', 'Druid', 'Paladin', 'Ranger'],
+      classes: ['Test', 'Cleric', 'Druid', 'Paladin', 'Ranger'],
       timeToCast: 0,
       canRitual: 'true',
       needsVerbal: true,
@@ -393,8 +1996,8 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
-        'Während der Wirkungsdauer nimmst du die Gegenwart und die Position von Giften, giftigen Kreaturen und Krankheiten im Abstand von bis zu neun Metern von dir wahr. Du kannst auch die Art des Gifts, der giftigen Kreatur oder der Krankheit bestimmen. Dieser Zauber durchdringt die meisten Barrieren, wird aber von 30 Zentimetern Stein, 2,5 Zentimetern gewöhnlichem Metall, dünnem Bleiblech sowie von einem Meter Holz oder Erde blockiert.',
+      description_de:
+        'Während der Wirkungsdauer nimmst du die Gegenwart und die Position von Giften, giftigen Kreaturen und Krankheiten im Abstand von bis zu neun Metern von dir wahr. Du kannst auch die Art des Gifts, der giftigen Kreatur oder der Krankheit bestimmen. Dieser Zauber durchdringt die meisten Barrieren, wird aber von 1 Fußn Stein, 2,5 Zentimetern gewöhnlichem Metall, dünnem Bleiblech sowie von einem Meter Holz oder Erde blockiert.',
       school: 'Divination',
       isRanged: true,
       range: 30,
@@ -410,7 +2013,7 @@ export class SpellsService {
       cost: 'action',
       duration: 10,
       isCustom: false,
-      classes: ['Bard', 'Paladin'],
+      classes: ['Test', 'Bard', 'Paladin'],
       timeToCast: 0,
       canRitual: 'false',
       needsVerbal: true,
@@ -423,7 +2026,7 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
+      description_de:
         'Du berührst eine bereitwillige Kreatur und erfüllst sie mit Tapferkeit. Bis der Zauber endet, kann die Kreatur nicht verängstigt werden, und sie erhält zu Beginn jedes ihrer Züge temporäre Trefferpunkte in Höhe deines Zauberwirken-Attributsmodifikators. Wenn der Zauber endet, verliert das Ziel alle verbleibenden temporären Trefferpunkte dieses Zaubers. Auf höheren Graden: Wirkst du diesen Zauber, indem du einen Zauberplatz des 2. Grades oder höher nutzt, kannst du für jeden Grad über dem 1. eine zusätzliche Kreatur als Ziel wählen.',
       school: 'Enchantment',
       isRanged: false,
@@ -438,7 +2041,7 @@ export class SpellsService {
       english: 'sanctuary',
       level: 1,
       isCustom: false,
-      classes: ['Cleric'],
+      classes: ['Test', 'Cleric'],
       timeToCast: 0,
       cost: 'bonus action',
       duration: 10,
@@ -453,7 +2056,7 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
+      description_de:
         'Du schützt eine Kreatur in Reichweite vor Angriffen. Während der Wirkungsdauer muss jede Kreatur, die bei einem Angriff oder schädlichen Zauber die geschützte Kreatur als Ziel hat, zuerst einen Weisheitsrettungswurf bestehen. Scheitert der Wurf, muss die Kreatur ein neues Ziel wählen, oder sie verliert den Angriff oder Zauber. Dieser Zauber schützt die entsprechende Kreatur nicht vor Flächeneffekten wie der Explosion eines Feuerballs. Greift die geschützte Kreatur an oder wirkt sie einen Zauber auf eine feindliche Kreatur, endet der Effekt dieses Zaubers.',
       school: 'Abjuration',
       isRanged: true,
@@ -468,7 +2071,7 @@ export class SpellsService {
       english: 'illusion',
       level: 1,
       isCustom: false,
-      classes: ['Cleric'],
+      classes: ['Test', 'Cleric'],
       timeToCast: 0,
       cost: 'bonus action',
       duration: 10,
@@ -483,7 +2086,7 @@ export class SpellsService {
       damage: [{ diceNumber: '', diceType: '', damageType: '' }],
       doesHeal: false,
       heal: { diceNumber: '', diceType: '', additionalHeal: 0 },
-      description:
+      description_de:
         'Du schützt eine Kreatur in Reichweite vor Angriffen. Während der Wirkungsdauer muss jede Kreatur, die bei einem Angriff oder schädlichen Zauber die geschützte Kreatur als Ziel hat, zuerst einen Weisheitsrettungswurf bestehen. Scheitert der Wurf, muss die Kreatur ein neues Ziel wählen, oder sie verliert den Angriff oder Zauber. Dieser Zauber schützt die entsprechende Kreatur nicht vor Flächeneffekten wie der Explosion eines Feuerballs. Greift die geschützte Kreatur an oder wirkt sie einen Zauber auf eine feindliche Kreatur, endet der Effekt dieses Zaubers.',
       school: 'Illusion',
       isRanged: true,
@@ -492,5 +2095,7 @@ export class SpellsService {
       areaOfEffectType: '',
       radius: 0,
     },
+
+    // Level 2
   ];
 }

+ 1 - 1
src/services/translator/translator.service.ts

@@ -27,7 +27,7 @@ export class TranslatorService {
     Goliath: { display: 'Goliath', value: 'Goliath' },
     HalfElf: { display: 'Halbelf', value: 'HalfElf' },
     HalfElfDetection: {
-      view: 'Halbelf (Mal des Entdeckens)',
+      display: 'Halbelf (Mal des Entdeckens)',
       value: 'HalfElfDetection',
     },
     HalfOrc: { display: 'Halbork', value: 'HalfOrc' },

+ 79 - 283
src/styles.scss

@@ -3,12 +3,14 @@
 /* Importing Bootstrap SCSS file. */
 // TODO: remove bootstrap styles
 @import "bootstrap/scss/bootstrap";
+@import url("./helpers.scss");
+@import url("./button-styles.scss");
 
 :root {
     // COLORS to use but not official
-    --primary-color: #d8ac96;
-    --primary-color-light: #e8c7b5;
-    --primary-color-dark: #d89777;
+    // --primary: #d8ac96;
+    --primary-light: #e8c7b5;
+    --primary-dark: #d89777;
     --secondary-color: #efc8af;
     --secondary-color-light: #f8e1d7;
     --secondary-color-dark: #cfaa8c;
@@ -41,6 +43,9 @@
 
     // OFFICIAL COLORS
 
+    --primary-old: #d8ac96;
+    --primary: #b0826b;
+
     // Buttons
     --accept: #84a36f;
     --accept-hover: #6f9158;
@@ -49,56 +54,46 @@
     --edit: #86a5b7;
     --edit-hover: #6f8e9f;
     --neutral: #b9835d;
-    --neutral-hover: #a46e4a;
-    --tab: #efc8af;
-    --tab-active: #e0ad91;
+    --neutral-hover: #a76b43;
+    --tab: #c79980;
+    --tab-active: #bc8567;
+    //
+    // c28c6f
 
     // Spellcards
 
-    // !
     --abjuration-background: #cab8de;
     --abjuration-border: 0 0 0 2px #171314, 0 0 0 5px #9586a5;
-
-    //  !
     --conjuration-background: #714c81;
     --conjuration-border: 0 0 0 2px #171314, 0 0 0 5px #744987;
-
-    // !
     --divination-background: #f0e3ce;
     --divination-border: 0 0 0 2px #171314, 0 0 0 5px #ffffff;
-
-    // !
     --enchantment-background: #629179;
     --enchantment-border: 0 0 0 2px #171314, 0 0 0 5px #26714a;
-
     --evocation-background: #a46a7d;
     --evocation-border: 0 0 0 2px #171314, 0 0 0 5px #863f57;
-
-    // !
     --illusion-background: #69a;
     --illusion-border: 0 0 0 2px #171314, 0 0 0 5px #2d6475;
-
-    // !
     --necromancy-background: #000000;
     --necromancy-border: 0 0 0 2px #171314, 0 0 0 5px #36353a;
-
     --transmutation-background: rgb(51, 52, 138);
-    // --transmutation-border: 0 0 0 2px #171314, 0 0 0 5px #2d6475;
     --transmutation-border: 0 0 0 2px #171314, 0 0 3px #8f088f, 0 0 6px #7f088f, 0 0 9px #69088f, 0 0 12px #3a088f,
         0 0 15px #080a8f;
 
     // General
 
-    --primary-color: #d8ac96;
-
     --shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.5);
     --shadow-inverted: 0px -5px 10px 0px rgba(0, 0, 0, 0.5);
-
     --shadow-bottom: 0px 5px 10px 0px rgba(0, 0, 0, 0.5);
     --shadow-top: 0px -5px 10px 0px rgba(0, 0, 0, 0.5);
+
+    --old-primary: #d8ac96;
+    --primary-color: #a9836f;
     --background-color: #fff2e9;
     --field-background-color: #efc8af;
     --border-color: #8d8c8c;
+
+    // --modal-background: antiquewhite;
     --modal-background: antiquewhite;
     --header: #ffdec6;
     --text: #000000;
@@ -160,21 +155,6 @@
         align-items: center;
         border-radius: 0 0 10px 10px;
         box-shadow: var(--shadow-top);
-
-        button {
-            height: 3rem;
-            width: 80%;
-            font-size: 1.25rem;
-            font-weight: 600;
-            border-radius: 10px;
-            background: var(--accept);
-            transition: background-color 0.2s ease-in-out;
-            box-shadow: var(--shadow);
-
-            &:hover {
-                background-color: var(--accept-hover);
-            }
-        }
     }
 
     // DRAG AND DROP
@@ -290,193 +270,96 @@ input[type="checkbox"] {
     width: 1.25rem;
 }
 
-// Value Box
-
-.value-row {
-    display: flex;
-    justify-content: space-around;
-}
+// DETAILS + MODAL
 
-.value-container {
-    width: 6rem;
-}
-
-.value-box {
-    width: 3.5rem;
-    height: 3rem;
-    font-size: 1.5rem;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    margin: auto;
+.dimensions {
+    width: 50rem;
+    background-color: var(--modal-background);
     border-radius: 10px;
-    background-color: white;
+    border: 1px solid var(--border-color);
+    padding: 0 2rem;
     box-shadow: var(--shadow);
 }
 
-.value-input {
-    border: none;
-    outline: none;
-    text-align: center;
-    background-color: transparent;
-
-    &::-webkit-outer-spin-button,
-    &::-webkit-inner-spin-button {
-        -webkit-appearance: none;
-        appearance: none;
-        margin: 0;
-    }
-}
-
-.value-label {
-    font-size: 1.25rem;
-    font-weight: 600;
-    text-align: center;
-    padding: 0.5rem;
-}
-
-// details-panel
-
-.vertical-button-wrapper-3 {
-    width: 100%;
-    position: absolute;
-    bottom: 2rem;
-    display: grid;
-    grid-template-rows: 1fr 1fr 1fr;
-    grid-template-columns: 1fr;
-    gap: 10px;
-    margin-top: 2rem;
-    align-items: center;
-    justify-content: center;
-}
-
-.vertical-button-wrapper-2 {
-    width: 100%;
-    position: absolute;
-    bottom: 2rem;
-    display: grid;
-    grid-template-rows: 1fr 1fr;
-    grid-template-columns: 1fr;
-    gap: 10px;
-    margin-top: 2rem;
-    align-items: center;
-    justify-content: center;
-}
-
-.button-wrapper-3-block {
-    display: grid;
-    grid-template-rows: 1fr 1fr 1fr;
-    grid-template-columns: 1fr;
-    gap: 10px;
-    align-items: center;
-    justify-content: center;
-    margin-top: 2rem;
-    padding-bottom: 2rem;
-}
-
-.button-wrapper-2-block {
-    display: grid;
-    grid-template-rows: 1fr 1fr;
-    grid-template-columns: 1fr;
-    gap: 10px;
-    align-items: center;
-    justify-content: center;
-    margin-top: 2rem;
-    padding-bottom: 2rem;
-}
-
-//
-
-.details-title {
-    text-align: center;
+.title {
     font-size: 2rem;
     font-weight: bold;
     margin-top: 1.5rem;
+    text-align: center;
 }
 
-.details-heading {
+.heading {
     font-size: 1.5rem;
-    font-weight: bold;
     margin-top: 1.5rem;
+    font-weight: bold;
+    text-align: center;
 }
 
-.details-subheading {
+.subheading {
     font-size: 1.25rem;
-    font-weight: bold;
     margin-top: 1.5rem;
+    font-weight: bold;
+    text-align: center;
 }
 
-.details-content {
+.content {
     margin-top: 1.5rem;
+    margin-bottom: 1.5rem;
 }
 
-.details-content-small {
-    margin-top: 0.5rem;
-}
-
-.details-bold {
-    font-weight: 500;
-}
-
-.centered {
-    text-align: center;
-}
-
-.details-value-container {
-    margin-top: 2rem;
+.input-label {
+    font-weight: 600;
+    padding-left: 0.25rem;
 }
 
-.details-flex-row {
+.value-row {
     display: flex;
-    justify-content: space-between;
-    align-items: center;
+    flex-direction: row;
+    justify-content: space-evenly;
 }
 
-.top-1 {
-    margin-top: 1rem;
+.mat-mdc-text-field-wrapper {
+    background-color: white !important;
+    border-radius: 5px !important;
 }
 
-.top-2 {
-    margin-top: 2rem;
-}
+.flex-form {
+    display: flex;
+    flex-direction: column;
+    gap: 1.5rem;
 
-.top-3 {
-    margin-top: 3rem;
+    .flex-row {
+        display: flex;
+        flex-direction: row;
+        justify-content: space-between;
+        gap: 2rem;
+    }
 }
 
-.details-value {
-    width: 3.5rem;
-    height: 3rem;
-    font-size: 1.5rem;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    margin: auto;
-    border-radius: 10px;
-    background-color: white;
-    box-shadow: var(--shadow);
+.hint {
+    font-size: 0.75rem;
+    font-weight: 400;
+    padding-left: 0.25rem;
 }
 
-.details-label {
-    margin-top: 0.5rem;
-    font-weight: 500;
-    text-align: center;
+// RICH TEXT EDITOR
+.ProseMirror {
+    padding-left: 1rem !important;
+    height: 8rem;
 }
 
-.details-name {
-    font-size: 1.5rem;
-    font-weight: bold;
-    margin-top: 1.5rem;
-    text-align: center;
+// Used to remove the empty space under form fields
+.mat-mdc-form-field-subscript-wrapper {
+    display: none;
 }
 
-.details-long-description {
-    margin: 2rem 1rem;
-    font-size: 1rem;
+html,
+body {
+    height: 100%;
+    margin: 0;
+    font-family: var(--bs-body-font-family) !important;
 }
 
-//
-
 .flex-row {
     display: flex;
     flex-direction: row;
@@ -487,106 +370,19 @@ input[type="checkbox"] {
     flex-direction: column;
 }
 
-.flex-centered {
-    align-items: center;
-    justify-content: center;
-}
-
-.flex-left {
-    justify-content: start;
-}
-
-.flex-right {
-    justify-content: end;
-}
-
-.gap-01 {
-    gap: 0.1rem;
-}
-
-.gap-02 {
-    gap: 0.2rem;
-}
-
-.gap-03 {
-    gap: 0.3rem;
-}
-
-.gap-04 {
-    gap: 0.4rem;
-}
-
-.gap-05 {
-    gap: 0.5rem;
-}
-
-.gap-06 {
-    gap: 0.6rem;
-}
-
-.gap-07 {
-    gap: 0.7rem;
-}
-
-.gap-08 {
-    gap: 0.8rem;
-}
-
-.gap-09 {
-    gap: 0.9rem;
-}
+// Overriding the default styles of angular material
 
-.gap-10 {
-    gap: 1rem;
+.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text {
+    color: var(--primary) !important;
 }
 
-.gap-11 {
-    gap: 1.1rem;
-}
-
-.gap-12 {
-    gap: 1.2rem;
-}
-
-.gap-13 {
-    gap: 1.3rem;
-}
-
-.gap-14 {
-    gap: 1.4rem;
-}
-
-.gap-15 {
-    gap: 1.5rem;
+.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,
+.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after {
+    color: var(--primary) !important;
 }
 
-.gap-16 {
-    gap: 1.6rem;
-}
-
-.gap-17 {
-    gap: 1.7rem;
-}
-
-.gap-18 {
-    gap: 1.8rem;
-}
-
-.gap-19 {
-    gap: 1.9rem;
-}
-
-.gap-20 {
-    gap: 2rem;
-}
-
-// Drag and Drop Table
-
-html,
-body {
-    height: 100%;
-}
-body {
-    margin: 0;
-    // font-family: Roboto, "Helvetica Neue", sans-serif;
+.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,
+.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,
+.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing {
+    border-color: var(--primary) !important;
 }