Merge branch 'main' into gradle-actions

pull/1375/head
Don Turner 6 months ago committed by GitHub
commit 6c4dbc56fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,26 +1,25 @@
_Thanks for submitting a pull request. Please include the following information._
**DO NOT CREATE A PULL REQUEST WITHOUT READING THESE INSTRUCTIONS**
**What I have done and why**
## Instructions
Thanks for submitting a pull request. To accept your pull request we need you do a few things:
**If this is your first pull request**
_Include a summary of what your pull request contains, and why you have made these changes._
- [Sign the contributors license agreement](https://cla.developers.google.com/)
Fixes #<issue_number_goes_here>
**Ensure tests pass and code is formatted correctly**
**How I'm testing it**
- Run local tests on the `DemoDebug` variant by running `./gradlew testDemoDebug`
- Fix code formatting: `./gradlew --init-script gradle/init.gradle.kts spotlessApply`
_Choose at least one:_
- Unit tests
- UI tests
- Screenshot tests
- N/A _(provide justification)_
**Add a description**
**Do tests pass?**
- [ ] Run local tests on `DemoDebug` variant: `./gradlew testDemoDebug`
- [ ] Check formatting: `./gradlew --init-script gradle/init.gradle.kts spotlessApply`
We need to know what you've done and why you've done it. Include a summary of what your pull request contains, and why you have made these changes. Include links to any relevant issues which it fixes.
**Is this your first pull request?**
- [ ] [Sign the CLA](https://cla.developers.google.com/)
- [ ] Run `./tools/setup.sh`
- [ ] Import the code formatting style as explained in [the setup script](/tools/setup.sh#L40).
[Here's an example](https://github.com/android/nowinandroid/pull/1257).
**NOW DELETE THIS LINE AND EVERYTHING ABOVE IT**
**What I have done and why**
\<add your PR description here\>

@ -128,6 +128,13 @@ jobs:
name: local-test-results
path: '**/build/test-results/test*UnitTest/**.xml'
- name: Upload screenshot results (PNG)
if: always()
uses: actions/upload-artifact@v4
with:
name: screenshot-test-results
path: '**/build/outputs/roborazzi/*_compare.png'
- name: Check lint
run: ./gradlew :app:lintProdRelease :app-nia-catalog:lintRelease :lint:lint

@ -19,6 +19,7 @@ jobs:
ls /dev/kvm
- name: Checkout
uses: actions/checkout@v4
- name: Copy CI gradle.properties

@ -1,6 +1,6 @@
androidx.activity:activity-compose:1.8.0
androidx.activity:activity-ktx:1.8.0
androidx.activity:activity:1.8.0
androidx.activity:activity-compose:1.8.2
androidx.activity:activity-ktx:1.8.2
androidx.activity:activity:1.8.2
androidx.annotation:annotation-experimental:1.4.0
androidx.annotation:annotation-jvm:1.7.1
androidx.annotation:annotation:1.7.1

@ -113,9 +113,10 @@ dependencies {
testImplementation(projects.core.dataTest)
testImplementation(projects.core.testing)
testImplementation(projects.sync.syncTest)
testImplementation(libs.androidx.compose.ui.test)
testImplementation(libs.androidx.work.testing)
testImplementation(libs.hilt.android.testing)
testImplementation(libs.work.testing)
testDemoImplementation(libs.robolectric)
testDemoImplementation(libs.roborazzi)

@ -1,6 +1,6 @@
androidx.activity:activity-compose:1.8.0
androidx.activity:activity-ktx:1.8.0
androidx.activity:activity:1.8.0
androidx.activity:activity-compose:1.8.2
androidx.activity:activity-ktx:1.8.2
androidx.activity:activity:1.8.2
androidx.annotation:annotation-experimental:1.4.0
androidx.annotation:annotation-jvm:1.8.0-beta01
androidx.annotation:annotation:1.8.0-beta01
@ -17,10 +17,10 @@ androidx.compose.animation:animation-android:1.7.0-alpha06
androidx.compose.animation:animation-core-android:1.7.0-alpha06
androidx.compose.animation:animation-core:1.7.0-alpha06
androidx.compose.animation:animation:1.7.0-alpha06
androidx.compose.foundation:foundation-android:1.6.3
androidx.compose.foundation:foundation-layout-android:1.6.3
androidx.compose.foundation:foundation-layout:1.6.3
androidx.compose.foundation:foundation:1.6.3
androidx.compose.foundation:foundation-android:1.7.0-alpha06
androidx.compose.foundation:foundation-layout-android:1.7.0-alpha06
androidx.compose.foundation:foundation-layout:1.7.0-alpha06
androidx.compose.foundation:foundation:1.7.0-alpha06
androidx.compose.material3.adaptive:adaptive-android:1.0.0-alpha10
androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0-alpha10
androidx.compose.material3.adaptive:adaptive-layout:1.0.0-alpha10
@ -103,11 +103,11 @@ androidx.lifecycle:lifecycle-viewmodel:2.8.0-alpha04
androidx.loader:loader:1.0.0
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
androidx.metrics:metrics-performance:1.0.0-alpha04
androidx.navigation:navigation-common-ktx:2.7.4
androidx.navigation:navigation-common:2.7.4
androidx.navigation:navigation-compose:2.7.4
androidx.navigation:navigation-runtime-ktx:2.7.4
androidx.navigation:navigation-runtime:2.7.4
androidx.navigation:navigation-common-ktx:2.8.0-alpha06
androidx.navigation:navigation-common:2.8.0-alpha06
androidx.navigation:navigation-compose:2.8.0-alpha06
androidx.navigation:navigation-runtime-ktx:2.8.0-alpha06
androidx.navigation:navigation-runtime:2.8.0-alpha06
androidx.print:print:1.0.0
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
@ -188,8 +188,8 @@ com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-android
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
com.google.protobuf:protobuf-javalite:3.25.2
com.google.protobuf:protobuf-kotlin-lite:3.25.2
com.google.protobuf:protobuf-javalite:4.26.0
com.google.protobuf:protobuf-kotlin-lite:4.26.0
com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0
com.squareup.okhttp3:logging-interceptor:4.12.0
com.squareup.okhttp3:okhttp:4.12.0

@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.ui
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
@ -199,15 +200,7 @@ internal fun NiaApp(
)
}
NiaNavHost(
appState = appState,
onShowSnackbar = { message, action ->
snackbarHostState.showSnackbar(
message = message,
actionLabel = action,
duration = Short,
) == ActionPerformed
},
Box(
modifier = if (shouldShowTopAppBar) {
Modifier.consumeWindowInsets(
WindowInsets.safeDrawing.only(WindowInsetsSides.Top),
@ -215,7 +208,18 @@ internal fun NiaApp(
} else {
Modifier
},
)
) {
NiaNavHost(
appState = appState,
onShowSnackbar = { message, action ->
snackbarHostState.showSnackbar(
message = message,
actionLabel = action,
duration = Short,
) == ActionPerformed
},
)
}
}
// TODO: We may want to add padding or spacer when the snackbar is shown so that

@ -27,7 +27,8 @@ import javax.inject.Inject
class Interests2PaneViewModel @Inject constructor(
private val savedStateHandle: SavedStateHandle,
) : ViewModel() {
val selectedTopicId: StateFlow<String?> = savedStateHandle.getStateFlow(TOPIC_ID_ARG, null)
val selectedTopicId: StateFlow<String?> =
savedStateHandle.getStateFlow(TOPIC_ID_ARG, savedStateHandle[TOPIC_ID_ARG])
fun onTopicClick(topicId: String?) {
savedStateHandle[TOPIC_ID_ARG] = topicId

@ -18,14 +18,21 @@ package com.google.samples.apps.nowinandroid.ui.interests2pane
import androidx.activity.compose.BackHandler
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
import androidx.compose.material3.adaptive.layout.AnimatedPane
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole
import androidx.compose.material3.adaptive.layout.PaneAdaptedValue
import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldDestinationItem
import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.key
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.Saver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavGraphBuilder
@ -39,8 +46,10 @@ import com.google.samples.apps.nowinandroid.feature.interests.navigation.INTERES
import com.google.samples.apps.nowinandroid.feature.interests.navigation.TOPIC_ID_ARG
import com.google.samples.apps.nowinandroid.feature.topic.TopicDetailPlaceholder
import com.google.samples.apps.nowinandroid.feature.topic.navigation.TOPIC_ROUTE
import com.google.samples.apps.nowinandroid.feature.topic.navigation.createTopicRoute
import com.google.samples.apps.nowinandroid.feature.topic.navigation.navigateToTopic
import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicScreen
import java.util.UUID
private const val DETAIL_PANE_NAVHOST_ROUTE = "detail_pane_route"
@ -76,17 +85,42 @@ internal fun InterestsListDetailScreen(
selectedTopicId: String?,
onTopicClick: (String) -> Unit,
) {
val listDetailNavigator = rememberListDetailPaneScaffoldNavigator()
val listDetailNavigator = rememberListDetailPaneScaffoldNavigator(
initialDestinationHistory = listOfNotNull(
ThreePaneScaffoldDestinationItem(ListDetailPaneScaffoldRole.List),
ThreePaneScaffoldDestinationItem<Nothing>(ListDetailPaneScaffoldRole.Detail).takeIf {
selectedTopicId != null
},
),
)
BackHandler(listDetailNavigator.canNavigateBack()) {
listDetailNavigator.navigateBack()
}
val nestedNavController = rememberNavController()
var nestedNavHostStartDestination by remember {
mutableStateOf(selectedTopicId?.let(::createTopicRoute) ?: TOPIC_ROUTE)
}
var nestedNavKey by rememberSaveable(
stateSaver = Saver({ it.toString() }, UUID::fromString),
) {
mutableStateOf(UUID.randomUUID())
}
val nestedNavController = key(nestedNavKey) {
rememberNavController()
}
fun onTopicClickShowDetailPane(topicId: String) {
onTopicClick(topicId)
nestedNavController.navigateToTopic(topicId) {
popUpTo(DETAIL_PANE_NAVHOST_ROUTE)
if (listDetailNavigator.isDetailPaneVisible()) {
// If the detail pane was visible, then use the nestedNavController navigate call
// directly
nestedNavController.navigateToTopic(topicId) {
popUpTo(DETAIL_PANE_NAVHOST_ROUTE)
}
} else {
// Otherwise, recreate the NavHost entirely, and start at the new destination
nestedNavHostStartDestination = createTopicRoute(topicId)
nestedNavKey = UUID.randomUUID()
}
listDetailNavigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
}
@ -95,34 +129,34 @@ internal fun InterestsListDetailScreen(
value = listDetailNavigator.scaffoldValue,
directive = listDetailNavigator.scaffoldDirective,
listPane = {
InterestsRoute(
onTopicClick = ::onTopicClickShowDetailPane,
highlightSelectedTopic = listDetailNavigator.isDetailPaneVisible(),
)
},
detailPane = {
NavHost(
navController = nestedNavController,
startDestination = TOPIC_ROUTE,
route = DETAIL_PANE_NAVHOST_ROUTE,
) {
topicScreen(
showBackButton = !listDetailNavigator.isListPaneVisible(),
onBackClick = listDetailNavigator::navigateBack,
AnimatedPane {
InterestsRoute(
onTopicClick = ::onTopicClickShowDetailPane,
highlightSelectedTopic = listDetailNavigator.isDetailPaneVisible(),
)
composable(route = TOPIC_ROUTE) {
TopicDetailPlaceholder()
}
},
detailPane = {
AnimatedPane {
key(nestedNavKey) {
NavHost(
navController = nestedNavController,
startDestination = nestedNavHostStartDestination,
route = DETAIL_PANE_NAVHOST_ROUTE,
) {
topicScreen(
showBackButton = !listDetailNavigator.isListPaneVisible(),
onBackClick = listDetailNavigator::navigateBack,
onTopicClick = ::onTopicClickShowDetailPane,
)
composable(route = TOPIC_ROUTE) {
TopicDetailPlaceholder()
}
}
}
}
},
)
LaunchedEffect(Unit) {
if (selectedTopicId != null) {
// Initial topic ID was provided when navigating to Interests, so show its details.
onTopicClickShowDetailPane(selectedTopicId)
}
}
}
@OptIn(ExperimentalMaterial3AdaptiveApi::class)

@ -16,7 +16,6 @@
package com.google.samples.apps.nowinandroid.ui
import android.util.Log
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.runtime.CompositionLocalProvider
@ -28,10 +27,6 @@ import androidx.compose.ui.test.onRoot
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.test.platform.app.InstrumentationRegistry
import androidx.work.Configuration
import androidx.work.testing.SynchronousExecutor
import androidx.work.testing.WorkManagerTestInitHelper
import com.github.takahirom.roborazzi.captureRoboImage
import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository
import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository
@ -109,17 +104,6 @@ class NiaAppScreenSizesScreenshotTests {
@Before
fun setup() {
val config = Configuration.Builder()
.setMinimumLoggingLevel(Log.DEBUG)
.setExecutor(SynchronousExecutor())
.build()
// Initialize WorkManager for instrumentation tests.
WorkManagerTestInitHelper.initializeTestWorkManager(
InstrumentationRegistry.getInstrumentation().context,
config,
)
hiltRule.inject()
// Configure user data

@ -16,13 +16,14 @@
package com.google.samples.apps.nowinandroid.ui
import android.util.Log
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.material3.SnackbarDuration.Indefinite
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalInspectionMode
import androidx.compose.ui.test.DeviceConfigurationOverride
import androidx.compose.ui.test.ForcedSize
import androidx.compose.ui.test.junit4.createAndroidComposeRule
@ -30,10 +31,6 @@ import androidx.compose.ui.test.onRoot
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.test.platform.app.InstrumentationRegistry
import androidx.work.Configuration
import androidx.work.testing.SynchronousExecutor
import androidx.work.testing.WorkManagerTestInitHelper
import com.github.takahirom.roborazzi.captureRoboImage
import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository
import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourceRepository
@ -60,6 +57,7 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.GraphicsMode
import org.robolectric.annotation.LooperMode
import java.util.TimeZone
import javax.inject.Inject
/**
@ -112,17 +110,6 @@ class SnackbarScreenshotTests {
@Before
fun setup() {
val config = Configuration.Builder()
.setMinimumLoggingLevel(Log.DEBUG)
.setExecutor(SynchronousExecutor())
.build()
// Initialize WorkManager for instrumentation tests.
WorkManagerTestInitHelper.initializeTestWorkManager(
InstrumentationRegistry.getInstrumentation().context,
config,
)
hiltRule.inject()
// Configure user data
@ -135,6 +122,12 @@ class SnackbarScreenshotTests {
}
}
@Before
fun setTimeZone() {
// Make time zone deterministic in tests
TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
}
@Test
fun phone_noSnackbar() {
val snackbarHostState = SnackbarHostState()
@ -207,22 +200,27 @@ class SnackbarScreenshotTests {
) {
lateinit var scope: CoroutineScope
composeTestRule.setContent {
scope = rememberCoroutineScope()
DeviceConfigurationOverride(
DeviceConfigurationOverride.ForcedSize(DpSize(width, height)),
CompositionLocalProvider(
// Replaces images with placeholders
LocalInspectionMode provides true,
) {
BoxWithConstraints {
val appState = rememberNiaAppState(
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight),
),
networkMonitor = networkMonitor,
userNewsResourceRepository = userNewsResourceRepository,
timeZoneMonitor = timeZoneMonitor,
)
NiaTheme {
NiaApp(appState, snackbarHostState, false, {}, {})
scope = rememberCoroutineScope()
DeviceConfigurationOverride(
DeviceConfigurationOverride.ForcedSize(DpSize(width, height)),
) {
BoxWithConstraints {
val appState = rememberNiaAppState(
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight),
),
networkMonitor = networkMonitor,
userNewsResourceRepository = userNewsResourceRepository,
timeZoneMonitor = timeZoneMonitor,
)
NiaTheme {
NiaApp(appState, snackbarHostState, false, {}, {})
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 96 KiB

@ -57,6 +57,7 @@ internal fun Project.configureAndroidCompose(
kotlinOptions {
freeCompilerArgs += buildComposeMetricsParameters()
freeCompilerArgs += stabilityConfiguration()
freeCompilerArgs += strongSkippingConfiguration()
}
}
}
@ -84,6 +85,7 @@ private fun Project.buildComposeMetricsParameters(): List<String> {
"plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + reportsFolder.absolutePath
)
}
return metricParameters.toList()
}
@ -91,3 +93,8 @@ private fun Project.stabilityConfiguration() = listOf(
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:stabilityConfigurationPath=${project.rootDir.absolutePath}/compose_compiler_config.conf",
)
private fun Project.strongSkippingConfiguration() = listOf(
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:experimentalStrongSkipping=true",
)

@ -2,5 +2,10 @@
// It allows us to define classes that our not part of our codebase without wrapping them in a stable class.
// For more information, check https://developer.android.com/jetpack/compose/performance/stability/fix#configuration-file
// We always use immutable classes for our data model, to avoid running the Compose compiler
// in the module we declare it to be stable here.
com.google.samples.apps.nowinandroid.core.model.data.*
// Java standard library classes
java.time.ZoneId
java.time.ZoneOffset

@ -26,57 +26,68 @@ import android.net.NetworkRequest.Builder
import android.os.Build.VERSION
import android.os.Build.VERSION_CODES
import androidx.core.content.getSystemService
import androidx.tracing.trace
import com.google.samples.apps.nowinandroid.core.network.Dispatcher
import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.IO
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.conflate
import kotlinx.coroutines.flow.flowOn
import javax.inject.Inject
internal class ConnectivityManagerNetworkMonitor @Inject constructor(
@ApplicationContext private val context: Context,
@Dispatcher(IO) private val ioDispatcher: CoroutineDispatcher,
) : NetworkMonitor {
override val isOnline: Flow<Boolean> = callbackFlow {
val connectivityManager = context.getSystemService<ConnectivityManager>()
if (connectivityManager == null) {
channel.trySend(false)
channel.close()
return@callbackFlow
}
trace("NetworkMonitor.callbackFlow") {
val connectivityManager = context.getSystemService<ConnectivityManager>()
if (connectivityManager == null) {
channel.trySend(false)
channel.close()
return@callbackFlow
}
/**
* The callback's methods are invoked on changes to *any* network matching the [NetworkRequest],
* not just the active network. So we can simply track the presence (or absence) of such [Network].
*/
val callback = object : NetworkCallback() {
/**
* The callback's methods are invoked on changes to *any* network matching the [NetworkRequest],
* not just the active network. So we can simply track the presence (or absence) of such [Network].
*/
val callback = object : NetworkCallback() {
private val networks = mutableSetOf<Network>()
private val networks = mutableSetOf<Network>()
override fun onAvailable(network: Network) {
networks += network
channel.trySend(true)
}
override fun onAvailable(network: Network) {
networks += network
channel.trySend(true)
}
override fun onLost(network: Network) {
networks -= network
channel.trySend(networks.isNotEmpty())
override fun onLost(network: Network) {
networks -= network
channel.trySend(networks.isNotEmpty())
}
}
}
val request = Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build()
connectivityManager.registerNetworkCallback(request, callback)
trace("NetworkMonitor.registerNetworkCallback") {
val request = Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build()
connectivityManager.registerNetworkCallback(request, callback)
}
/**
* Sends the latest connectivity status to the underlying channel.
*/
channel.trySend(connectivityManager.isCurrentlyConnected())
/**
* Sends the latest connectivity status to the underlying channel.
*/
channel.trySend(connectivityManager.isCurrentlyConnected())
awaitClose {
connectivityManager.unregisterNetworkCallback(callback)
awaitClose {
connectivityManager.unregisterNetworkCallback(callback)
}
}
}
.flowOn(ioDispatcher)
.conflate()
@Suppress("DEPRECATION")

@ -1,463 +1,383 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1178pt" height="404pt"
viewBox="0.00 0.00 1178.13 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-400 1174.13,-400 1174.13,4 -4,4"/>
<!-- :app -->
<g id="node1" class="node">
<title>:app</title>
<ellipse fill="none" stroke="black" cx="626.13" cy="-378" rx="27" ry="18"/>
<text text-anchor="middle" x="626.13" y="-372.95" font-family="Times,serif" font-size="14.00">:app</text>
</g>
<!-- :feature:interests -->
<g id="node2" class="node">
<title>:feature:interests</title>
<ellipse fill="none" stroke="black" cx="289.13" cy="-306" rx="72.34" ry="18"/>
<text text-anchor="middle" x="289.13" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:interests</text>
</g>
<!-- :app&#45;&gt;:feature:interests -->
<g id="edge1" class="edge">
<title>:app&#45;&gt;:feature:interests</title>
<path fill="none" stroke="red" stroke-width="2" d="M600.52,-371.68C548.58,-360.89 429.43,-336.14 354.49,-320.58"/>
<polygon fill="red" stroke="red" stroke-width="2" points="356.78,-317.48 346.28,-318.87 355.36,-324.33 356.78,-317.48"/>
</g>
<!-- :feature:foryou -->
<g id="node3" class="node">
<title>:feature:foryou</title>
<ellipse fill="none" stroke="black" cx="132.13" cy="-306" rx="66.19" ry="18"/>
<text text-anchor="middle" x="132.13" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:foryou</text>
</g>
<!-- :app&#45;&gt;:feature:foryou -->
<g id="edge2" class="edge">
<title>:app&#45;&gt;:feature:foryou</title>
<path fill="none" stroke="black" d="M599.59,-374.51C533.28,-368.1 355.12,-349.7 208.13,-324 202.83,-323.07 197.34,-322.02 191.85,-320.91"/>
<polygon fill="black" stroke="black" points="192.63,-317.5 182.12,-318.88 191.19,-324.35 192.63,-317.5"/>
</g>
<!-- :feature:bookmarks -->
<g id="node4" class="node">
<title>:feature:bookmarks</title>
<ellipse fill="none" stroke="black" cx="787.13" cy="-306" rx="83.08" ry="18"/>
<text text-anchor="middle" x="787.13" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:bookmarks</text>
</g>
<!-- :app&#45;&gt;:feature:bookmarks -->
<g id="edge3" class="edge">
<title>:app&#45;&gt;:feature:bookmarks</title>
<path fill="none" stroke="black" d="M648.51,-367.27C672.32,-356.92 710.64,-340.25 740.97,-327.07"/>
<polygon fill="black" stroke="black" points="742.16,-330.37 749.93,-323.17 739.37,-323.95 742.16,-330.37"/>
</g>
<!-- :feature:topic -->
<g id="node5" class="node">
<title>:feature:topic</title>
<ellipse fill="none" stroke="black" cx="626.13" cy="-306" rx="60.05" ry="18"/>
<text text-anchor="middle" x="626.13" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:topic</text>
</g>
<!-- :app&#45;&gt;:feature:topic -->
<g id="edge4" class="edge">
<title>:app&#45;&gt;:feature:topic</title>
<path fill="none" stroke="black" d="M626.13,-359.7C626.13,-352.41 626.13,-343.73 626.13,-335.54"/>
<polygon fill="black" stroke="black" points="629.63,-335.62 626.13,-325.62 622.63,-335.62 629.63,-335.62"/>
</g>
<!-- :feature:search -->
<g id="node6" class="node">
<title>:feature:search</title>
<ellipse fill="none" stroke="black" cx="445.13" cy="-306" rx="65.17" ry="18"/>
<text text-anchor="middle" x="445.13" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:search</text>
</g>
<!-- :app&#45;&gt;:feature:search -->
<g id="edge5" class="edge">
<title>:app&#45;&gt;:feature:search</title>
<path fill="none" stroke="black" d="M603.2,-368.13C575.53,-357.43 528.27,-339.16 492.62,-325.37"/>
<polygon fill="black" stroke="black" points="493.96,-322.13 483.37,-321.79 491.44,-328.66 493.96,-322.13"/>
</g>
<!-- :feature:settings -->
<g id="node7" class="node">
<title>:feature:settings</title>
<ellipse fill="none" stroke="black" cx="958.13" cy="-306" rx="69.78" ry="18"/>
<text text-anchor="middle" x="958.13" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:settings</text>
</g>
<!-- :app&#45;&gt;:feature:settings -->
<g id="edge6" class="edge">
<title>:app&#45;&gt;:feature:settings</title>
<path fill="none" stroke="black" d="M651.63,-371.7C697.28,-362.22 795.94,-341.66 879.13,-324 884.26,-322.91 889.58,-321.78 894.92,-320.63"/>
<polygon fill="black" stroke="black" points="895.34,-324.12 904.39,-318.6 893.88,-317.28 895.34,-324.12"/>
</g>
<!-- :core:common -->
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="760.13" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="760.13" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :app&#45;&gt;:core:common -->
<g id="edge7" class="edge">
<title>:app&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M653.52,-377.16C744.97,-377.21 1038.43,-373.43 1116.13,-324 1155.16,-299.17 1170.13,-281.27 1170.13,-235 1170.13,-235 1170.13,-235 1170.13,-161 1170.13,-114.96 1155.63,-97.23 1117.13,-72 1064.1,-37.25 896.54,-47.11 834.13,-36 829.18,-35.12 824.06,-34.12 818.93,-33.06"/>
<polygon fill="black" stroke="black" points="819.74,-29.66 809.23,-30.99 818.28,-36.51 819.74,-29.66"/>
</g>
<!-- :core:ui -->
<g id="node9" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="530.13" cy="-234" rx="39.07" ry="18"/>
<text text-anchor="middle" x="530.13" y="-228.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :app&#45;&gt;:core:ui -->
<g id="edge8" class="edge">
<title>:app&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M605.49,-365.91C590.07,-356.62 569.59,-342.01 557.13,-324 544.69,-306.03 537.86,-282.18 534.18,-263.69"/>
<polygon fill="black" stroke="black" points="537.64,-263.17 532.45,-253.93 530.75,-264.38 537.64,-263.17"/>
</g>
<!-- :core:designsystem -->
<g id="node10" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="749.13" cy="-162" rx="82.06" ry="18"/>
<text text-anchor="middle" x="749.13" y="-156.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :app&#45;&gt;:core:designsystem -->
<g id="edge9" class="edge">
<title>:app&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M653.33,-375.54C740.95,-370.56 1011.68,-352.94 1037.13,-324 1047.69,-311.98 1045.9,-301.38 1037.13,-288 1023.35,-267 880.1,-211.43 800.97,-181.97"/>
<polygon fill="black" stroke="black" points="802.26,-178.71 791.67,-178.52 799.82,-185.28 802.26,-178.71"/>
</g>
<!-- :core:data -->
<g id="node11" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="564.13" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="564.13" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :app&#45;&gt;:core:data -->
<g id="edge10" class="edge">
<title>:app&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M598.83,-376.56C490.37,-374.55 94,-364.47 57.13,-324 -72.66,-181.56 345.93,-164.36 505.2,-162.87"/>
<polygon fill="black" stroke="black" points="505.17,-166.37 515.14,-162.79 505.12,-159.37 505.17,-166.37"/>
</g>
<!-- :core:model -->
<g id="node12" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="391.13" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="391.13" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :app&#45;&gt;:core:model -->
<g id="edge11" class="edge">
<title>:app&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M599.09,-376.3C488.77,-373.19 76.42,-359.31 31.13,-324 -1.91,-298.24 0.13,-276.89 0.13,-235 0.13,-235 0.13,-235 0.13,-161 0.13,-91.6 220.52,-46.37 330.37,-28.13"/>
<polygon fill="black" stroke="black" points="330.81,-31.61 340.11,-26.54 329.68,-24.7 330.81,-31.61"/>
</g>
<!-- :core:analytics -->
<g id="node13" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="1043.13" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="1043.13" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :app&#45;&gt;:core:analytics -->
<g id="edge12" class="edge">
<title>:app&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M653.6,-377.55C742.51,-378.76 1020.63,-378.07 1088.13,-324 1126.58,-293.2 1125.57,-263.67 1113.13,-216 1103.47,-178.98 1080.15,-141.32 1063.07,-117.16"/>
<polygon fill="black" stroke="black" points="1066,-115.25 1057.3,-109.2 1060.33,-119.35 1066,-115.25"/>
</g>
<!-- :sync:work -->
<g id="node14" class="node">
<title>:sync:work</title>
<ellipse fill="none" stroke="black" cx="1052.13" cy="-234" rx="51.86" ry="18"/>
<text text-anchor="middle" x="1052.13" y="-228.95" font-family="Times,serif" font-size="14.00">:sync:work</text>
</g>
<!-- :app&#45;&gt;:sync:work -->
<g id="edge13" class="edge">
<title>:app&#45;&gt;:sync:work</title>
<path fill="none" stroke="black" d="M653.22,-375.82C745.34,-371.53 1042.3,-355.35 1070.13,-324 1085.05,-307.19 1077.76,-281.49 1068.38,-262.03"/>
<polygon fill="black" stroke="black" points="1071.54,-260.51 1063.78,-253.29 1065.34,-263.77 1071.54,-260.51"/>
</g>
<!-- :feature:interests&#45;&gt;:core:ui -->
<g id="edge14" class="edge">
<title>:feature:interests&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M335.02,-291.67C378.65,-279 443.79,-260.08 486.61,-247.64"/>
<polygon fill="black" stroke="black" points="487.45,-251.04 496.07,-244.89 485.49,-244.32 487.45,-251.04"/>
</g>
<!-- :feature:interests&#45;&gt;:core:designsystem -->
<g id="edge15" class="edge">
<title>:feature:interests&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M320.56,-289.4C366.58,-266.76 450.28,-226.34 482.13,-216 543.5,-196.07 615.36,-182.32 669.06,-173.83"/>
<polygon fill="black" stroke="black" points="669.39,-177.32 678.73,-172.33 668.32,-170.41 669.39,-177.32"/>
</g>
<!-- :feature:interests&#45;&gt;:core:data -->
<g id="edge16" class="edge">
<title>:feature:interests&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M308.22,-288.26C331.27,-268.74 371.86,-236.53 411.13,-216 444.18,-198.71 484.08,-185.11 514.85,-176.01"/>
<polygon fill="black" stroke="black" points="515.65,-179.42 524.28,-173.28 513.7,-172.7 515.65,-179.42"/>
</g>
<!-- :core:domain -->
<g id="node15" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="261.13" cy="-234" rx="60.05" ry="18"/>
<text text-anchor="middle" x="261.13" y="-228.95" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<!-- :feature:interests&#45;&gt;:core:domain -->
<g id="edge17" class="edge">
<title>:feature:interests&#45;&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M282.21,-287.7C279.19,-280.15 275.57,-271.12 272.2,-262.68"/>
<polygon fill="red" stroke="red" stroke-width="2" points="276.06,-262.9 269.09,-254.91 269.56,-265.5 276.06,-262.9"/>
</g>
<!-- :feature:foryou&#45;&gt;:core:ui -->
<g id="edge37" class="edge">
<title>:feature:foryou&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M181.1,-293.62C190.07,-291.65 199.37,-289.7 208.13,-288 304.99,-269.21 419.09,-251.46 482.14,-242.03"/>
<polygon fill="black" stroke="black" points="482.43,-245.52 491.81,-240.59 481.4,-238.6 482.43,-245.52"/>
</g>
<!-- :feature:foryou&#45;&gt;:core:designsystem -->
<g id="edge38" class="edge">
<title>:feature:foryou&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M180.42,-293.47C229.84,-281.43 303.12,-262.8 330.13,-252 361.15,-239.59 364.45,-226.64 396.13,-216 421.45,-207.49 572.8,-186.4 668.92,-173.54"/>
<polygon fill="black" stroke="black" points="669.12,-177.04 678.56,-172.25 668.19,-170.1 669.12,-177.04"/>
</g>
<!-- :feature:foryou&#45;&gt;:core:data -->
<g id="edge39" class="edge">
<title>:feature:foryou&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M138.65,-287.67C147.42,-266.94 165.12,-232.91 192.13,-216 243.29,-183.95 414.92,-170.54 506.08,-165.57"/>
<polygon fill="black" stroke="black" points="506.01,-169.08 515.81,-165.06 505.64,-162.09 506.01,-169.08"/>
</g>
<!-- :feature:foryou&#45;&gt;:core:domain -->
<g id="edge40" class="edge">
<title>:feature:foryou&#45;&gt;:core:domain</title>
<path fill="none" stroke="black" d="M160.76,-289.46C179.09,-279.52 203.09,-266.5 223.02,-255.68"/>
<polygon fill="black" stroke="black" points="224.57,-258.82 231.69,-250.97 221.23,-252.67 224.57,-258.82"/>
</g>
<!-- :feature:bookmarks&#45;&gt;:core:ui -->
<g id="edge41" class="edge">
<title>:feature:bookmarks&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M736.66,-291.25C689.36,-278.37 619.35,-259.3 574.23,-247.01"/>
<polygon fill="black" stroke="black" points="575.36,-243.69 564.79,-244.44 573.52,-250.45 575.36,-243.69"/>
</g>
<!-- :feature:bookmarks&#45;&gt;:core:designsystem -->
<g id="edge42" class="edge">
<title>:feature:bookmarks&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M782.47,-287.59C776.02,-263.5 764.31,-219.75 756.63,-191.03"/>
<polygon fill="black" stroke="black" points="760.06,-190.33 754.1,-181.57 753.3,-192.14 760.06,-190.33"/>
</g>
<!-- :feature:bookmarks&#45;&gt;:core:data -->
<g id="edge43" class="edge">
<title>:feature:bookmarks&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M758.5,-288.7C740.69,-278.43 717.39,-264.73 697.13,-252 661.72,-229.75 621.97,-202.9 595.23,-184.55"/>
<polygon fill="black" stroke="black" points="597.46,-181.84 587.24,-179.05 593.49,-187.6 597.46,-181.84"/>
</g>
<!-- :feature:topic&#45;&gt;:core:ui -->
<g id="edge44" class="edge">
<title>:feature:topic&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M604.34,-289.12C591,-279.39 573.76,-266.82 559.26,-256.24"/>
<polygon fill="black" stroke="black" points="561.55,-253.58 551.41,-250.52 557.43,-259.24 561.55,-253.58"/>
</g>
<!-- :feature:topic&#45;&gt;:core:designsystem -->
<g id="edge45" class="edge">
<title>:feature:topic&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M640.72,-288.15C662.17,-263.39 702.37,-216.97 727.33,-188.16"/>
<polygon fill="black" stroke="black" points="729.66,-190.82 733.56,-180.97 724.37,-186.24 729.66,-190.82"/>
</g>
<!-- :feature:topic&#45;&gt;:core:data -->
<g id="edge46" class="edge">
<title>:feature:topic&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M618.65,-287.87C608.08,-263.67 588.67,-219.21 576.09,-190.39"/>
<polygon fill="black" stroke="black" points="579.45,-189.34 572.24,-181.58 573.03,-192.14 579.45,-189.34"/>
</g>
<!-- :feature:search&#45;&gt;:core:ui -->
<g id="edge47" class="edge">
<title>:feature:search&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M465.27,-288.41C476.46,-279.2 490.54,-267.6 502.72,-257.57"/>
<polygon fill="black" stroke="black" points="504.92,-260.29 510.41,-251.24 500.47,-254.89 504.92,-260.29"/>
</g>
<!-- :feature:search&#45;&gt;:core:designsystem -->
<g id="edge48" class="edge">
<title>:feature:search&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M483.1,-291.03C509.94,-280.88 546.6,-266.44 578.13,-252 624.31,-230.84 675.85,-203.48 710.15,-184.72"/>
<polygon fill="black" stroke="black" points="711.82,-187.8 718.89,-179.91 708.44,-181.66 711.82,-187.8"/>
</g>
<!-- :feature:search&#45;&gt;:core:data -->
<g id="edge49" class="edge">
<title>:feature:search&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M449.03,-287.64C454.05,-268.42 464.33,-237.33 482.13,-216 493.69,-202.15 509.81,-190.65 524.7,-181.95"/>
<polygon fill="black" stroke="black" points="526.38,-185.02 533.42,-177.11 522.98,-178.9 526.38,-185.02"/>
</g>
<!-- :feature:search&#45;&gt;:core:domain -->
<g id="edge50" class="edge">
<title>:feature:search&#45;&gt;:core:domain</title>
<path fill="none" stroke="black" d="M407.89,-290.83C379.05,-279.86 338.93,-264.6 307.92,-252.8"/>
<polygon fill="black" stroke="black" points="309.37,-249.61 298.78,-249.32 306.88,-256.15 309.37,-249.61"/>
</g>
<!-- :feature:settings&#45;&gt;:core:ui -->
<g id="edge51" class="edge">
<title>:feature:settings&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M906.8,-293.48C897.6,-291.55 888.1,-289.64 879.13,-288 772.28,-268.41 646.09,-250.54 578.56,-241.4"/>
<polygon fill="black" stroke="black" points="579.32,-237.97 568.94,-240.1 578.38,-244.91 579.32,-237.97"/>
</g>
<!-- :feature:settings&#45;&gt;:core:designsystem -->
<g id="edge52" class="edge">
<title>:feature:settings&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M934.15,-288.71C896.95,-263.43 825.2,-214.68 782.81,-185.88"/>
<polygon fill="black" stroke="black" points="784.96,-183.11 774.72,-180.39 781.02,-188.9 784.96,-183.11"/>
</g>
<!-- :feature:settings&#45;&gt;:core:data -->
<g id="edge53" class="edge">
<title>:feature:settings&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M918.54,-290.73C844.61,-264.09 686.03,-206.93 608.56,-179.01"/>
<polygon fill="black" stroke="black" points="609.75,-175.72 599.16,-175.63 607.38,-182.31 609.75,-175.72"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge19" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M561.51,-222.93C568.62,-220.65 576.13,-218.24 583.13,-216 619.89,-204.24 661.23,-191.03 693.47,-180.75"/>
<polygon fill="black" stroke="black" points="694.13,-184.21 702.59,-177.84 692,-177.55 694.13,-184.21"/>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge20" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M496.49,-224.51C447.08,-210.02 356.59,-175.34 318.13,-108 310.19,-94.11 310.86,-86.25 318.13,-72 325.1,-58.32 337.43,-47.35 350,-39.02"/>
<polygon fill="black" stroke="black" points="351.58,-42.15 358.28,-33.95 347.93,-36.18 351.58,-42.15"/>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge18" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M555.54,-220.04C574.11,-210.1 599.56,-195.49 620.13,-180 638.71,-166.01 637.05,-153.85 658.13,-144 782.97,-85.63 830.22,-130.89 966.13,-108 972.03,-107.01 978.17,-105.85 984.28,-104.63"/>
<polygon fill="black" stroke="black" points="984.65,-108.13 993.73,-102.67 983.23,-101.27 984.65,-108.13"/>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge21" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M601.15,-150.4C609.05,-148.22 617.35,-145.99 625.13,-144 693.65,-126.5 736.14,-163.38 780.13,-108 794.09,-90.42 786.46,-65.02 776.87,-45.85"/>
<polygon fill="black" stroke="black" points="780.04,-44.37 772.18,-37.26 773.9,-47.72 780.04,-44.37"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge25" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M600.02,-149.93C608.21,-147.7 616.92,-145.57 625.13,-144 774.83,-115.44 815.71,-132.47 966.13,-108 972.04,-107.04 978.18,-105.91 984.3,-104.7"/>
<polygon fill="black" stroke="black" points="984.66,-108.2 993.75,-102.75 983.25,-101.34 984.66,-108.2"/>
</g>
<!-- :core:database -->
<g id="node16" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="391.13" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="391.13" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge22" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M532.8,-148.32C506.06,-137.5 467.25,-121.8 437,-109.56"/>
<polygon fill="red" stroke="red" stroke-width="2" points="440.09,-107.03 429.5,-106.53 437.46,-113.52 440.09,-107.03"/>
</g>
<!-- :core:datastore -->
<g id="node17" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="892.13" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="892.13" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge23" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M600.77,-150.26C608.77,-148.06 617.21,-145.86 625.13,-144 707.95,-124.56 729.76,-124.95 813.13,-108 819.06,-106.79 825.23,-105.51 831.4,-104.21"/>
<polygon fill="black" stroke="black" points="831.9,-107.69 840.95,-102.19 830.45,-100.84 831.9,-107.69"/>
</g>
<!-- :core:network -->
<g id="node18" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="709.13" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="709.13" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge24" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M592.43,-147.34C613.89,-136.97 643.72,-122.58 667.85,-110.93"/>
<polygon fill="black" stroke="black" points="669.29,-114.12 676.77,-106.62 666.25,-107.82 669.29,-114.12"/>
</g>
<!-- :core:notifications -->
<g id="node19" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="551.13" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="551.13" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge26" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M560.91,-143.7C559.54,-136.32 557.91,-127.52 556.37,-119.25"/>
<polygon fill="black" stroke="black" points="559.85,-118.79 554.58,-109.59 552.96,-120.06 559.85,-118.79"/>
</g>
<!-- :sync:work&#45;&gt;:core:data -->
<g id="edge55" class="edge">
<title>:sync:work&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M1003.5,-227.18C929,-218.09 782.21,-199.56 658.13,-180 644.69,-177.88 630.21,-175.38 616.74,-172.95"/>
<polygon fill="black" stroke="black" points="617.66,-169.56 607.19,-171.21 616.4,-176.44 617.66,-169.56"/>
</g>
<!-- :sync:work&#45;&gt;:core:analytics -->
<g id="edge54" class="edge">
<title>:sync:work&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M1051.02,-215.59C1049.5,-191.61 1046.75,-148.14 1044.93,-119.42"/>
<polygon fill="black" stroke="black" points="1048.43,-119.38 1044.31,-109.62 1041.45,-119.82 1048.43,-119.38"/>
</g>
<!-- :core:domain&#45;&gt;:core:data -->
<g id="edge35" class="edge">
<title>:core:domain&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M307.48,-222.29C363.12,-209.44 456.09,-187.96 513.55,-174.68"/>
<polygon fill="red" stroke="red" stroke-width="2" points="512.64,-178.49 521.6,-172.83 511.06,-171.67 512.64,-178.49"/>
</g>
<!-- :core:domain&#45;&gt;:core:model -->
<g id="edge36" class="edge">
<title>:core:domain&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M258.85,-215.58C255.67,-183.81 253.43,-115.69 285.13,-72 297.97,-54.29 318.43,-42.15 337.96,-34.01"/>
<polygon fill="black" stroke="black" points="339.18,-37.29 347.25,-30.43 336.66,-30.76 339.18,-37.29"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge27" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M391.13,-71.7C391.13,-64.41 391.13,-55.73 391.13,-47.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="394.63,-49.13 391.13,-39.13 387.63,-49.13 394.63,-49.13"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge30" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M862.83,-73.46C844.12,-63.54 819.63,-50.56 799.26,-39.75"/>
<polygon fill="black" stroke="black" points="801.15,-36.79 790.68,-35.2 797.87,-42.98 801.15,-36.79"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge29" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M836.32,-80.36C818.39,-77.63 798.43,-74.64 780.13,-72 664.78,-55.39 530,-37.33 453.19,-27.16"/>
<polygon fill="black" stroke="black" points="453.7,-23.7 443.33,-25.86 452.78,-30.64 453.7,-23.7"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node20" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="931.13" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="931.13" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge28" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M901.57,-72.05C905.91,-64.26 911.17,-54.82 916.04,-46.08"/>
<polygon fill="black" stroke="black" points="918.96,-48.04 920.77,-37.6 912.84,-44.63 918.96,-48.04"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge31" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M721.47,-72.05C727.42,-63.89 734.69,-53.91 741.31,-44.82"/>
<polygon fill="black" stroke="black" points="743.94,-47.16 747,-37.01 738.29,-43.03 743.94,-47.16"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge32" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M662.57,-77.69C654.43,-75.76 646.04,-73.8 638.13,-72 573.05,-57.23 498.08,-41.3 447.97,-30.8"/>
<polygon fill="black" stroke="black" points="448.71,-27.38 438.2,-28.76 447.28,-34.23 448.71,-27.38"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge34" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M594.18,-74.58C627.64,-63.37 674.14,-47.8 709.41,-35.99"/>
<polygon fill="black" stroke="black" points="710.16,-39.43 718.53,-32.93 707.94,-32.79 710.16,-39.43"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge33" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M516.01,-73.64C491.68,-62.99 459.15,-48.76 433.39,-37.49"/>
<polygon fill="black" stroke="black" points="435.12,-34.43 424.55,-33.62 432.31,-40.84 435.12,-34.43"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1212pt" height="404pt" viewBox="0.00 0.00 1212.13 404.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-400 1208.13,-400 1208.13,4 -4,4"/>
<g id="node1" class="node">
<title>:app</title>
<ellipse fill="none" stroke="black" cx="645.13" cy="-378" rx="27.66" ry="18"/>
<text text-anchor="middle" x="645.13" y="-373.8" font-family="Times,serif" font-size="14.00">:app</text>
</g>
<g id="node2" class="node">
<title>:feature:interests</title>
<ellipse fill="none" stroke="black" cx="297.13" cy="-306" rx="75.39" ry="18"/>
<text text-anchor="middle" x="297.13" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:interests</text>
</g>
<g id="edge1" class="edge">
<title>:app-&gt;:feature:interests</title>
<path fill="none" stroke="red" stroke-width="2" d="M618.9,-371.75C571.45,-362.24 468.2,-341.55 381.13,-324 375.62,-322.89 369.9,-321.74 364.17,-320.58"/>
<polygon fill="red" stroke="red" stroke-width="2" points="366.62,-317.5 356.12,-318.95 365.23,-324.36 366.62,-317.5"/>
</g>
<g id="node3" class="node">
<title>:feature:foryou</title>
<ellipse fill="none" stroke="black" cx="135.13" cy="-306" rx="68.95" ry="18"/>
<text text-anchor="middle" x="135.13" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:foryou</text>
</g>
<g id="edge2" class="edge">
<title>:app-&gt;:feature:foryou</title>
<path fill="none" stroke="black" d="M617.71,-374.52C549.19,-368.15 365.1,-349.83 213.13,-324 207.63,-323.07 201.94,-322.01 196.25,-320.88"/>
<polygon fill="black" stroke="black" points="197.33,-317.53 186.83,-318.96 195.93,-324.39 197.33,-317.53"/>
</g>
<g id="node4" class="node">
<title>:feature:bookmarks</title>
<ellipse fill="none" stroke="black" cx="812.13" cy="-306" rx="86.12" ry="18"/>
<text text-anchor="middle" x="812.13" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:bookmarks</text>
</g>
<g id="edge3" class="edge">
<title>:app-&gt;:feature:bookmarks</title>
<path fill="none" stroke="black" d="M668,-367.41C692.72,-357.05 732.82,-340.24 764.45,-326.98"/>
<polygon fill="black" stroke="black" points="765.56,-330.32 773.43,-323.22 762.85,-323.86 765.56,-330.32"/>
</g>
<g id="node5" class="node">
<title>:feature:topic</title>
<ellipse fill="none" stroke="black" cx="645.13" cy="-306" rx="62.51" ry="18"/>
<text text-anchor="middle" x="645.13" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:topic</text>
</g>
<g id="edge4" class="edge">
<title>:app-&gt;:feature:topic</title>
<path fill="none" stroke="black" d="M645.13,-359.7C645.13,-352.41 645.13,-343.73 645.13,-335.54"/>
<polygon fill="black" stroke="black" points="648.63,-335.62 645.13,-325.62 641.63,-335.62 648.63,-335.62"/>
</g>
<g id="node6" class="node">
<title>:feature:search</title>
<ellipse fill="none" stroke="black" cx="458.13" cy="-306" rx="67.87" ry="18"/>
<text text-anchor="middle" x="458.13" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:search</text>
</g>
<g id="edge5" class="edge">
<title>:app-&gt;:feature:search</title>
<path fill="none" stroke="black" d="M621.45,-368.13C592.73,-357.39 543.61,-339 506.72,-325.19"/>
<polygon fill="black" stroke="black" points="508.19,-322 497.6,-321.78 505.74,-328.56 508.19,-322"/>
</g>
<g id="node7" class="node">
<title>:feature:settings</title>
<ellipse fill="none" stroke="black" cx="989.13" cy="-306" rx="72.71" ry="18"/>
<text text-anchor="middle" x="989.13" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:settings</text>
</g>
<g id="edge6" class="edge">
<title>:app-&gt;:feature:settings</title>
<path fill="none" stroke="black" d="M671.54,-371.7C718.81,-362.21 820.98,-341.64 907.13,-324 912.6,-322.88 918.27,-321.71 923.96,-320.54"/>
<polygon fill="black" stroke="black" points="924.32,-324.04 933.4,-318.59 922.9,-317.19 924.32,-324.04"/>
</g>
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="795.13" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="795.13" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge7" class="edge">
<title>:app-&gt;:core:common</title>
<path fill="none" stroke="black" d="M672.95,-377.23C766.59,-377.52 1068.86,-374.44 1149.13,-324 1188.5,-299.26 1204.13,-281.5 1204.13,-235 1204.13,-235 1204.13,-235 1204.13,-161 1204.13,-116.87 1196.1,-97.56 1160.13,-72 1107.37,-34.51 934.89,-47.08 871.13,-36 865.91,-35.09 860.51,-34.07 855.1,-32.98"/>
<polygon fill="black" stroke="black" points="856.04,-29.6 845.53,-30.98 854.61,-36.45 856.04,-29.6"/>
</g>
<g id="node9" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="553.13" cy="-234" rx="40.53" ry="18"/>
<text text-anchor="middle" x="553.13" y="-229.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge8" class="edge">
<title>:app-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M623.54,-366.56C607.2,-357.54 585.52,-342.97 573.13,-324 561.41,-306.05 556.49,-282.21 554.46,-263.71"/>
<polygon fill="black" stroke="black" points="557.96,-263.62 553.63,-253.96 550.99,-264.22 557.96,-263.62"/>
</g>
<g id="node10" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="774.13" cy="-162" rx="85.06" ry="18"/>
<text text-anchor="middle" x="774.13" y="-157.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge9" class="edge">
<title>:app-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M673,-375.63C763.47,-370.92 1044.67,-353.95 1071.13,-324 1081.72,-312.01 1079.98,-301.33 1071.13,-288 1056.87,-266.53 909.24,-211.2 827.64,-181.88"/>
<polygon fill="black" stroke="black" points="828.85,-178.59 818.25,-178.52 826.49,-185.18 828.85,-178.59"/>
</g>
<g id="node11" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="584.13" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="584.13" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge10" class="edge">
<title>:app-&gt;:core:data</title>
<path fill="none" stroke="black" d="M617.3,-376.64C505.79,-374.93 95.33,-365.8 57.13,-324 -77.67,-176.51 358.28,-162.51 523.4,-162.36"/>
<polygon fill="black" stroke="black" points="523.29,-165.86 533.29,-162.37 523.29,-158.86 523.29,-165.86"/>
</g>
<g id="node12" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="412.13" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="412.13" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge11" class="edge">
<title>:app-&gt;:core:model</title>
<path fill="none" stroke="black" d="M617.23,-376.35C503.4,-373.48 77.9,-360.37 31.13,-324 -1.94,-298.29 0.13,-276.89 0.13,-235 0.13,-235 0.13,-235 0.13,-161 0.13,-88.15 233.3,-44.54 348.81,-27.41"/>
<polygon fill="black" stroke="black" points="349.06,-30.91 358.45,-26.01 348.05,-23.99 349.06,-30.91"/>
</g>
<g id="node13" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="1084.13" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="1084.13" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge12" class="edge">
<title>:app-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M672.84,-375.63C769.36,-370.63 1086.84,-352.17 1122.13,-324 1160.64,-293.26 1158.53,-263.93 1147.13,-216 1138.52,-179.8 1117.67,-142.18 1102.3,-117.8"/>
<polygon fill="black" stroke="black" points="1105.29,-115.97 1096.93,-109.47 1099.41,-119.77 1105.29,-115.97"/>
</g>
<g id="node14" class="node">
<title>:sync:work</title>
<ellipse fill="none" stroke="black" cx="1084.13" cy="-234" rx="53.95" ry="18"/>
<text text-anchor="middle" x="1084.13" y="-229.8" font-family="Times,serif" font-size="14.00">:sync:work</text>
</g>
<g id="edge13" class="edge">
<title>:app-&gt;:sync:work</title>
<path fill="none" stroke="black" d="M672.8,-375.91C767.64,-371.87 1075.28,-356.38 1104.13,-324 1119.22,-307.06 1111.16,-281.21 1101.13,-261.73"/>
<polygon fill="black" stroke="black" points="1104.33,-260.27 1096.4,-253.25 1098.22,-263.69 1104.33,-260.27"/>
</g>
<g id="edge14" class="edge">
<title>:feature:interests-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M345.28,-291.83C392.01,-279.06 462.39,-259.81 508.05,-247.33"/>
<polygon fill="black" stroke="black" points="508.91,-250.72 517.64,-244.7 507.07,-243.97 508.91,-250.72"/>
</g>
<g id="edge15" class="edge">
<title>:feature:interests-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M331.47,-289.69C385.46,-265.68 485.87,-221.35 503.13,-216 565.44,-196.69 638.07,-182.94 692.45,-174.29"/>
<polygon fill="black" stroke="black" points="692.93,-177.75 702.27,-172.75 691.85,-170.84 692.93,-177.75"/>
</g>
<g id="edge16" class="edge">
<title>:feature:interests-&gt;:core:data</title>
<path fill="none" stroke="black" d="M318.57,-288.44C344.39,-269.08 389.6,-237.03 432.13,-216 465.15,-199.67 504.47,-186.11 534.84,-176.79"/>
<polygon fill="black" stroke="black" points="535.58,-180.22 544.14,-173.99 533.56,-173.52 535.58,-180.22"/>
</g>
<g id="node15" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="280.13" cy="-234" rx="61.99" ry="18"/>
<text text-anchor="middle" x="280.13" y="-229.8" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<g id="edge17" class="edge">
<title>:feature:interests-&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M292.93,-287.7C291.14,-280.32 289,-271.52 286.99,-263.25"/>
<polygon fill="red" stroke="red" stroke-width="2" points="290.76,-263.94 285,-255.05 283.96,-265.59 290.76,-263.94"/>
</g>
<g id="edge37" class="edge">
<title>:feature:foryou-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M185.81,-293.49C194.89,-291.56 204.27,-289.65 213.13,-288 315.89,-268.81 437.04,-251.09 503.41,-241.8"/>
<polygon fill="black" stroke="black" points="503.84,-245.27 513.26,-240.43 502.87,-238.34 503.84,-245.27"/>
</g>
<g id="edge38" class="edge">
<title>:feature:foryou-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M185.66,-293.33C244.53,-279.61 335.74,-257.97 351.13,-252 382.28,-239.92 385.45,-226.62 417.13,-216 442.63,-207.45 594.52,-186.53 691.79,-173.68"/>
<polygon fill="black" stroke="black" points="692.12,-177.16 701.57,-172.39 691.2,-170.22 692.12,-177.16"/>
</g>
<g id="edge39" class="edge">
<title>:feature:foryou-&gt;:core:data</title>
<path fill="none" stroke="black" d="M144.05,-287.98C155.92,-267.22 178.94,-232.84 209.13,-216 261.93,-186.55 432.36,-172.06 524.19,-166.24"/>
<polygon fill="black" stroke="black" points="524.25,-169.74 534.02,-165.63 523.82,-162.75 524.25,-169.74"/>
</g>
<g id="edge40" class="edge">
<title>:feature:foryou-&gt;:core:domain</title>
<path fill="none" stroke="black" d="M166.95,-289.64C188.2,-279.38 216.36,-265.79 239.26,-254.73"/>
<polygon fill="black" stroke="black" points="240.53,-258 248.01,-250.5 237.49,-251.7 240.53,-258"/>
</g>
<g id="edge41" class="edge">
<title>:feature:bookmarks-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M760.96,-291.17C713.53,-278.35 643.64,-259.46 598.25,-247.19"/>
<polygon fill="black" stroke="black" points="599.29,-243.85 588.73,-244.62 597.47,-250.61 599.29,-243.85"/>
</g>
<g id="edge42" class="edge">
<title>:feature:bookmarks-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M807.47,-287.59C801.02,-263.5 789.32,-219.75 781.63,-191.03"/>
<polygon fill="black" stroke="black" points="785.07,-190.33 779.1,-181.57 778.3,-192.14 785.07,-190.33"/>
</g>
<g id="edge43" class="edge">
<title>:feature:bookmarks-&gt;:core:data</title>
<path fill="none" stroke="black" d="M783.58,-288.58C765.8,-278.26 742.5,-264.56 722.13,-252 685.6,-229.48 644.32,-202.68 616.51,-184.41"/>
<polygon fill="black" stroke="black" points="618.44,-181.49 608.17,-178.92 614.6,-187.34 618.44,-181.49"/>
</g>
<g id="edge44" class="edge">
<title>:feature:topic-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M623.79,-288.76C611.28,-279.25 595.32,-267.1 581.74,-256.77"/>
<polygon fill="black" stroke="black" points="584.06,-254.14 573.99,-250.87 579.82,-259.71 584.06,-254.14"/>
</g>
<g id="edge45" class="edge">
<title>:feature:topic-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M660.43,-288.15C682.93,-263.39 725.1,-216.97 751.27,-188.16"/>
<polygon fill="black" stroke="black" points="753.69,-190.7 757.83,-180.95 748.51,-185.99 753.69,-190.7"/>
</g>
<g id="edge46" class="edge">
<title>:feature:topic-&gt;:core:data</title>
<path fill="none" stroke="black" d="M637.77,-287.87C627.37,-263.67 608.28,-219.21 595.9,-190.39"/>
<polygon fill="black" stroke="black" points="599.27,-189.39 592.11,-181.58 592.84,-192.15 599.27,-189.39"/>
</g>
<g id="edge47" class="edge">
<title>:feature:search-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M480.16,-288.76C493.08,-279.25 509.56,-267.1 523.59,-256.77"/>
<polygon fill="black" stroke="black" points="525.64,-259.6 531.62,-250.85 521.49,-253.96 525.64,-259.6"/>
</g>
<g id="edge48" class="edge">
<title>:feature:search-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M499.63,-291.43C528.93,-281.46 568.92,-267.08 603.13,-252 649.76,-231.45 701.4,-203.86 735.61,-184.88"/>
<polygon fill="black" stroke="black" points="737.29,-187.95 744.32,-180.02 733.88,-181.84 737.29,-187.95"/>
</g>
<g id="edge49" class="edge">
<title>:feature:search-&gt;:core:data</title>
<path fill="none" stroke="black" d="M463.8,-287.68C470.73,-268.48 483.97,-237.42 503.13,-216 515.05,-202.67 531.07,-191.26 545.7,-182.48"/>
<polygon fill="black" stroke="black" points="547.31,-185.6 554.24,-177.59 543.82,-179.53 547.31,-185.6"/>
</g>
<g id="edge50" class="edge">
<title>:feature:search-&gt;:core:domain</title>
<path fill="none" stroke="black" d="M421.25,-290.5C393.77,-279.69 356.05,-264.86 326.53,-253.25"/>
<polygon fill="black" stroke="black" points="328.05,-250.08 317.46,-249.68 325.49,-256.6 328.05,-250.08"/>
</g>
<g id="edge51" class="edge">
<title>:feature:settings-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M935.84,-293.5C926.3,-291.57 916.43,-289.66 907.13,-288 799.13,-268.74 671.74,-250.84 603.06,-241.58"/>
<polygon fill="black" stroke="black" points="603.62,-238.13 593.25,-240.26 602.69,-245.06 603.62,-238.13"/>
</g>
<g id="edge52" class="edge">
<title>:feature:settings-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M964.47,-288.71C926.11,-263.38 852.07,-214.48 808.5,-185.7"/>
<polygon fill="black" stroke="black" points="810.7,-182.96 800.43,-180.37 806.85,-188.8 810.7,-182.96"/>
</g>
<g id="edge53" class="edge">
<title>:feature:settings-&gt;:core:data</title>
<path fill="none" stroke="black" d="M948.44,-290.73C872.29,-264.03 708.77,-206.7 629.31,-178.84"/>
<polygon fill="black" stroke="black" points="630.7,-175.62 620.11,-175.61 628.38,-182.23 630.7,-175.62"/>
</g>
<g id="edge19" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M585.26,-222.82C619.77,-211.89 675.28,-194.31 717.21,-181.03"/>
<polygon fill="black" stroke="black" points="718.19,-184.39 726.66,-178.03 716.07,-177.72 718.19,-184.39"/>
</g>
<g id="edge20" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M518.04,-224.47C467.55,-210.1 376.2,-175.75 337.13,-108 329.14,-94.14 329.77,-86.21 337.13,-72 344.26,-58.24 356.79,-47.28 369.59,-38.99"/>
<polygon fill="black" stroke="black" points="371.25,-42.07 378.05,-33.94 367.67,-36.06 371.25,-42.07"/>
</g>
<g id="edge18" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M578.63,-219.79C596.96,-209.82 621.91,-195.3 642.13,-180 660.68,-165.96 659.02,-153.78 680.13,-144 813.2,-82.35 863.46,-132.04 1008.13,-108 1013.36,-107.13 1018.76,-106.13 1024.17,-105.06"/>
<polygon fill="black" stroke="black" points="1024.66,-108.53 1033.74,-103.08 1023.24,-101.68 1024.66,-108.53"/>
</g>
<g id="edge21" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M622.36,-150.33C630.51,-148.16 639.09,-145.94 647.13,-144 721.78,-125.99 767.81,-167.69 816.13,-108 830.29,-90.51 822.33,-65.1 812.4,-45.91"/>
<polygon fill="black" stroke="black" points="815.51,-44.29 807.56,-37.29 809.41,-47.72 815.51,-44.29"/>
</g>
<g id="edge25" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M621.21,-149.91C629.67,-147.68 638.66,-145.55 647.13,-144 805.72,-114.9 848.94,-133.65 1008.13,-108 1013.44,-107.14 1018.93,-106.14 1024.43,-105.07"/>
<polygon fill="black" stroke="black" points="1025.07,-108.51 1034.16,-103.06 1023.66,-101.65 1025.07,-108.51"/>
</g>
<g id="node16" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="412.13" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="412.13" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge22" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M552.18,-148C525.79,-137.26 487.98,-121.87 458.3,-109.79"/>
<polygon fill="red" stroke="red" stroke-width="2" points="461.15,-107.17 450.57,-106.64 458.51,-113.66 461.15,-107.17"/>
</g>
<g id="node17" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="931.13" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="931.13" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge23" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M621.98,-150.21C630.23,-148.02 638.95,-145.83 647.13,-144 736.12,-124.1 759.58,-125.26 849.13,-108 855.44,-106.78 862.02,-105.48 868.58,-104.16"/>
<polygon fill="black" stroke="black" points="868.97,-107.65 878.07,-102.22 867.58,-100.79 868.97,-107.65"/>
</g>
<g id="node18" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="742.13" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="742.13" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge24" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M614.59,-147.5C638.42,-136.95 671.87,-122.13 698.53,-110.31"/>
<polygon fill="black" stroke="black" points="699.65,-113.65 707.37,-106.4 696.81,-107.25 699.65,-113.65"/>
</g>
<g id="node19" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="578.13" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="578.13" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge26" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M582.65,-143.7C582.02,-136.41 581.28,-127.73 580.58,-119.54"/>
<polygon fill="black" stroke="black" points="584.07,-119.28 579.72,-109.61 577.09,-119.87 584.07,-119.28"/>
</g>
<g id="edge55" class="edge">
<title>:sync:work-&gt;:core:data</title>
<path fill="none" stroke="black" d="M1033.64,-227.11C957.06,-218.02 807.03,-199.55 680.13,-180 666.54,-177.91 651.9,-175.43 638.26,-173.02"/>
<polygon fill="black" stroke="black" points="639.02,-169.6 628.56,-171.29 637.79,-176.49 639.02,-169.6"/>
</g>
<g id="edge54" class="edge">
<title>:sync:work-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M1084.13,-215.59C1084.13,-191.61 1084.13,-148.14 1084.13,-119.42"/>
<polygon fill="black" stroke="black" points="1087.63,-119.62 1084.13,-109.62 1080.63,-119.62 1087.63,-119.62"/>
</g>
<g id="edge35" class="edge">
<title>:core:domain-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M327.63,-222.06C383.21,-209.27 474.91,-188.15 532.29,-174.94"/>
<polygon fill="red" stroke="red" stroke-width="2" points="531.38,-178.74 540.34,-173.08 529.81,-171.92 531.38,-178.74"/>
</g>
<g id="edge36" class="edge">
<title>:core:domain-&gt;:core:model</title>
<path fill="none" stroke="black" d="M277.82,-215.56C274.59,-183.75 272.27,-115.57 304.13,-72 317.19,-54.13 337.94,-41.98 357.78,-33.87"/>
<polygon fill="black" stroke="black" points="358.8,-37.22 366.92,-30.41 356.33,-30.67 358.8,-37.22"/>
</g>
<g id="edge27" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M412.13,-71.7C412.13,-64.41 412.13,-55.73 412.13,-47.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="415.63,-49.13 412.13,-39.13 408.63,-49.13 415.63,-49.13"/>
</g>
<g id="edge30" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M900.95,-73.46C881.67,-63.54 856.44,-50.56 835.45,-39.75"/>
<polygon fill="black" stroke="black" points="837.07,-36.65 826.57,-35.18 833.86,-42.87 837.07,-36.65"/>
</g>
<g id="edge29" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M873.24,-80.25C854.98,-77.55 834.72,-74.59 816.13,-72 695.93,-55.23 555.39,-37.14 475.76,-27.02"/>
<polygon fill="black" stroke="black" points="476.33,-23.57 465.96,-25.78 475.44,-30.51 476.33,-23.57"/>
</g>
<g id="node20" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="971.13" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="971.13" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge28" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M941.02,-71.7C945.47,-63.9 950.84,-54.51 955.8,-45.83"/>
<polygon fill="black" stroke="black" points="958.68,-47.84 960.6,-37.42 952.6,-44.36 958.68,-47.84"/>
</g>
<g id="edge31" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M754.96,-72.05C761.14,-63.89 768.7,-53.91 775.58,-44.82"/>
<polygon fill="black" stroke="black" points="778.26,-47.08 781.5,-37 772.68,-42.86 778.26,-47.08"/>
</g>
<g id="edge32" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M693.6,-77.69C685.12,-75.76 676.37,-73.8 668.13,-72 600.38,-57.21 522.31,-41.19 470.37,-30.68"/>
<polygon fill="black" stroke="black" points="471.36,-27.31 460.86,-28.76 469.97,-34.17 471.36,-27.31"/>
</g>
<g id="edge34" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M622.83,-74.58C657.72,-63.32 706.27,-47.66 742.94,-35.83"/>
<polygon fill="black" stroke="black" points="743.55,-39.32 751.99,-32.92 741.4,-32.66 743.55,-39.32"/>
</g>
<g id="edge33" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M541.7,-73.64C516.45,-62.99 482.7,-48.76 455.98,-37.49"/>
<polygon fill="black" stroke="black" points="457.34,-34.27 446.77,-33.61 454.62,-40.72 457.34,-34.27"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

@ -1,73 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="449pt" height="188pt"
viewBox="0.00 0.00 448.51 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-184 444.51,-184 444.51,4 -4,4"/>
<!-- :app&#45;nia&#45;catalog -->
<g id="node1" class="node">
<title>:app&#45;nia&#45;catalog</title>
<ellipse fill="none" stroke="black" cx="164.06" cy="-162" rx="70.8" ry="18"/>
<text text-anchor="middle" x="164.06" y="-156.95" font-family="Times,serif" font-size="14.00">:app&#45;nia&#45;catalog</text>
</g>
<!-- :core:designsystem -->
<g id="node2" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-18" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :app&#45;nia&#45;catalog&#45;&gt;:core:designsystem -->
<g id="edge1" class="edge">
<title>:app&#45;nia&#45;catalog&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M154.17,-143.87C140.13,-119.56 114.29,-74.82 97.66,-46.01"/>
<polygon fill="black" stroke="black" points="100.77,-44.41 92.74,-37.5 94.71,-47.91 100.77,-44.41"/>
</g>
<!-- :core:ui -->
<g id="node3" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="222.06" cy="-90" rx="39.07" ry="18"/>
<text text-anchor="middle" x="222.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :app&#45;nia&#45;catalog&#45;&gt;:core:ui -->
<g id="edge2" class="edge">
<title>:app&#45;nia&#45;catalog&#45;&gt;:core:ui</title>
<path fill="none" stroke="red" stroke-width="2" d="M178.1,-144.05C185.04,-135.68 193.55,-125.4 201.23,-116.13"/>
<polygon fill="red" stroke="red" stroke-width="2" points="202.93,-119.57 206.62,-109.64 197.54,-115.11 202.93,-119.57"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge4" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M196.38,-76.16C176.17,-66.05 147.57,-51.76 124.04,-39.99"/>
<polygon fill="black" stroke="black" points="125.83,-36.97 115.32,-35.63 122.7,-43.23 125.83,-36.97"/>
</g>
<!-- :core:analytics -->
<g id="node4" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="247.06" cy="-18" rx="64.66" ry="18"/>
<text text-anchor="middle" x="247.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge3" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="red" stroke-width="2" d="M228.11,-72.05C230.8,-64.52 234.05,-55.44 237.08,-46.94"/>
<polygon fill="red" stroke="red" stroke-width="2" points="239.8,-49.72 239.87,-39.13 233.21,-47.37 239.8,-49.72"/>
</g>
<!-- :core:model -->
<g id="node5" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="385.06" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="385.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge5" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M250.08,-76.97C275.45,-66.07 313.21,-49.86 342.35,-37.34"/>
<polygon fill="black" stroke="black" points="343.45,-40.68 351.26,-33.52 340.69,-34.25 343.45,-40.68"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="462pt" height="188pt" viewBox="0.00 0.00 462.21 188.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-184 458.21,-184 458.21,4 -4,4"/>
<g id="node1" class="node">
<title>:app-nia-catalog</title>
<ellipse fill="none" stroke="black" cx="169.06" cy="-162" rx="73.77" ry="18"/>
<text text-anchor="middle" x="169.06" y="-157.8" font-family="Times,serif" font-size="14.00">:app-nia-catalog</text>
</g>
<g id="node2" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-18" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge1" class="edge">
<title>:app-nia-catalog-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M158.93,-143.87C144.55,-119.56 118.08,-74.82 101.04,-46.01"/>
<polygon fill="black" stroke="black" points="104.1,-44.32 96,-37.49 98.08,-47.88 104.1,-44.32"/>
</g>
<g id="node3" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="229.06" cy="-90" rx="40.53" ry="18"/>
<text text-anchor="middle" x="229.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge2" class="edge">
<title>:app-nia-catalog-&gt;:core:ui</title>
<path fill="none" stroke="red" stroke-width="2" d="M183.58,-144.05C190.84,-135.59 199.75,-125.19 207.76,-115.84"/>
<polygon fill="red" stroke="red" stroke-width="2" points="209.26,-119.48 213.11,-109.61 203.94,-114.92 209.26,-119.48"/>
</g>
<g id="edge4" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M202.31,-76C181.55,-65.91 152.35,-51.71 128.28,-40.01"/>
<polygon fill="black" stroke="black" points="129.87,-36.89 119.34,-35.67 126.81,-43.19 129.87,-36.89"/>
</g>
<g id="node4" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="255.06" cy="-18" rx="67.34" ry="18"/>
<text text-anchor="middle" x="255.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge3" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="red" stroke-width="2" d="M235.35,-72.05C238.15,-64.52 241.52,-55.44 244.68,-46.94"/>
<polygon fill="red" stroke="red" stroke-width="2" points="247.39,-49.71 247.59,-39.11 240.82,-47.27 247.39,-49.71"/>
</g>
<g id="node5" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="397.06" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="397.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge5" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M257.94,-76.97C284.09,-66.07 323.01,-49.86 353.03,-37.34"/>
<polygon fill="black" stroke="black" points="354.37,-40.58 362.26,-33.5 351.68,-34.12 354.37,-40.58"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -1,19 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="137pt" height="44pt"
viewBox="0.00 0.00 137.32 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 133.32,-40 133.32,4 -4,4"/>
<!-- :core:analytics -->
<g id="node1" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="64.66" cy="-18" rx="64.66" ry="18"/>
<text text-anchor="middle" x="64.66" y="-12.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="143pt" height="44pt" viewBox="0.00 0.00 142.68 44.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 138.68,-40 138.68,4 -4,4"/>
<g id="node1" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="67.34" cy="-18" rx="67.34" ry="18"/>
<text text-anchor="middle" x="67.34" y="-13.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 863 B

After

Width:  |  Height:  |  Size: 784 B

@ -1,19 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="138pt" height="44pt"
viewBox="0.00 0.00 138.34 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 134.34,-40 134.34,4 -4,4"/>
<!-- :core:common -->
<g id="node1" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="65.17" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="65.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="142pt" height="44pt" viewBox="0.00 0.00 141.63 44.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 137.63,-40 137.63,4 -4,4"/>
<g id="node1" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="66.81" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="66.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 854 B

After

Width:  |  Height:  |  Size: 778 B

@ -1,151 +1,123 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="763pt" height="188pt"
viewBox="0.00 0.00 762.55 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-184 758.55,-184 758.55,4 -4,4"/>
<!-- :core:data -->
<g id="node1" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="315.89" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="315.89" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :core:common -->
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="87.89" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="87.89" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge1" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M268.42,-160.03C190.25,-157.31 39.78,-147.01 6.89,-108 -3.42,-95.77 -0.72,-86.07 6.89,-72 14.54,-57.84 27.81,-46.86 41.41,-38.66"/>
<polygon fill="black" stroke="black" points="42.93,-41.82 49.97,-33.91 39.53,-35.7 42.93,-41.82"/>
</g>
<!-- :core:database -->
<g id="node3" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="543.89" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="543.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge2" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M352.02,-149.91C389.56,-138.38 448.68,-120.23 491.38,-107.12"/>
<polygon fill="red" stroke="red" stroke-width="2" points="490.71,-110.99 499.24,-104.71 488.65,-104.3 490.71,-110.99"/>
</g>
<!-- :core:datastore -->
<g id="node4" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="396.89" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="396.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge3" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M334.27,-145.12C344.61,-136.18 357.73,-124.85 369.28,-114.86"/>
<polygon fill="black" stroke="black" points="371.31,-117.73 376.59,-108.54 366.74,-112.43 371.31,-117.73"/>
</g>
<!-- :core:network -->
<g id="node5" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="77.89" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="77.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge4" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M279.22,-150.22C239.68,-138.58 176.33,-119.95 131.26,-106.7"/>
<polygon fill="black" stroke="black" points="132.26,-103.34 121.68,-103.88 130.28,-110.06 132.26,-103.34"/>
</g>
<!-- :core:analytics -->
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="689.89" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="689.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge5" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M358.9,-154.18C417.44,-144.73 525.39,-126.69 616.89,-108 621.48,-107.06 626.22,-106.05 630.98,-105.01"/>
<polygon fill="black" stroke="black" points="631.59,-108.46 640.59,-102.86 630.07,-101.63 631.59,-108.46"/>
</g>
<!-- :core:notifications -->
<g id="node7" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="235.89" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="235.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge6" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M297.74,-145.12C287.7,-136.33 275.01,-125.23 263.74,-115.37"/>
<polygon fill="black" stroke="black" points="266.06,-112.75 256.23,-108.79 261.45,-118.01 266.06,-112.75"/>
</g>
<!-- :core:model -->
<g id="node8" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="235.89" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="235.89" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge7" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M496.02,-77.7C487.65,-75.77 479.02,-73.8 470.89,-72 395.06,-55.19 375.45,-53.98 299.89,-36 296.08,-35.09 292.16,-34.13 288.21,-33.14"/>
<polygon fill="red" stroke="red" stroke-width="2" points="290.61,-30.14 280.06,-31.04 288.87,-36.92 290.61,-30.14"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge10" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M347.94,-77.72C339.58,-75.81 330.99,-73.84 322.89,-72 263.62,-58.51 195.9,-43.25 148.43,-32.58"/>
<polygon fill="black" stroke="black" points="149.42,-29.22 138.89,-30.44 147.88,-36.05 149.42,-29.22"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge9" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M363.14,-74.33C338.58,-63.65 305.15,-49.11 278.71,-37.62"/>
<polygon fill="black" stroke="black" points="280.18,-34.44 269.61,-33.66 277.39,-40.86 280.18,-34.44"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node9" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="396.89" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="396.89" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge8" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M396.89,-71.7C396.89,-64.41 396.89,-55.73 396.89,-47.54"/>
<polygon fill="black" stroke="black" points="400.39,-47.62 396.89,-37.62 393.39,-47.62 400.39,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge11" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M80.36,-71.7C81.42,-64.32 82.67,-55.52 83.85,-47.25"/>
<polygon fill="black" stroke="black" points="87.28,-48 85.23,-37.6 80.35,-47.01 87.28,-48"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge12" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M111.01,-74.33C135.11,-63.65 167.92,-49.11 193.87,-37.62"/>
<polygon fill="black" stroke="black" points="195.05,-40.92 202.78,-33.67 192.21,-34.52 195.05,-40.92"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge14" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M202.68,-73.29C181.17,-63.12 152.98,-49.79 129.92,-38.88"/>
<polygon fill="black" stroke="black" points="131.63,-35.82 121.09,-34.7 128.64,-42.14 131.63,-35.82"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge13" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M235.89,-71.7C235.89,-64.41 235.89,-55.73 235.89,-47.54"/>
<polygon fill="black" stroke="black" points="239.39,-47.62 235.89,-37.62 232.39,-47.62 239.39,-47.62"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="791pt" height="188pt" viewBox="0.00 0.00 791.30 188.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-184 787.3,-184 787.3,4 -4,4"/>
<g id="node1" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="327.95" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="327.95" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="91.95" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="91.95" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge1" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M278.66,-160.32C197.49,-158.04 41.21,-148.38 6.95,-108 -3.4,-95.8 -0.81,-85.99 6.95,-72 15.05,-57.42 29,-46.33 43.29,-38.16"/>
<polygon fill="black" stroke="black" points="44.61,-41.42 51.83,-33.66 41.35,-35.22 44.61,-41.42"/>
</g>
<g id="node3" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="563.95" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="563.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge2" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M365.35,-149.91C404.17,-138.39 465.29,-120.27 509.48,-107.16"/>
<polygon fill="red" stroke="red" stroke-width="2" points="508.83,-111 517.42,-104.8 506.84,-104.29 508.83,-111"/>
</g>
<g id="node4" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="411.95" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="411.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge3" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M347.02,-145.12C357.74,-136.18 371.34,-124.85 383.32,-114.86"/>
<polygon fill="black" stroke="black" points="385.49,-117.61 390.93,-108.52 381.01,-112.23 385.49,-117.61"/>
</g>
<g id="node5" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="80.95" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="80.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge4" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M289.9,-150.22C248.69,-138.53 182.56,-119.8 135.75,-106.53"/>
<polygon fill="black" stroke="black" points="136.92,-103.22 126.35,-103.86 135.01,-109.96 136.92,-103.22"/>
</g>
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="715.95" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="715.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge5" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M372.63,-154.09C433.15,-144.56 544.48,-126.47 638.95,-108 644.14,-106.99 649.51,-105.89 654.9,-104.76"/>
<polygon fill="black" stroke="black" points="655.38,-108.24 664.43,-102.73 653.92,-101.39 655.38,-108.24"/>
</g>
<g id="node7" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="244.95" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="244.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge6" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M309.12,-145.12C298.6,-136.24 285.28,-125.01 273.5,-115.08"/>
<polygon fill="black" stroke="black" points="275.93,-112.54 266.03,-108.77 271.42,-117.9 275.93,-112.54"/>
</g>
<g id="node8" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="244.95" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="244.95" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge7" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M514.77,-77.69C506.17,-75.76 497.31,-73.8 488.95,-72 410.47,-55.13 390.22,-53.88 311.95,-36 307.67,-35.02 303.24,-33.97 298.79,-32.9"/>
<polygon fill="red" stroke="red" stroke-width="2" points="301.26,-29.9 290.71,-30.91 299.59,-36.7 301.26,-29.9"/>
</g>
<g id="edge10" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M361.01,-77.73C352.32,-75.82 343.38,-73.85 334.95,-72 273.33,-58.48 202.89,-43.12 153.77,-32.44"/>
<polygon fill="black" stroke="black" points="154.69,-29.05 144.17,-30.35 153.2,-35.89 154.69,-29.05"/>
</g>
<g id="edge9" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M376.95,-74.33C351.28,-63.57 316.25,-48.89 288.73,-37.35"/>
<polygon fill="black" stroke="black" points="290.18,-34.16 279.61,-33.52 287.48,-40.62 290.18,-34.16"/>
</g>
<g id="node9" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="411.95" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="411.95" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge8" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M411.95,-71.7C411.95,-64.41 411.95,-55.73 411.95,-47.54"/>
<polygon fill="black" stroke="black" points="415.45,-47.62 411.95,-37.62 408.45,-47.62 415.45,-47.62"/>
</g>
<g id="edge11" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M83.67,-71.7C84.83,-64.32 86.22,-55.52 87.52,-47.25"/>
<polygon fill="black" stroke="black" points="90.94,-48.02 89.03,-37.6 84.02,-46.93 90.94,-48.02"/>
</g>
<g id="edge12" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M115.33,-74.33C140.46,-63.6 174.71,-48.98 201.7,-37.46"/>
<polygon fill="black" stroke="black" points="202.8,-40.8 210.63,-33.65 200.06,-34.36 202.8,-40.8"/>
</g>
<g id="edge14" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M210.62,-73.29C188.29,-63.07 158.98,-49.66 135.08,-38.73"/>
<polygon fill="black" stroke="black" points="136.79,-35.66 126.24,-34.69 133.88,-42.03 136.79,-35.66"/>
</g>
<g id="edge13" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M244.95,-71.7C244.95,-64.41 244.95,-55.73 244.95,-47.54"/>
<polygon fill="black" stroke="black" points="248.45,-47.62 244.95,-37.62 241.45,-47.62 248.45,-47.62"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

@ -1,163 +1,133 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="763pt" height="260pt"
viewBox="0.00 0.00 762.55 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 758.55,-256 758.55,4 -4,4"/>
<!-- :core:data&#45;test -->
<g id="node1" class="node">
<title>:core:data&#45;test</title>
<ellipse fill="none" stroke="black" cx="315.89" cy="-234" rx="63.12" ry="18"/>
<text text-anchor="middle" x="315.89" y="-228.95" font-family="Times,serif" font-size="14.00">:core:data&#45;test</text>
</g>
<!-- :core:data -->
<g id="node2" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="315.89" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="315.89" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :core:data&#45;test&#45;&gt;:core:data -->
<g id="edge1" class="edge">
<title>:core:data&#45;test&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M315.89,-215.7C315.89,-208.41 315.89,-199.73 315.89,-191.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="319.39,-193.13 315.89,-183.13 312.39,-193.13 319.39,-193.13"/>
</g>
<!-- :core:common -->
<g id="node3" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="87.89" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="87.89" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge2" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M268.42,-160.03C190.25,-157.31 39.78,-147.01 6.89,-108 -3.42,-95.77 -0.72,-86.07 6.89,-72 14.54,-57.84 27.81,-46.86 41.41,-38.66"/>
<polygon fill="black" stroke="black" points="42.93,-41.82 49.97,-33.91 39.53,-35.7 42.93,-41.82"/>
</g>
<!-- :core:database -->
<g id="node4" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="543.89" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="543.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge3" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M352.02,-149.91C389.56,-138.38 448.68,-120.23 491.38,-107.12"/>
<polygon fill="red" stroke="red" stroke-width="2" points="490.71,-110.99 499.24,-104.71 488.65,-104.3 490.71,-110.99"/>
</g>
<!-- :core:datastore -->
<g id="node5" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="396.89" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="396.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge4" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M334.27,-145.12C344.61,-136.18 357.73,-124.85 369.28,-114.86"/>
<polygon fill="black" stroke="black" points="371.31,-117.73 376.59,-108.54 366.74,-112.43 371.31,-117.73"/>
</g>
<!-- :core:network -->
<g id="node6" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="77.89" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="77.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge5" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M279.22,-150.22C239.68,-138.58 176.33,-119.95 131.26,-106.7"/>
<polygon fill="black" stroke="black" points="132.26,-103.34 121.68,-103.88 130.28,-110.06 132.26,-103.34"/>
</g>
<!-- :core:analytics -->
<g id="node7" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="689.89" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="689.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge6" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M358.9,-154.18C417.44,-144.73 525.39,-126.69 616.89,-108 621.48,-107.06 626.22,-106.05 630.98,-105.01"/>
<polygon fill="black" stroke="black" points="631.59,-108.46 640.59,-102.86 630.07,-101.63 631.59,-108.46"/>
</g>
<!-- :core:notifications -->
<g id="node8" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="235.89" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="235.89" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M297.74,-145.12C287.7,-136.33 275.01,-125.23 263.74,-115.37"/>
<polygon fill="black" stroke="black" points="266.06,-112.75 256.23,-108.79 261.45,-118.01 266.06,-112.75"/>
</g>
<!-- :core:model -->
<g id="node9" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="235.89" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="235.89" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge8" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M496.02,-77.7C487.65,-75.77 479.02,-73.8 470.89,-72 395.06,-55.19 375.45,-53.98 299.89,-36 296.08,-35.09 292.16,-34.13 288.21,-33.14"/>
<polygon fill="red" stroke="red" stroke-width="2" points="290.61,-30.14 280.06,-31.04 288.87,-36.92 290.61,-30.14"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge11" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M347.94,-77.72C339.58,-75.81 330.99,-73.84 322.89,-72 263.62,-58.51 195.9,-43.25 148.43,-32.58"/>
<polygon fill="black" stroke="black" points="149.42,-29.22 138.89,-30.44 147.88,-36.05 149.42,-29.22"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge10" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M363.14,-74.33C338.58,-63.65 305.15,-49.11 278.71,-37.62"/>
<polygon fill="black" stroke="black" points="280.18,-34.44 269.61,-33.66 277.39,-40.86 280.18,-34.44"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node10" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="396.89" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="396.89" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge9" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M396.89,-71.7C396.89,-64.41 396.89,-55.73 396.89,-47.54"/>
<polygon fill="black" stroke="black" points="400.39,-47.62 396.89,-37.62 393.39,-47.62 400.39,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge12" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M80.36,-71.7C81.42,-64.32 82.67,-55.52 83.85,-47.25"/>
<polygon fill="black" stroke="black" points="87.28,-48 85.23,-37.6 80.35,-47.01 87.28,-48"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge13" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M111.01,-74.33C135.11,-63.65 167.92,-49.11 193.87,-37.62"/>
<polygon fill="black" stroke="black" points="195.05,-40.92 202.78,-33.67 192.21,-34.52 195.05,-40.92"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge15" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M202.68,-73.29C181.17,-63.12 152.98,-49.79 129.92,-38.88"/>
<polygon fill="black" stroke="black" points="131.63,-35.82 121.09,-34.7 128.64,-42.14 131.63,-35.82"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge14" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M235.89,-71.7C235.89,-64.41 235.89,-55.73 235.89,-47.54"/>
<polygon fill="black" stroke="black" points="239.39,-47.62 235.89,-37.62 232.39,-47.62 239.39,-47.62"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="791pt" height="260pt" viewBox="0.00 0.00 791.30 260.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 787.3,-256 787.3,4 -4,4"/>
<g id="node1" class="node">
<title>:core:data-test</title>
<ellipse fill="none" stroke="black" cx="327.95" cy="-234" rx="65.73" ry="18"/>
<text text-anchor="middle" x="327.95" y="-229.8" font-family="Times,serif" font-size="14.00">:core:data-test</text>
</g>
<g id="node2" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="327.95" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="327.95" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge1" class="edge">
<title>:core:data-test-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M327.95,-215.7C327.95,-208.41 327.95,-199.73 327.95,-191.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="331.45,-193.13 327.95,-183.13 324.45,-193.13 331.45,-193.13"/>
</g>
<g id="node3" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="91.95" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="91.95" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge2" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M278.66,-160.32C197.49,-158.04 41.21,-148.38 6.95,-108 -3.4,-95.8 -0.81,-85.99 6.95,-72 15.05,-57.42 29,-46.33 43.29,-38.16"/>
<polygon fill="black" stroke="black" points="44.61,-41.42 51.83,-33.66 41.35,-35.22 44.61,-41.42"/>
</g>
<g id="node4" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="563.95" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="563.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge3" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M365.35,-149.91C404.17,-138.39 465.29,-120.27 509.48,-107.16"/>
<polygon fill="red" stroke="red" stroke-width="2" points="508.83,-111 517.42,-104.8 506.84,-104.29 508.83,-111"/>
</g>
<g id="node5" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="411.95" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="411.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge4" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M347.02,-145.12C357.74,-136.18 371.34,-124.85 383.32,-114.86"/>
<polygon fill="black" stroke="black" points="385.49,-117.61 390.93,-108.52 381.01,-112.23 385.49,-117.61"/>
</g>
<g id="node6" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="80.95" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="80.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge5" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M289.9,-150.22C248.69,-138.53 182.56,-119.8 135.75,-106.53"/>
<polygon fill="black" stroke="black" points="136.92,-103.22 126.35,-103.86 135.01,-109.96 136.92,-103.22"/>
</g>
<g id="node7" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="715.95" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="715.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge6" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M372.63,-154.09C433.15,-144.56 544.48,-126.47 638.95,-108 644.14,-106.99 649.51,-105.89 654.9,-104.76"/>
<polygon fill="black" stroke="black" points="655.38,-108.24 664.43,-102.73 653.92,-101.39 655.38,-108.24"/>
</g>
<g id="node8" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="244.95" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="244.95" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M309.12,-145.12C298.6,-136.24 285.28,-125.01 273.5,-115.08"/>
<polygon fill="black" stroke="black" points="275.93,-112.54 266.03,-108.77 271.42,-117.9 275.93,-112.54"/>
</g>
<g id="node9" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="244.95" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="244.95" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge8" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M514.77,-77.69C506.17,-75.76 497.31,-73.8 488.95,-72 410.47,-55.13 390.22,-53.88 311.95,-36 307.67,-35.02 303.24,-33.97 298.79,-32.9"/>
<polygon fill="red" stroke="red" stroke-width="2" points="301.26,-29.9 290.71,-30.91 299.59,-36.7 301.26,-29.9"/>
</g>
<g id="edge11" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M361.01,-77.73C352.32,-75.82 343.38,-73.85 334.95,-72 273.33,-58.48 202.89,-43.12 153.77,-32.44"/>
<polygon fill="black" stroke="black" points="154.69,-29.05 144.17,-30.35 153.2,-35.89 154.69,-29.05"/>
</g>
<g id="edge10" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M376.95,-74.33C351.28,-63.57 316.25,-48.89 288.73,-37.35"/>
<polygon fill="black" stroke="black" points="290.18,-34.16 279.61,-33.52 287.48,-40.62 290.18,-34.16"/>
</g>
<g id="node10" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="411.95" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="411.95" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge9" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M411.95,-71.7C411.95,-64.41 411.95,-55.73 411.95,-47.54"/>
<polygon fill="black" stroke="black" points="415.45,-47.62 411.95,-37.62 408.45,-47.62 415.45,-47.62"/>
</g>
<g id="edge12" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M83.67,-71.7C84.83,-64.32 86.22,-55.52 87.52,-47.25"/>
<polygon fill="black" stroke="black" points="90.94,-48.02 89.03,-37.6 84.02,-46.93 90.94,-48.02"/>
</g>
<g id="edge13" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M115.33,-74.33C140.46,-63.6 174.71,-48.98 201.7,-37.46"/>
<polygon fill="black" stroke="black" points="202.8,-40.8 210.63,-33.65 200.06,-34.36 202.8,-40.8"/>
</g>
<g id="edge15" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M210.62,-73.29C188.29,-63.07 158.98,-49.66 135.08,-38.73"/>
<polygon fill="black" stroke="black" points="136.79,-35.66 126.24,-34.69 133.88,-42.03 136.79,-35.66"/>
</g>
<g id="edge14" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M244.95,-71.7C244.95,-64.41 244.95,-55.73 244.95,-47.54"/>
<polygon fill="black" stroke="black" points="248.45,-47.62 244.95,-37.62 241.45,-47.62 248.45,-47.62"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

@ -1,31 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="135pt" height="116pt"
viewBox="0.00 0.00 135.27 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 131.27,-112 131.27,4 -4,4"/>
<!-- :core:database -->
<g id="node1" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="63.63" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="63.63" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:model -->
<g id="node2" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="63.63" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="63.63" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge1" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M63.63,-71.7C63.63,-64.41 63.63,-55.73 63.63,-47.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="67.13,-49.13 63.63,-39.13 60.13,-49.13 67.13,-49.13"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="141pt" height="116pt" viewBox="0.00 0.00 140.52 116.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 136.52,-112 136.52,4 -4,4"/>
<g id="node1" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="66.26" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="66.26" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="node2" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="66.26" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="66.26" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge1" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M66.26,-71.7C66.26,-64.41 66.26,-55.73 66.26,-47.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="69.76,-49.13 66.26,-39.13 62.76,-49.13 69.76,-49.13"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -1,55 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="461pt" height="116pt"
viewBox="0.00 0.00 460.86 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 456.86,-112 456.86,4 -4,4"/>
<!-- :core:datastore -->
<g id="node1" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="248.69" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="248.69" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node2" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="87.69" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="87.69" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge1" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="red" stroke-width="2" d="M214.94,-74.33C191.52,-64.14 160.02,-50.45 134.22,-39.23"/>
<polygon fill="red" stroke="red" stroke-width="2" points="137.26,-36.73 126.69,-35.96 134.47,-43.15 137.26,-36.73"/>
</g>
<!-- :core:model -->
<g id="node3" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="248.69" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="248.69" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge2" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M248.69,-71.7C248.69,-64.41 248.69,-55.73 248.69,-47.54"/>
<polygon fill="black" stroke="black" points="252.19,-47.62 248.69,-37.62 245.19,-47.62 252.19,-47.62"/>
</g>
<!-- :core:common -->
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="387.69" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="387.69" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge3" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M279.19,-73.64C299.11,-63.61 325.34,-50.4 347.03,-39.48"/>
<polygon fill="black" stroke="black" points="348.55,-42.63 355.91,-35.01 345.4,-36.38 348.55,-42.63"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="475pt" height="116pt" viewBox="0.00 0.00 475.29 116.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 471.29,-112 471.29,4 -4,4"/>
<g id="node1" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="258.47" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="258.47" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="node2" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="91.47" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="91.47" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge1" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="red" stroke-width="2" d="M223.47,-74.33C199.06,-64.1 166.21,-50.32 139.38,-39.08"/>
<polygon fill="red" stroke="red" stroke-width="2" points="142.42,-36.56 131.84,-35.92 139.71,-43.01 142.42,-36.56"/>
</g>
<g id="node3" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="258.47" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="258.47" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge2" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M258.47,-71.7C258.47,-64.41 258.47,-55.73 258.47,-47.54"/>
<polygon fill="black" stroke="black" points="261.97,-47.62 258.47,-37.62 254.97,-47.62 261.97,-47.62"/>
</g>
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="400.47" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="400.47" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge3" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M289.64,-73.64C310.08,-63.56 337.03,-50.28 359.24,-39.33"/>
<polygon fill="black" stroke="black" points="360.61,-42.56 368.03,-35 357.51,-36.28 360.61,-42.56"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -1,19 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="183pt" height="44pt"
viewBox="0.00 0.00 183.38 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 179.38,-40 179.38,4 -4,4"/>
<!-- :core:datastore&#45;proto -->
<g id="node1" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="87.69" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="87.69" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="191pt" height="44pt" viewBox="0.00 0.00 190.95 44.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 186.95,-40 186.95,4 -4,4"/>
<g id="node1" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="91.47" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="91.47" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 893 B

After

Width:  |  Height:  |  Size: 796 B

@ -1,73 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="461pt" height="188pt"
viewBox="0.00 0.00 460.62 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-184 456.62,-184 456.62,4 -4,4"/>
<!-- :core:datastore&#45;test -->
<g id="node1" class="node">
<title>:core:datastore&#45;test</title>
<ellipse fill="none" stroke="black" cx="150.17" cy="-162" rx="81.04" ry="18"/>
<text text-anchor="middle" x="150.17" y="-156.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;test</text>
</g>
<!-- :core:common -->
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="65.17" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="65.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:datastore&#45;test&#45;&gt;:core:common -->
<g id="edge1" class="edge">
<title>:core:datastore&#45;test&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M139.92,-143.87C125.37,-119.56 98.58,-74.82 81.34,-46.01"/>
<polygon fill="black" stroke="black" points="84.38,-44.27 76.24,-37.49 78.37,-47.87 84.38,-44.27"/>
</g>
<!-- :core:datastore -->
<g id="node3" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="216.17" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="216.17" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:datastore&#45;test&#45;&gt;:core:datastore -->
<g id="edge2" class="edge">
<title>:core:datastore&#45;test&#45;&gt;:core:datastore</title>
<path fill="none" stroke="red" stroke-width="2" d="M166.15,-144.05C174.09,-135.63 183.85,-125.28 192.63,-115.97"/>
<polygon fill="red" stroke="red" stroke-width="2" points="193.95,-119.67 198.26,-109.99 188.86,-114.87 193.95,-119.67"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge5" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M183.78,-73.98C161.58,-63.7 131.92,-49.94 107.81,-38.77"/>
<polygon fill="black" stroke="black" points="109.43,-35.66 98.88,-34.63 106.48,-42.01 109.43,-35.66"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node4" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="236.17" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="236.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge3" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="red" stroke-width="2" d="M221.11,-71.7C223.25,-64.24 225.79,-55.32 228.18,-46.97"/>
<polygon fill="red" stroke="red" stroke-width="2" points="231.07,-49.59 230.45,-39.01 224.34,-47.67 231.07,-49.59"/>
</g>
<!-- :core:model -->
<g id="node5" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="397.17" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="397.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge4" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M252.8,-74.83C281.44,-63.76 321.41,-48.3 352.03,-36.46"/>
<polygon fill="black" stroke="black" points="352.96,-39.85 361.03,-32.98 350.44,-33.32 352.96,-39.85"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="475pt" height="188pt" viewBox="0.00 0.00 474.97 188.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-184 470.97,-184 470.97,4 -4,4"/>
<g id="node1" class="node">
<title>:core:datastore-test</title>
<ellipse fill="none" stroke="black" cx="154.81" cy="-162" rx="84.5" ry="18"/>
<text text-anchor="middle" x="154.81" y="-157.8" font-family="Times,serif" font-size="14.00">:core:datastore-test</text>
</g>
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="66.81" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="66.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge1" class="edge">
<title>:core:datastore-test-&gt;:core:common</title>
<path fill="none" stroke="black" d="M144.2,-143.87C129.07,-119.46 101.16,-74.43 83.32,-45.64"/>
<polygon fill="black" stroke="black" points="86.51,-44.13 78.26,-37.48 80.56,-47.82 86.51,-44.13"/>
</g>
<g id="node3" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="222.81" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="222.81" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge2" class="edge">
<title>:core:datastore-test-&gt;:core:datastore</title>
<path fill="none" stroke="red" stroke-width="2" d="M171.27,-144.05C179.46,-135.63 189.51,-125.28 198.56,-115.97"/>
<polygon fill="red" stroke="red" stroke-width="2" points="199.94,-119.57 204.4,-109.96 194.92,-114.69 199.94,-119.57"/>
</g>
<g id="edge5" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M189.35,-73.98C166.32,-63.65 135.5,-49.82 110.53,-38.61"/>
<polygon fill="black" stroke="black" points="112.16,-35.51 101.61,-34.61 109.3,-41.9 112.16,-35.51"/>
</g>
<g id="node4" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="242.81" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="242.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge3" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="red" stroke-width="2" d="M227.76,-71.7C229.89,-64.24 232.44,-55.32 234.82,-46.97"/>
<polygon fill="red" stroke="red" stroke-width="2" points="237.71,-49.59 237.1,-39.01 230.98,-47.67 237.71,-49.59"/>
</g>
<g id="node5" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="409.81" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="409.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge4" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M260.66,-74.83C290.25,-63.76 331.54,-48.3 363.18,-36.46"/>
<polygon fill="black" stroke="black" points="364.38,-39.75 372.51,-32.96 361.92,-33.19 364.38,-39.75"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -1,19 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="172pt" height="44pt"
viewBox="0.00 0.00 172.12 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 168.12,-40 168.12,4 -4,4"/>
<!-- :core:designsystem -->
<g id="node1" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-18" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="178pt" height="44pt" viewBox="0.00 0.00 178.11 44.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 174.11,-40 174.11,4 -4,4"/>
<g id="node1" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-18" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 872 B

After

Width:  |  Height:  |  Size: 790 B

@ -1,169 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="829pt" height="260pt"
viewBox="0.00 0.00 829.46 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 825.46,-256 825.46,4 -4,4"/>
<!-- :core:domain -->
<g id="node1" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="623.69" cy="-234" rx="60.05" ry="18"/>
<text text-anchor="middle" x="623.69" y="-228.95" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<!-- :core:data -->
<g id="node2" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="418.69" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="418.69" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :core:domain&#45;&gt;:core:data -->
<g id="edge1" class="edge">
<title>:core:domain&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M585.13,-219.83C550.65,-208.06 500.11,-190.8 463.77,-178.39"/>
<polygon fill="red" stroke="red" stroke-width="2" points="466.45,-175.61 455.85,-175.69 464.18,-182.23 466.45,-175.61"/>
</g>
<!-- :core:model -->
<g id="node3" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="576.69" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="576.69" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:domain&#45;&gt;:core:model -->
<g id="edge2" class="edge">
<title>:core:domain&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M662.34,-219.86C730.64,-194.61 860.84,-136.09 809.69,-72 788.92,-45.98 702.6,-31.75 641.09,-24.76"/>
<polygon fill="black" stroke="black" points="641.74,-21.31 631.42,-23.7 640.98,-28.27 641.74,-21.31"/>
</g>
<!-- :core:common -->
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="338.69" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="338.69" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge3" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M373.15,-156.52C315.42,-149.79 220.86,-134.9 199.69,-108 189.8,-95.43 190.61,-85.18 199.69,-72 215.46,-49.11 242.54,-36.1 268.63,-28.71"/>
<polygon fill="black" stroke="black" points="269.43,-32.11 278.25,-26.24 267.69,-25.33 269.43,-32.11"/>
</g>
<!-- :core:database -->
<g id="node5" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="736.69" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="736.69" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge4" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M459.48,-152.38C508.14,-142.05 591.93,-124.12 663.69,-108 668.26,-106.97 672.99,-105.9 677.74,-104.81"/>
<polygon fill="red" stroke="red" stroke-width="2" points="676.9,-108.6 685.86,-102.94 675.33,-101.78 676.9,-108.6"/>
</g>
<!-- :core:datastore -->
<g id="node6" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="87.69" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="87.69" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge5" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M378.09,-152.52C328.27,-142.11 241.25,-123.86 166.69,-108 160.86,-106.76 154.79,-105.46 148.71,-104.16"/>
<polygon fill="black" stroke="black" points="149.82,-100.82 139.31,-102.14 148.36,-107.66 149.82,-100.82"/>
</g>
<!-- :core:network -->
<g id="node7" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="418.69" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="418.69" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge6" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M418.69,-143.7C418.69,-136.41 418.69,-127.73 418.69,-119.54"/>
<polygon fill="black" stroke="black" points="422.19,-119.62 418.69,-109.62 415.19,-119.62 422.19,-119.62"/>
</g>
<!-- :core:analytics -->
<g id="node8" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="273.69" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="273.69" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M390.39,-147.34C368.99,-137.01 339.3,-122.67 315.21,-111.05"/>
<polygon fill="black" stroke="black" points="316.83,-107.94 306.3,-106.74 313.78,-114.24 316.83,-107.94"/>
</g>
<!-- :core:notifications -->
<g id="node9" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="576.69" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="576.69" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M448.78,-147.67C472.18,-137.3 505.01,-122.76 531.55,-111"/>
<polygon fill="black" stroke="black" points="532.64,-114.34 540.37,-107.09 529.81,-107.94 532.64,-114.34"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge9" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M703.15,-74.33C678.75,-63.65 645.52,-49.11 619.24,-37.62"/>
<polygon fill="red" stroke="red" stroke-width="2" points="622.16,-35.07 611.6,-34.27 619.35,-41.49 622.16,-35.07"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge11" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M143.5,-80.41C161.44,-77.68 181.4,-74.67 199.69,-72 310.88,-55.75 440.67,-37.7 515.31,-27.42"/>
<polygon fill="black" stroke="black" points="515.43,-30.94 524.86,-26.1 514.47,-24 515.43,-30.94"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge12" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M132.27,-76.57C174.44,-64.81 237.85,-47.12 283.26,-34.46"/>
<polygon fill="black" stroke="black" points="283.95,-37.9 292.64,-31.84 282.07,-31.16 283.95,-37.9"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node10" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="87.69" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="87.69" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge10" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M87.69,-71.7C87.69,-64.41 87.69,-55.73 87.69,-47.54"/>
<polygon fill="black" stroke="black" points="91.19,-47.62 87.69,-37.62 84.19,-47.62 91.19,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge14" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M451.81,-74.33C475.91,-63.65 508.72,-49.11 534.67,-37.62"/>
<polygon fill="black" stroke="black" points="535.85,-40.92 543.58,-33.67 533.01,-34.52 535.85,-40.92"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge13" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M399.73,-72.41C389.67,-63.61 377.12,-52.63 366.03,-42.92"/>
<polygon fill="black" stroke="black" points="368.48,-40.42 358.65,-36.47 363.87,-45.69 368.48,-40.42"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge15" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M576.69,-71.7C576.69,-64.41 576.69,-55.73 576.69,-47.54"/>
<polygon fill="black" stroke="black" points="580.19,-47.62 576.69,-37.62 573.19,-47.62 580.19,-47.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge16" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M529.95,-75.25C490.64,-63.69 434.4,-47.15 393.08,-35"/>
<polygon fill="black" stroke="black" points="394.15,-31.66 383.56,-32.2 392.17,-38.38 394.15,-31.66"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="857pt" height="260pt" viewBox="0.00 0.00 857.47 260.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 853.47,-256 853.47,4 -4,4"/>
<g id="node1" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="644.47" cy="-234" rx="61.99" ry="18"/>
<text text-anchor="middle" x="644.47" y="-229.8" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<g id="node2" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="432.47" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="432.47" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge1" class="edge">
<title>:core:domain-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M604.6,-219.83C568.79,-208.01 516.22,-190.65 478.61,-178.23"/>
<polygon fill="red" stroke="red" stroke-width="2" points="481.41,-175.47 470.82,-175.66 479.22,-182.12 481.41,-175.47"/>
</g>
<g id="node3" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="596.47" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="596.47" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge2" class="edge">
<title>:core:domain-&gt;:core:model</title>
<path fill="none" stroke="black" d="M684.75,-219.99C755.51,-195.06 889.9,-137.21 837.47,-72 815.89,-45.15 726.29,-31.12 662.67,-24.39"/>
<polygon fill="black" stroke="black" points="663.32,-20.94 653.01,-23.41 662.61,-27.91 663.32,-20.94"/>
</g>
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="350.47" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="350.47" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge3" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M384.98,-156.68C325.39,-150.17 228.32,-135.56 206.47,-108 196.54,-95.46 197.32,-85.12 206.47,-72 222.88,-48.48 250.96,-35.36 277.99,-28.07"/>
<polygon fill="black" stroke="black" points="278.71,-31.49 287.6,-25.73 277.05,-24.69 278.71,-31.49"/>
</g>
<g id="node5" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="762.47" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="762.47" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge4" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M474.76,-152.37C525.2,-142.03 612.06,-124.08 686.47,-108 691.36,-106.94 696.43,-105.84 701.51,-104.72"/>
<polygon fill="red" stroke="red" stroke-width="2" points="700.66,-108.49 709.67,-102.91 699.15,-101.66 700.66,-108.49"/>
</g>
<g id="node6" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="91.47" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="91.47" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge5" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M390.3,-152.4C339.03,-141.95 249.9,-123.74 173.47,-108 167.27,-106.72 160.81,-105.39 154.34,-104.05"/>
<polygon fill="black" stroke="black" points="155.51,-100.72 145.01,-102.12 154.09,-107.57 155.51,-100.72"/>
</g>
<g id="node7" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="432.47" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="432.47" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge6" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M432.47,-143.7C432.47,-136.41 432.47,-127.73 432.47,-119.54"/>
<polygon fill="black" stroke="black" points="435.97,-119.62 432.47,-109.62 428.97,-119.62 435.97,-119.62"/>
</g>
<g id="node8" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="282.47" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="282.47" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M402.84,-147.17C380.65,-136.82 349.98,-122.5 325.15,-110.91"/>
<polygon fill="black" stroke="black" points="326.82,-107.83 316.28,-106.78 323.86,-114.18 326.82,-107.83"/>
</g>
<g id="node9" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="596.47" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="596.47" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M463.71,-147.67C487.99,-137.3 522.07,-122.76 549.62,-111"/>
<polygon fill="black" stroke="black" points="551,-114.22 558.82,-107.07 548.25,-107.78 551,-114.22"/>
</g>
<g id="edge9" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M727.68,-74.33C702.25,-63.6 667.58,-48.98 640.26,-37.46"/>
<polygon fill="red" stroke="red" stroke-width="2" points="643.18,-34.89 632.6,-34.23 640.46,-41.34 643.18,-34.89"/>
</g>
<g id="edge11" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M149.37,-80.31C167.63,-77.6 187.89,-74.64 206.47,-72 321.74,-55.65 456.32,-37.59 533.45,-27.33"/>
<polygon fill="black" stroke="black" points="533.45,-30.86 542.9,-26.08 532.53,-23.93 533.45,-30.86"/>
</g>
<g id="edge12" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M137.78,-76.49C181.42,-64.69 246.93,-46.99 293.7,-34.34"/>
<polygon fill="black" stroke="black" points="294.37,-37.79 303.11,-31.8 292.54,-31.03 294.37,-37.79"/>
</g>
<g id="node10" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="91.47" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="91.47" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge10" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M91.47,-71.7C91.47,-64.41 91.47,-55.73 91.47,-47.54"/>
<polygon fill="black" stroke="black" points="94.97,-47.62 91.47,-37.62 87.97,-47.62 94.97,-47.62"/>
</g>
<g id="edge14" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M466.85,-74.33C491.98,-63.6 526.23,-48.98 553.22,-37.46"/>
<polygon fill="black" stroke="black" points="554.32,-40.8 562.15,-33.65 551.58,-34.36 554.32,-40.8"/>
</g>
<g id="edge13" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M413.04,-72.41C402.73,-63.61 389.87,-52.63 378.49,-42.92"/>
<polygon fill="black" stroke="black" points="380.8,-40.28 370.92,-36.45 376.25,-45.61 380.8,-40.28"/>
</g>
<g id="edge15" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M596.47,-71.7C596.47,-64.41 596.47,-55.73 596.47,-47.54"/>
<polygon fill="black" stroke="black" points="599.97,-47.62 596.47,-37.62 592.97,-47.62 599.97,-47.62"/>
</g>
<g id="edge16" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M547.87,-75.17C507.13,-63.58 448.93,-47.02 406.29,-34.88"/>
<polygon fill="black" stroke="black" points="407.28,-31.53 396.7,-32.15 405.36,-38.26 407.28,-31.53"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

@ -1,19 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="119pt" height="44pt"
viewBox="0.00 0.00 118.89 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 114.89,-40 114.89,4 -4,4"/>
<!-- :core:model -->
<g id="node1" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="55.45" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="55.45" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="122pt" height="44pt" viewBox="0.00 0.00 122.31 44.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 118.31,-40 118.31,4 -4,4"/>
<g id="node1" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="57.16" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="57.16" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 851 B

After

Width:  |  Height:  |  Size: 776 B

@ -1,43 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="268pt" height="116pt"
viewBox="0.00 0.00 267.62 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 263.62,-112 263.62,4 -4,4"/>
<!-- :core:network -->
<g id="node1" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="134.17" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="134.17" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:common -->
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="65.17" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="65.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge1" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="red" stroke-width="2" d="M117.82,-72.41C109.31,-63.78 98.75,-53.06 89.32,-43.5"/>
<polygon fill="red" stroke="red" stroke-width="2" points="93.04,-42.29 83.53,-37.63 88.06,-47.2 93.04,-42.29"/>
</g>
<!-- :core:model -->
<g id="node3" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="204.17" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="204.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge2" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M150.76,-72.41C159.39,-63.78 170.11,-53.06 179.67,-43.5"/>
<polygon fill="black" stroke="black" points="182.03,-46.09 186.63,-36.54 177.08,-41.14 182.03,-46.09"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="274pt" height="116pt" viewBox="0.00 0.00 273.97 116.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 269.97,-112 269.97,4 -4,4"/>
<g id="node1" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="137.81" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="137.81" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="66.81" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="66.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge1" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="red" stroke-width="2" d="M120.99,-72.41C112.23,-63.78 101.36,-53.06 91.66,-43.5"/>
<polygon fill="red" stroke="red" stroke-width="2" points="95.25,-42.12 85.67,-37.6 90.34,-47.11 95.25,-42.12"/>
</g>
<g id="node3" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="208.81" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="208.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge2" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M154.64,-72.41C163.39,-63.78 174.27,-53.06 183.97,-43.5"/>
<polygon fill="black" stroke="black" points="186.37,-46.05 191.03,-36.53 181.45,-41.06 186.37,-46.05"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -1,43 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="268pt" height="116pt"
viewBox="0.00 0.00 267.62 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 263.62,-112 263.62,4 -4,4"/>
<!-- :core:notifications -->
<g id="node1" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="124.45" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="124.45" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:model -->
<g id="node2" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="55.45" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="55.45" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge1" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M107.74,-72.05C99.23,-63.42 88.72,-52.76 79.37,-43.27"/>
<polygon fill="red" stroke="red" stroke-width="2" points="83.16,-42.13 73.64,-37.46 78.17,-47.04 83.16,-42.13"/>
</g>
<!-- :core:common -->
<g id="node3" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="194.45" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="194.45" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge2" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M141.39,-72.05C149.9,-63.54 160.38,-53.07 169.76,-43.68"/>
<polygon fill="black" stroke="black" points="171.99,-46.41 176.59,-36.86 167.04,-41.46 171.99,-46.41"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="274pt" height="116pt" viewBox="0.00 0.00 273.97 116.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 269.97,-112 269.97,4 -4,4"/>
<g id="node1" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="128.16" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="128.16" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="node2" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="57.16" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="57.16" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge1" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M110.97,-72.05C102.21,-63.42 91.4,-52.76 81.77,-43.27"/>
<polygon fill="red" stroke="red" stroke-width="2" points="85.43,-41.96 75.85,-37.43 80.52,-46.95 85.43,-41.96"/>
</g>
<g id="node3" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="199.16" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="199.16" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge2" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M145.34,-72.05C153.98,-63.54 164.6,-53.07 174.12,-43.68"/>
<polygon fill="black" stroke="black" points="176.39,-46.36 181.05,-36.85 171.47,-41.38 176.39,-46.36"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -1,43 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="320pt" height="116pt"
viewBox="0.00 0.00 320.23 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 316.23,-112 316.23,4 -4,4"/>
<!-- :core:screenshot&#45;testing -->
<g id="node1" class="node">
<title>:core:screenshot&#45;testing</title>
<ellipse fill="none" stroke="black" cx="147.17" cy="-90" rx="98.44" ry="18"/>
<text text-anchor="middle" x="147.17" y="-84.95" font-family="Times,serif" font-size="14.00">:core:screenshot&#45;testing</text>
</g>
<!-- :core:common -->
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="65.17" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="65.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:screenshot&#45;testing&#45;&gt;:core:common -->
<g id="edge1" class="edge">
<title>:core:screenshot&#45;testing&#45;&gt;:core:common</title>
<path fill="none" stroke="red" stroke-width="2" d="M127.32,-72.05C117.07,-63.31 104.4,-52.49 93.17,-42.9"/>
<polygon fill="red" stroke="red" stroke-width="2" points="96.73,-41.34 86.86,-37.51 92.19,-46.67 96.73,-41.34"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="230.17" cy="-18" rx="82.06" ry="18"/>
<text text-anchor="middle" x="230.17" y="-12.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :core:screenshot&#45;testing&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:core:screenshot&#45;testing&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M167.26,-72.05C177.56,-63.37 190.28,-52.64 201.58,-43.11"/>
<polygon fill="black" stroke="black" points="203.72,-45.89 209.11,-36.76 199.21,-40.54 203.72,-45.89"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="330pt" height="116pt" viewBox="0.00 0.00 329.87 116.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 325.87,-112 325.87,4 -4,4"/>
<g id="node1" class="node">
<title>:core:screenshot-testing</title>
<ellipse fill="none" stroke="black" cx="151.81" cy="-90" rx="102.74" ry="18"/>
<text text-anchor="middle" x="151.81" y="-85.8" font-family="Times,serif" font-size="14.00">:core:screenshot-testing</text>
</g>
<g id="node2" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="66.81" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="66.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge1" class="edge">
<title>:core:screenshot-testing-&gt;:core:common</title>
<path fill="none" stroke="red" stroke-width="2" d="M131.24,-72.05C120.51,-63.22 107.22,-52.27 95.49,-42.62"/>
<polygon fill="red" stroke="red" stroke-width="2" points="99.19,-41.13 89.24,-37.47 94.74,-46.53 99.19,-41.13"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="236.81" cy="-18" rx="85.06" ry="18"/>
<text text-anchor="middle" x="236.81" y="-13.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:core:screenshot-testing-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M172.39,-72.05C183.04,-63.28 196.22,-52.43 207.88,-42.83"/>
<polygon fill="black" stroke="black" points="209.76,-45.81 215.26,-36.75 205.31,-40.41 209.76,-45.81"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -1,199 +1,163 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1055pt" height="260pt"
viewBox="0.00 0.00 1054.70 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1050.7,-256 1050.7,4 -4,4"/>
<!-- :core:testing -->
<g id="node1" class="node">
<title>:core:testing</title>
<ellipse fill="none" stroke="black" cx="650.64" cy="-234" rx="56.47" ry="18"/>
<text text-anchor="middle" x="650.64" y="-228.95" font-family="Times,serif" font-size="14.00">:core:testing</text>
</g>
<!-- :core:analytics -->
<g id="node2" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="114.64" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="114.64" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:testing&#45;&gt;:core:analytics -->
<g id="edge1" class="edge">
<title>:core:testing&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M608.13,-221.74C512.24,-196.33 279.05,-134.56 171.14,-105.97"/>
<polygon fill="black" stroke="black" points="172.19,-102.63 161.63,-103.45 170.4,-109.39 172.19,-102.63"/>
</g>
<!-- :core:data -->
<g id="node3" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="552.64" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="552.64" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :core:testing&#45;&gt;:core:data -->
<g id="edge2" class="edge">
<title>:core:testing&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M628.4,-217.12C615.06,-207.59 597.9,-195.33 583.29,-184.89"/>
<polygon fill="red" stroke="red" stroke-width="2" points="586.75,-183.06 576.58,-180.1 582.68,-188.76 586.75,-183.06"/>
</g>
<!-- :core:model -->
<g id="node4" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="455.64" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="455.64" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:testing&#45;&gt;:core:model -->
<g id="edge3" class="edge">
<title>:core:testing&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M594.71,-230.48C457.07,-222.97 108.18,-195.5 40.64,-108 -29.97,-16.52 -58.46,-118.33 391.64,-36 395.73,-35.25 399.93,-34.38 404.15,-33.43"/>
<polygon fill="black" stroke="black" points="404.85,-36.86 413.76,-31.12 403.22,-30.05 404.85,-36.86"/>
</g>
<!-- :core:notifications -->
<g id="node5" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="748.64" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="748.64" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:testing&#45;&gt;:core:notifications -->
<g id="edge4" class="edge">
<title>:core:testing&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M662.27,-216.15C679.12,-191.73 710.5,-146.26 730.44,-117.38"/>
<polygon fill="black" stroke="black" points="733.06,-119.73 735.86,-109.51 727.3,-115.76 733.06,-119.73"/>
</g>
<!-- :core:common -->
<g id="node6" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="642.64" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="642.64" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:testing&#45;&gt;:core:common -->
<g id="edge5" class="edge">
<title>:core:testing&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M688.31,-220.23C755.69,-195.37 885.33,-137.18 835.64,-72 820.35,-51.94 760.32,-37.59 711.22,-28.92"/>
<polygon fill="black" stroke="black" points="711.91,-25.49 701.47,-27.25 710.73,-32.39 711.91,-25.49"/>
</g>
<!-- :core:designsystem -->
<g id="node7" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="964.64" cy="-162" rx="82.06" ry="18"/>
<text text-anchor="middle" x="964.64" y="-156.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :core:testing&#45;&gt;:core:designsystem -->
<g id="edge6" class="edge">
<title>:core:testing&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M695.96,-222.9C748.81,-211.12 836.64,-191.53 897.43,-177.98"/>
<polygon fill="black" stroke="black" points="897.97,-181.45 906.97,-175.86 896.45,-174.62 897.97,-181.45"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge11" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M507.77,-155.73C438.7,-147.33 302.32,-129.64 187.64,-108 182.84,-107.09 177.87,-106.09 172.89,-105.03"/>
<polygon fill="black" stroke="black" points="174.03,-101.69 163.51,-102.97 172.53,-108.53 174.03,-101.69"/>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge12" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M586.33,-148.97C616.79,-138.09 662.07,-121.92 697.07,-109.42"/>
<polygon fill="black" stroke="black" points="697.91,-112.83 706.15,-106.17 695.56,-106.24 697.91,-112.83"/>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M580.17,-146.93C595.27,-137.83 613.02,-124.58 623.64,-108 635.18,-90 639.83,-66.15 641.65,-47.67"/>
<polygon fill="black" stroke="black" points="645.12,-48.16 642.37,-37.93 638.14,-47.65 645.12,-48.16"/>
</g>
<!-- :core:database -->
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="260.64" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="260.64" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M513.26,-151.56C463.35,-139.59 376.88,-118.87 319.22,-105.04"/>
<polygon fill="red" stroke="red" stroke-width="2" points="321.57,-102.01 311.03,-103.08 319.94,-108.81 321.57,-102.01"/>
</g>
<!-- :core:datastore -->
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="407.64" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="407.64" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge9" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M524.34,-147.34C503.02,-137.04 473.45,-122.77 449.41,-111.16"/>
<polygon fill="black" stroke="black" points="451.03,-108.06 440.51,-106.87 447.99,-114.37 451.03,-108.06"/>
</g>
<!-- :core:network -->
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="552.64" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="552.64" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge10" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M552.64,-143.7C552.64,-136.41 552.64,-127.73 552.64,-119.54"/>
<polygon fill="black" stroke="black" points="556.14,-119.62 552.64,-109.62 549.14,-119.62 556.14,-119.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge19" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M695.92,-76.4C643.47,-63.87 563.35,-44.73 510.25,-32.05"/>
<polygon fill="black" stroke="black" points="511.36,-28.71 500.82,-29.79 509.73,-35.52 511.36,-28.71"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge20" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M723.79,-72.59C709.6,-63.22 691.62,-51.34 676.19,-41.16"/>
<polygon fill="black" stroke="black" points="678.51,-38.49 668.24,-35.9 674.65,-44.33 678.51,-38.49"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge13" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M298.7,-75.34C330.21,-64.03 375.1,-47.91 408.81,-35.81"/>
<polygon fill="red" stroke="red" stroke-width="2" points="408.25,-39.73 416.48,-33.06 405.88,-33.14 408.25,-39.73"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge15" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M419.26,-72.05C424.8,-63.97 431.56,-54.12 437.74,-45.11"/>
<polygon fill="black" stroke="black" points="440.5,-47.26 443.27,-37.04 434.73,-43.31 440.5,-47.26"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge16" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M450.74,-76.16C489.55,-64.6 546.73,-47.57 588.59,-35.1"/>
<polygon fill="black" stroke="black" points="589.38,-38.52 597.96,-32.31 587.38,-31.81 589.38,-38.52"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node11" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="294.64" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="294.64" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge14" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M382,-73.12C366.87,-63.74 347.47,-51.73 330.81,-41.4"/>
<polygon fill="black" stroke="black" points="332.99,-38.64 322.65,-36.35 329.3,-44.59 332.99,-38.64"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge18" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M530.14,-72.76C517.32,-63.51 501.05,-51.77 486.99,-41.63"/>
<polygon fill="black" stroke="black" points="489.07,-38.81 478.91,-35.79 484.97,-44.48 489.07,-38.81"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge17" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M573.52,-72.76C585.13,-63.73 599.79,-52.33 612.62,-42.35"/>
<polygon fill="black" stroke="black" points="614.63,-45.22 620.37,-36.32 610.33,-39.7 614.63,-45.22"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1056pt" height="260pt" viewBox="0.00 0.00 1055.83 260.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1051.83,-256 1051.83,4 -4,4"/>
<g id="node1" class="node">
<title>:core:testing</title>
<ellipse fill="none" stroke="black" cx="639.77" cy="-234" rx="58.77" ry="18"/>
<text text-anchor="middle" x="639.77" y="-229.8" font-family="Times,serif" font-size="14.00">:core:testing</text>
</g>
<g id="node2" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="83.77" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="83.77" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge1" class="edge">
<title>:core:testing-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M595.68,-221.74C496.23,-196.34 254.43,-134.58 142.46,-105.99"/>
<polygon fill="black" stroke="black" points="143.41,-102.62 132.86,-103.54 141.68,-109.4 143.41,-102.62"/>
</g>
<g id="node3" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="538.77" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="538.77" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge2" class="edge">
<title>:core:testing-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M616.85,-217.12C603.1,-207.59 585.42,-195.33 570.35,-184.89"/>
<polygon fill="red" stroke="red" stroke-width="2" points="573.6,-182.88 563.39,-180.06 569.62,-188.64 573.6,-182.88"/>
</g>
<g id="node4" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="438.77" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="438.77" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge3" class="edge">
<title>:core:testing-&gt;:core:model</title>
<path fill="none" stroke="black" d="M581.6,-230.81C438.88,-224.05 77.96,-198.2 7.77,-108 -2.06,-95.37 -2.97,-83.86 7.77,-72 62.34,-11.76 291.71,-50.03 371.77,-36 376.36,-35.2 381.09,-34.24 385.83,-33.21"/>
<polygon fill="black" stroke="black" points="386.38,-36.68 395.33,-31.01 384.8,-29.86 386.38,-36.68"/>
</g>
<g id="node5" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="740.77" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="740.77" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge4" class="edge">
<title>:core:testing-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M651.75,-216.15C669.12,-191.73 701.46,-146.26 722.01,-117.38"/>
<polygon fill="black" stroke="black" points="724.67,-119.68 727.61,-109.5 718.96,-115.62 724.67,-119.68"/>
</g>
<g id="node6" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="631.77" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="631.77" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge5" class="edge">
<title>:core:testing-&gt;:core:common</title>
<path fill="none" stroke="black" d="M679.13,-220.22C748.7,-195.57 881.51,-138.02 830.77,-72 814.92,-51.38 752.81,-37.08 702.14,-28.57"/>
<polygon fill="black" stroke="black" points="702.79,-25.13 692.36,-26.99 701.67,-32.04 702.79,-25.13"/>
</g>
<g id="node7" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="962.77" cy="-162" rx="85.06" ry="18"/>
<text text-anchor="middle" x="962.77" y="-157.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge6" class="edge">
<title>:core:testing-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M686.74,-222.82C741.21,-211.02 831.49,-191.45 893.89,-177.93"/>
<polygon fill="black" stroke="black" points="894.31,-181.42 903.34,-175.88 892.82,-174.58 894.31,-181.42"/>
</g>
<g id="edge11" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M492.32,-155.67C420.83,-147.2 279.63,-129.42 160.77,-108 155.49,-107.05 150.02,-105.99 144.55,-104.88"/>
<polygon fill="black" stroke="black" points="145.35,-101.47 134.84,-102.85 143.92,-108.32 145.35,-101.47"/>
</g>
<g id="edge12" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M573.5,-148.97C604.88,-138.09 651.55,-121.92 687.62,-109.42"/>
<polygon fill="black" stroke="black" points="688.72,-112.74 697.02,-106.16 686.43,-106.13 688.72,-112.74"/>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M567.46,-147.19C583.19,-138.17 601.69,-124.92 612.77,-108 624.49,-90.11 629.12,-66.26 630.89,-47.75"/>
<polygon fill="black" stroke="black" points="634.37,-48.21 631.58,-37.99 627.39,-47.71 634.37,-48.21"/>
</g>
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="235.77" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="235.77" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M497.91,-151.56C446.01,-139.57 356.02,-118.78 296.18,-104.96"/>
<polygon fill="red" stroke="red" stroke-width="2" points="298.49,-101.9 287.95,-103.06 296.91,-108.72 298.49,-101.9"/>
</g>
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="387.77" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="387.77" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge9" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M509.3,-147.34C486.99,-137 456.02,-122.64 430.93,-111.01"/>
<polygon fill="black" stroke="black" points="432.49,-107.88 421.95,-106.84 429.55,-114.23 432.49,-107.88"/>
</g>
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="538.77" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="538.77" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge10" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M538.77,-143.7C538.77,-136.41 538.77,-127.73 538.77,-119.54"/>
<polygon fill="black" stroke="black" points="542.27,-119.62 538.77,-109.62 535.27,-119.62 542.27,-119.62"/>
</g>
<g id="edge19" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M686.08,-76.32C631.97,-63.78 549.53,-44.67 494.92,-32.01"/>
<polygon fill="black" stroke="black" points="495.71,-28.61 485.18,-29.76 494.13,-35.43 495.71,-28.61"/>
</g>
<g id="edge20" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M715.21,-72.59C700.62,-63.22 682.13,-51.34 666.27,-41.16"/>
<polygon fill="black" stroke="black" points="668.37,-38.34 658.06,-35.89 664.59,-44.23 668.37,-38.34"/>
</g>
<g id="edge13" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M275.39,-75.34C308.44,-63.94 355.63,-47.67 390.8,-35.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="390.13,-39.47 398.44,-32.91 387.85,-32.86 390.13,-39.47"/>
</g>
<g id="edge15" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M400.12,-72.05C406.07,-63.89 413.33,-53.91 419.96,-44.82"/>
<polygon fill="black" stroke="black" points="422.59,-47.16 425.65,-37.01 416.93,-43.03 422.59,-47.16"/>
</g>
<g id="edge16" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M432.52,-76.16C473.02,-64.54 532.82,-47.39 576.33,-34.9"/>
<polygon fill="black" stroke="black" points="577.2,-38.3 585.85,-32.18 575.27,-31.57 577.2,-38.3"/>
</g>
<g id="node11" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="271.77" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="271.77" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge14" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M361.45,-73.12C345.91,-63.74 326.01,-51.73 308.9,-41.4"/>
<polygon fill="black" stroke="black" points="310.86,-38.5 300.49,-36.33 307.25,-44.5 310.86,-38.5"/>
</g>
<g id="edge18" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M515.58,-72.76C502.23,-63.42 485.26,-51.55 470.68,-41.33"/>
<polygon fill="black" stroke="black" points="472.93,-38.64 462.73,-35.77 468.92,-44.38 472.93,-38.64"/>
</g>
<g id="edge17" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M560.34,-72.76C572.46,-63.64 587.79,-52.1 601.14,-42.06"/>
<polygon fill="black" stroke="black" points="602.9,-45.11 608.79,-36.3 598.69,-39.52 602.9,-45.11"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

@ -1,55 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="449pt" height="116pt"
viewBox="0.00 0.00 449.10 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 445.1,-112 445.1,4 -4,4"/>
<!-- :core:ui -->
<g id="node1" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="229.66" cy="-90" rx="39.07" ry="18"/>
<text text-anchor="middle" x="229.66" y="-84.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :core:analytics -->
<g id="node2" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="64.66" cy="-18" rx="64.66" ry="18"/>
<text text-anchor="middle" x="64.66" y="-12.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge1" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="red" stroke-width="2" d="M201.67,-77.13C176.45,-66.43 138.92,-50.51 109.52,-38.03"/>
<polygon fill="red" stroke="red" stroke-width="2" points="112.45,-35.47 101.88,-34.79 109.72,-41.92 112.45,-35.47"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="229.66" cy="-18" rx="82.06" ry="18"/>
<text text-anchor="middle" x="229.66" y="-12.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M229.66,-71.7C229.66,-64.41 229.66,-55.73 229.66,-47.54"/>
<polygon fill="black" stroke="black" points="233.16,-47.62 229.66,-37.62 226.16,-47.62 233.16,-47.62"/>
</g>
<!-- :core:model -->
<g id="node4" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="385.66" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="385.66" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge3" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M256.83,-76.81C280.83,-66.04 316.19,-50.17 343.8,-37.78"/>
<polygon fill="black" stroke="black" points="344.89,-41.13 352.58,-33.84 342.02,-34.74 344.89,-41.13"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="462pt" height="116pt" viewBox="0.00 0.00 462.50 116.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 458.5,-112 458.5,4 -4,4"/>
<g id="node1" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="237.34" cy="-90" rx="40.53" ry="18"/>
<text text-anchor="middle" x="237.34" y="-85.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="node2" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="67.34" cy="-18" rx="67.34" ry="18"/>
<text text-anchor="middle" x="67.34" y="-13.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge1" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="red" stroke-width="2" d="M208.5,-77.13C182.4,-66.38 143.52,-50.37 113.16,-37.87"/>
<polygon fill="red" stroke="red" stroke-width="2" points="116.2,-35.33 105.62,-34.76 113.53,-41.8 116.2,-35.33"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="237.34" cy="-18" rx="85.06" ry="18"/>
<text text-anchor="middle" x="237.34" y="-13.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M237.34,-71.7C237.34,-64.41 237.34,-55.73 237.34,-47.54"/>
<polygon fill="black" stroke="black" points="240.84,-47.62 237.34,-37.62 233.84,-47.62 240.84,-47.62"/>
</g>
<g id="node4" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="397.34" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="397.34" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge3" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M265.58,-76.65C290.24,-65.86 326.4,-50.04 354.6,-37.7"/>
<polygon fill="black" stroke="black" points="355.84,-40.98 363.6,-33.76 353.03,-34.57 355.84,-40.98"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -1,205 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1028pt" height="260pt"
viewBox="0.00 0.00 1027.75 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1023.75,-256 1023.75,4 -4,4"/>
<!-- :feature:bookmarks -->
<g id="node1" class="node">
<title>:feature:bookmarks</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-234" rx="83.08" ry="18"/>
<text text-anchor="middle" x="192.06" y="-228.95" font-family="Times,serif" font-size="14.00">:feature:bookmarks</text>
</g>
<!-- :core:ui -->
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-162" rx="39.07" ry="18"/>
<text text-anchor="middle" x="192.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :feature:bookmarks&#45;&gt;:core:ui -->
<g id="edge1" class="edge">
<title>:feature:bookmarks&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M192.06,-215.7C192.06,-208.41 192.06,-199.73 192.06,-191.54"/>
<polygon fill="black" stroke="black" points="195.56,-191.62 192.06,-181.62 188.56,-191.62 195.56,-191.62"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-90" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :feature:bookmarks&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:feature:bookmarks&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.93,-216.3C166.33,-206.1 154.11,-192.63 144.06,-180 128.01,-159.83 111.39,-135.78 99.41,-117.77"/>
<polygon fill="black" stroke="black" points="102.35,-115.88 93.93,-109.46 96.51,-119.73 102.35,-115.88"/>
</g>
<!-- :core:data -->
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="591.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :feature:bookmarks&#45;&gt;:core:data -->
<g id="edge3" class="edge">
<title>:feature:bookmarks&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M255.28,-221.91C333.19,-208.24 464.2,-185.26 537.42,-172.41"/>
<polygon fill="red" stroke="red" stroke-width="2" points="536.43,-176.14 545.68,-170.96 535.22,-169.24 536.43,-176.14"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge5" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M169.8,-146.83C154.65,-137.19 134.29,-124.24 117,-113.23"/>
<polygon fill="black" stroke="black" points="119.35,-110.58 109.04,-108.17 115.59,-116.49 119.35,-110.58"/>
</g>
<!-- :core:analytics -->
<g id="node5" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="285.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="285.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge4" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M211.78,-146.15C224.2,-136.81 240.49,-124.54 254.56,-113.96"/>
<polygon fill="black" stroke="black" points="256.32,-117.01 262.21,-108.2 252.11,-111.42 256.32,-117.01"/>
</g>
<!-- :core:model -->
<g id="node6" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="591.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge6" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M190.4,-143.81C189.47,-123.54 191.4,-90.3 211.06,-72 255.22,-30.9 427.13,-21.43 523.91,-19.4"/>
<polygon fill="black" stroke="black" points="523.87,-22.9 533.81,-19.22 523.74,-15.9 523.87,-22.9"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge11" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M551.05,-151.97C504.63,-141.47 425.78,-123.59 358.06,-108 353.57,-106.97 348.92,-105.89 344.24,-104.81"/>
<polygon fill="black" stroke="black" points="345.36,-101.48 334.82,-102.62 343.78,-108.29 345.36,-101.48"/>
</g>
<!-- :core:common -->
<g id="node7" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="755.06" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="755.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M636.86,-157.02C697,-150.74 797.62,-136.23 820.06,-108 830.02,-95.48 826.92,-86.45 820.06,-72 814.21,-59.69 803.96,-49.3 793.29,-41.07"/>
<polygon fill="black" stroke="black" points="795.33,-38.22 785.15,-35.27 791.27,-43.92 795.33,-38.22"/>
</g>
<!-- :core:database -->
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="431.06" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="431.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M560.97,-147.83C536.75,-137.24 502.38,-122.2 475.07,-110.26"/>
<polygon fill="red" stroke="red" stroke-width="2" points="477.95,-107.7 467.39,-106.89 475.15,-114.11 477.95,-107.7"/>
</g>
<!-- :core:datastore -->
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="932.06" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="932.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge9" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M632.39,-152.8C684.04,-142.52 775.15,-124.26 853.06,-108 858.9,-106.78 864.97,-105.5 871.05,-104.21"/>
<polygon fill="black" stroke="black" points="871.4,-107.71 880.45,-102.2 869.94,-100.87 871.4,-107.71"/>
</g>
<!-- :core:network -->
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="749.06" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="749.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge10" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M621.15,-147.67C645.1,-137.06 678.94,-122.07 705.79,-110.17"/>
<polygon fill="black" stroke="black" points="706.97,-113.47 714.7,-106.22 704.14,-107.07 706.97,-113.47"/>
</g>
<!-- :core:notifications -->
<g id="node11" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="591.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge12" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M591.06,-143.7C591.06,-136.41 591.06,-127.73 591.06,-119.54"/>
<polygon fill="black" stroke="black" points="594.56,-119.62 591.06,-109.62 587.56,-119.62 594.56,-119.62"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge13" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M464.6,-74.33C489,-63.65 522.23,-49.11 548.51,-37.62"/>
<polygon fill="red" stroke="red" stroke-width="2" points="548.4,-41.49 556.15,-34.27 545.59,-35.07 548.4,-41.49"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge15" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M881.01,-78.52C818.61,-65.71 713.32,-44.1 648.25,-30.74"/>
<polygon fill="black" stroke="black" points="648.97,-27.31 638.47,-28.73 647.56,-34.17 648.97,-27.31"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge16" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M895.81,-74.67C868.61,-63.91 831.14,-49.09 801.71,-37.45"/>
<polygon fill="black" stroke="black" points="803.25,-34.29 792.66,-33.87 800.68,-40.8 803.25,-34.29"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node12" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="932.06" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="932.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge14" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M932.06,-71.7C932.06,-64.41 932.06,-55.73 932.06,-47.54"/>
<polygon fill="black" stroke="black" points="935.56,-47.62 932.06,-37.62 928.56,-47.62 935.56,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge18" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M715.94,-74.33C691.84,-63.65 659.03,-49.11 633.08,-37.62"/>
<polygon fill="black" stroke="black" points="634.74,-34.52 624.17,-33.67 631.9,-40.92 634.74,-34.52"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge17" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M750.54,-71.7C751.17,-64.41 751.91,-55.73 752.61,-47.54"/>
<polygon fill="black" stroke="black" points="756.1,-47.87 753.46,-37.61 749.12,-47.28 756.1,-47.87"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge19" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M591.06,-71.7C591.06,-64.41 591.06,-55.73 591.06,-47.54"/>
<polygon fill="black" stroke="black" points="594.56,-47.62 591.06,-37.62 587.56,-47.62 594.56,-47.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge20" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M627.05,-73.64C651.5,-63.2 684.01,-49.33 710.15,-38.17"/>
<polygon fill="black" stroke="black" points="711.34,-41.47 719.17,-34.32 708.59,-35.03 711.34,-41.47"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1064pt" height="260pt" viewBox="0.00 0.00 1063.53 260.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1059.53,-256 1059.53,4 -4,4"/>
<g id="node1" class="node">
<title>:feature:bookmarks</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-234" rx="86.12" ry="18"/>
<text text-anchor="middle" x="198.06" y="-229.8" font-family="Times,serif" font-size="14.00">:feature:bookmarks</text>
</g>
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-162" rx="40.53" ry="18"/>
<text text-anchor="middle" x="198.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge1" class="edge">
<title>:feature:bookmarks-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M198.06,-215.7C198.06,-208.41 198.06,-199.73 198.06,-191.54"/>
<polygon fill="black" stroke="black" points="201.56,-191.62 198.06,-181.62 194.56,-191.62 201.56,-191.62"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-90" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:feature:bookmarks-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M180.75,-215.9C170.82,-205.78 158.32,-192.53 148.06,-180 131.56,-159.86 114.61,-135.67 102.45,-117.6"/>
<polygon fill="black" stroke="black" points="105.52,-115.89 97.06,-109.51 99.69,-119.77 105.52,-115.89"/>
</g>
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="611.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge3" class="edge">
<title>:feature:bookmarks-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M263.5,-221.91C344.3,-208.21 480.31,-185.16 556,-172.33"/>
<polygon fill="red" stroke="red" stroke-width="2" points="554.91,-176.07 564.18,-170.94 553.74,-169.17 554.91,-176.07"/>
</g>
<g id="edge5" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.19,-146.83C159.63,-137.19 138.71,-124.24 120.95,-113.23"/>
<polygon fill="black" stroke="black" points="123.09,-110.44 112.74,-108.15 119.4,-116.39 123.09,-110.44"/>
</g>
<g id="node5" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="293.06" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="293.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge4" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M218.2,-146.15C230.89,-136.81 247.53,-124.54 261.9,-113.96"/>
<polygon fill="black" stroke="black" points="263.76,-116.94 269.73,-108.19 259.6,-111.3 263.76,-116.94"/>
</g>
<g id="node6" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="611.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge6" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M196.38,-143.8C195.44,-123.51 197.35,-90.25 217.06,-72 263.07,-29.38 442.34,-20.56 542.46,-19.03"/>
<polygon fill="black" stroke="black" points="542.2,-22.54 552.15,-18.91 542.11,-15.54 542.2,-22.54"/>
</g>
<g id="edge11" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M569.69,-151.91C521.68,-141.37 440.13,-123.44 370.06,-108 364.98,-106.88 359.71,-105.72 354.42,-104.55"/>
<polygon fill="black" stroke="black" points="355.58,-101.23 345.07,-102.49 354.08,-108.06 355.58,-101.23"/>
</g>
<g id="node7" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="781.06" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="781.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M658.9,-157.27C721.41,-151.3 825.69,-137.15 849.06,-108 859.07,-95.52 856.08,-86.38 849.06,-72 842.9,-59.39 832.13,-48.91 820.96,-40.69"/>
<polygon fill="black" stroke="black" points="823.06,-37.88 812.82,-35.17 819.13,-43.68 823.06,-37.88"/>
</g>
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="445.06" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="445.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M579.83,-147.83C554.6,-137.19 518.74,-122.07 490.35,-110.1"/>
<polygon fill="red" stroke="red" stroke-width="2" points="493.23,-107.52 482.66,-106.86 490.51,-113.97 493.23,-107.52"/>
</g>
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="964.06" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="964.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge9" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M653.8,-152.8C707.23,-142.5 801.46,-124.24 882.06,-108 888.27,-106.75 894.74,-105.43 901.2,-104.11"/>
<polygon fill="black" stroke="black" points="901.45,-107.63 910.54,-102.19 900.04,-100.77 901.45,-107.63"/>
</g>
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="775.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="775.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge10" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M642.29,-147.67C667.26,-137.01 702.58,-121.93 730.52,-110.01"/>
<polygon fill="black" stroke="black" points="731.61,-113.35 739.43,-106.2 728.86,-106.91 731.61,-113.35"/>
</g>
<g id="node11" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="611.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge12" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M611.06,-143.7C611.06,-136.41 611.06,-127.73 611.06,-119.54"/>
<polygon fill="black" stroke="black" points="614.56,-119.62 611.06,-109.62 607.56,-119.62 614.56,-119.62"/>
</g>
<g id="edge13" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M479.86,-74.33C505.29,-63.6 539.96,-48.98 567.27,-37.46"/>
<polygon fill="red" stroke="red" stroke-width="2" points="567.08,-41.34 574.93,-34.23 564.36,-34.89 567.08,-41.34"/>
</g>
<g id="edge15" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M910.83,-78.44C846.01,-65.59 736.89,-43.95 669.71,-30.63"/>
<polygon fill="black" stroke="black" points="670.46,-27.21 659.97,-28.7 669.1,-34.08 670.46,-27.21"/>
</g>
<g id="edge16" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M926.58,-74.67C898.33,-63.86 859.38,-48.96 828.88,-37.29"/>
<polygon fill="black" stroke="black" points="830.49,-34.16 819.9,-33.86 827.98,-40.7 830.49,-34.16"/>
</g>
<g id="node12" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="964.06" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="964.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge14" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M964.06,-71.7C964.06,-64.41 964.06,-55.73 964.06,-47.54"/>
<polygon fill="black" stroke="black" points="967.56,-47.62 964.06,-37.62 960.56,-47.62 967.56,-47.62"/>
</g>
<g id="edge18" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M740.68,-74.33C715.55,-63.6 681.3,-48.98 654.32,-37.46"/>
<polygon fill="black" stroke="black" points="655.96,-34.36 645.39,-33.65 653.21,-40.8 655.96,-34.36"/>
</g>
<g id="edge17" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M776.54,-71.7C777.17,-64.41 777.91,-55.73 778.61,-47.54"/>
<polygon fill="black" stroke="black" points="782.1,-47.87 779.46,-37.61 775.12,-47.28 782.1,-47.87"/>
</g>
<g id="edge19" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M611.06,-71.7C611.06,-64.41 611.06,-55.73 611.06,-47.54"/>
<polygon fill="black" stroke="black" points="614.56,-47.62 611.06,-37.62 607.56,-47.62 614.56,-47.62"/>
</g>
<g id="edge20" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M648.36,-73.64C673.9,-63.12 707.94,-49.11 735.14,-37.91"/>
<polygon fill="black" stroke="black" points="736.27,-41.23 744.18,-34.18 733.6,-34.76 736.27,-41.23"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@ -1,229 +1,188 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1073pt" height="332pt"
viewBox="0.00 0.00 1072.75 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 1068.75,-328 1068.75,4 -4,4"/>
<!-- :feature:foryou -->
<g id="node1" class="node">
<title>:feature:foryou</title>
<ellipse fill="none" stroke="black" cx="250.06" cy="-306" rx="66.19" ry="18"/>
<text text-anchor="middle" x="250.06" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:foryou</text>
</g>
<!-- :core:ui -->
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-234" rx="39.07" ry="18"/>
<text text-anchor="middle" x="192.06" y="-228.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :feature:foryou&#45;&gt;:core:ui -->
<g id="edge1" class="edge">
<title>:feature:foryou&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M236.02,-288.05C229.08,-279.68 220.57,-269.4 212.89,-260.13"/>
<polygon fill="black" stroke="black" points="215.61,-257.94 206.54,-252.47 210.22,-262.41 215.61,-257.94"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-162" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :feature:foryou&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:feature:foryou&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M211.24,-291.1C189.86,-282.17 163.75,-269.02 144.06,-252 123.99,-234.64 107.23,-209.43 96.22,-190.27"/>
<polygon fill="black" stroke="black" points="99.35,-188.7 91.44,-181.66 93.23,-192.1 99.35,-188.7"/>
</g>
<!-- :core:data -->
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="568.06" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="568.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :feature:foryou&#45;&gt;:core:data -->
<g id="edge3" class="edge">
<title>:feature:foryou&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M286.11,-290.58C311.86,-280.16 347.25,-265.59 378.06,-252 430.92,-228.69 491.2,-200.11 529.43,-181.73"/>
<polygon fill="black" stroke="black" points="530.74,-184.98 538.23,-177.48 527.71,-178.67 530.74,-184.98"/>
</g>
<!-- :core:domain -->
<g id="node5" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="309.06" cy="-234" rx="60.05" ry="18"/>
<text text-anchor="middle" x="309.06" y="-228.95" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<!-- :feature:foryou&#45;&gt;:core:domain -->
<g id="edge4" class="edge">
<title>:feature:foryou&#45;&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M264.34,-288.05C271.3,-279.8 279.81,-269.7 287.54,-260.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="289.19,-264.01 292.96,-254.1 283.84,-259.49 289.19,-264.01"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge6" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M169.8,-218.83C154.65,-209.19 134.29,-196.24 117,-185.23"/>
<polygon fill="black" stroke="black" points="119.35,-182.58 109.04,-180.17 115.59,-188.49 119.35,-182.58"/>
</g>
<!-- :core:analytics -->
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="342.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="342.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge5" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M208.69,-217.26C234.76,-192.58 285.48,-144.57 316.3,-115.38"/>
<polygon fill="black" stroke="black" points="318.48,-118.14 323.33,-108.73 313.67,-113.06 318.48,-118.14"/>
</g>
<!-- :core:model -->
<g id="node7" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="568.06" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="568.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge7" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M192.94,-215.73C195.65,-182.32 206.61,-108.88 251.06,-72 288.33,-41.08 420.81,-27.72 502.24,-22.33"/>
<polygon fill="black" stroke="black" points="502.11,-25.84 511.87,-21.71 501.66,-18.86 502.11,-25.84"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge12" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M532.25,-149.91C495.35,-138.48 437.4,-120.53 395.16,-107.45"/>
<polygon fill="black" stroke="black" points="396.27,-104.13 385.69,-104.51 394.2,-110.81 396.27,-104.13"/>
</g>
<!-- :core:common -->
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="806.06" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="806.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M614.84,-159.04C725.87,-153.9 998.07,-138.31 1025.06,-108 1035.7,-96.05 1034.95,-84.57 1025.06,-72 1023.79,-70.39 929.84,-48.06 865.42,-32.9"/>
<polygon fill="black" stroke="black" points="866.57,-29.58 856.03,-30.7 864.97,-36.39 866.57,-29.58"/>
</g>
<!-- :core:database -->
<g id="node9" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="488.06" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="488.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge9" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M549.91,-145.12C539.69,-136.18 526.74,-124.85 515.33,-114.86"/>
<polygon fill="red" stroke="red" stroke-width="2" points="519.08,-113.5 509.25,-109.54 514.48,-118.76 519.08,-113.5"/>
</g>
<!-- :core:datastore -->
<g id="node10" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="951.06" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="951.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge10" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M611.44,-154.34C671.36,-144.97 782.73,-126.91 877.06,-108 881.92,-107.03 886.94,-105.97 891.98,-104.88"/>
<polygon fill="black" stroke="black" points="892.49,-108.35 901.5,-102.78 890.98,-101.52 892.49,-108.35"/>
</g>
<!-- :core:network -->
<g id="node11" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="806.06" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="806.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge11" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M604.73,-150.22C644.27,-138.58 707.62,-119.95 752.69,-106.7"/>
<polygon fill="black" stroke="black" points="753.67,-110.06 762.27,-103.88 751.69,-103.34 753.67,-110.06"/>
</g>
<!-- :core:notifications -->
<g id="node12" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="648.06" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="648.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge13" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M586.21,-145.12C596.25,-136.33 608.94,-125.23 620.21,-115.37"/>
<polygon fill="black" stroke="black" points="622.5,-118.01 627.72,-108.79 617.89,-112.75 622.5,-118.01"/>
</g>
<!-- :core:domain&#45;&gt;:core:data -->
<g id="edge22" class="edge">
<title>:core:domain&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M352.7,-221.2C398.75,-208.76 471.15,-189.19 519.11,-176.23"/>
<polygon fill="red" stroke="red" stroke-width="2" points="518.48,-180.02 527.22,-174.04 516.66,-173.27 518.48,-180.02"/>
</g>
<!-- :core:domain&#45;&gt;:core:model -->
<g id="edge23" class="edge">
<title>:core:domain&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M296.33,-216.3C273.75,-184.5 232.28,-114.65 268.06,-72 297.26,-37.19 422.38,-25.23 501.52,-21.13"/>
<polygon fill="black" stroke="black" points="501.52,-24.64 511.34,-20.66 501.18,-17.64 501.52,-24.64"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge14" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M507.02,-72.41C517.15,-63.54 529.81,-52.47 540.96,-42.71"/>
<polygon fill="red" stroke="red" stroke-width="2" points="542.01,-46.44 547.23,-37.22 537.4,-41.17 542.01,-46.44"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge16" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M902.98,-77.54C894.37,-75.61 885.46,-73.68 877.06,-72 791.15,-54.78 691.1,-38.26 628.66,-28.37"/>
<polygon fill="black" stroke="black" points="629.37,-24.94 618.95,-26.83 628.28,-31.85 629.37,-24.94"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge17" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M919.6,-73.81C898.51,-63.63 870.51,-50.11 847.59,-39.05"/>
<polygon fill="black" stroke="black" points="849.35,-36.01 838.82,-34.82 846.31,-42.32 849.35,-36.01"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node13" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="977.06" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="977.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge15" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M957.49,-71.7C960.29,-64.15 963.64,-55.12 966.78,-46.68"/>
<polygon fill="black" stroke="black" points="969.98,-48.12 970.18,-37.52 963.42,-45.68 969.98,-48.12"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge19" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M763.51,-76.49C723.04,-64.58 662.12,-46.67 619.07,-34"/>
<polygon fill="black" stroke="black" points="620.29,-30.71 609.71,-31.25 618.32,-37.43 620.29,-30.71"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge18" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M806.06,-71.7C806.06,-64.41 806.06,-55.73 806.06,-47.54"/>
<polygon fill="black" stroke="black" points="809.56,-47.62 806.06,-37.62 802.56,-47.62 809.56,-47.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge20" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M629.1,-72.41C618.97,-63.54 606.31,-52.47 595.15,-42.71"/>
<polygon fill="black" stroke="black" points="597.58,-40.18 587.75,-36.23 592.97,-45.44 597.58,-40.18"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge21" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M683.13,-73.46C706.43,-63.14 737.22,-49.5 762.16,-38.45"/>
<polygon fill="black" stroke="black" points="763.34,-41.76 771.06,-34.51 760.5,-35.36 763.34,-41.76"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1108pt" height="332pt" viewBox="0.00 0.00 1107.53 332.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 1103.53,-328 1103.53,4 -4,4"/>
<g id="node1" class="node">
<title>:feature:foryou</title>
<ellipse fill="none" stroke="black" cx="258.06" cy="-306" rx="68.95" ry="18"/>
<text text-anchor="middle" x="258.06" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:foryou</text>
</g>
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-234" rx="40.53" ry="18"/>
<text text-anchor="middle" x="198.06" y="-229.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge1" class="edge">
<title>:feature:foryou-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M243.53,-288.05C236.28,-279.59 227.36,-269.19 219.35,-259.84"/>
<polygon fill="black" stroke="black" points="222.19,-257.77 213.02,-252.46 216.87,-262.33 222.19,-257.77"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-162" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:feature:foryou-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M217.28,-291.11C195.21,-282.25 168.37,-269.18 148.06,-252 127.69,-234.78 110.66,-209.55 99.46,-190.35"/>
<polygon fill="black" stroke="black" points="102.55,-188.71 94.6,-181.71 96.45,-192.14 102.55,-188.71"/>
</g>
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="585.06" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="585.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge3" class="edge">
<title>:feature:foryou-&gt;:core:data</title>
<path fill="none" stroke="black" d="M295.52,-290.49C322.04,-280.09 358.39,-265.57 390.06,-252 444.42,-228.7 506.44,-200.03 545.66,-181.63"/>
<polygon fill="black" stroke="black" points="546.91,-184.91 554.47,-177.49 543.94,-178.57 546.91,-184.91"/>
</g>
<g id="node5" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="319.06" cy="-234" rx="61.99" ry="18"/>
<text text-anchor="middle" x="319.06" y="-229.8" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<g id="edge4" class="edge">
<title>:feature:foryou-&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M272.82,-288.05C280.09,-279.71 289,-269.49 297.05,-260.25"/>
<polygon fill="red" stroke="red" stroke-width="2" points="298.51,-263.91 302.44,-254.07 293.23,-259.31 298.51,-263.91"/>
</g>
<g id="edge6" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.19,-218.83C159.63,-209.19 138.71,-196.24 120.95,-185.23"/>
<polygon fill="black" stroke="black" points="123.09,-182.44 112.74,-180.15 119.4,-188.39 123.09,-182.44"/>
</g>
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="350.06" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="350.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge5" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M214.9,-217.26C241.33,-192.58 292.72,-144.57 323.96,-115.38"/>
<polygon fill="black" stroke="black" points="326.17,-118.1 331.09,-108.72 321.39,-112.99 326.17,-118.1"/>
</g>
<g id="node7" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="585.06" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="585.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge7" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M198.92,-215.71C201.6,-182.26 212.51,-108.76 257.06,-72 295.71,-40.1 433.01,-27.09 517.23,-22.02"/>
<polygon fill="black" stroke="black" points="517.2,-25.53 526.98,-21.46 516.79,-18.54 517.2,-25.53"/>
</g>
<g id="edge12" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M547.82,-149.91C509.28,-138.43 448.68,-120.38 404.71,-107.28"/>
<polygon fill="black" stroke="black" points="405.95,-104 395.37,-104.5 403.95,-110.71 405.95,-104"/>
</g>
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="832.06" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="832.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M633.67,-159.18C749.06,-154.36 1031.95,-139.42 1060.06,-108 1070.73,-96.08 1070.01,-84.53 1060.06,-72 1058.73,-70.32 960.24,-47.86 893.16,-32.72"/>
<polygon fill="black" stroke="black" points="894.27,-29.39 883.74,-30.6 892.73,-36.22 894.27,-29.39"/>
</g>
<g id="node9" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="502.06" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="502.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge9" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M566.22,-145.12C555.63,-136.18 542.19,-124.85 530.35,-114.86"/>
<polygon fill="red" stroke="red" stroke-width="2" points="533.9,-113.27 524,-109.5 529.38,-118.63 533.9,-113.27"/>
</g>
<g id="node10" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="983.06" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="983.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge10" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M630.12,-154.34C692.34,-144.97 808.03,-126.9 906.06,-108 911.25,-107 916.62,-105.91 922,-104.79"/>
<polygon fill="black" stroke="black" points="922.48,-108.27 931.54,-102.77 921.03,-101.42 922.48,-108.27"/>
</g>
<g id="node11" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="832.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="832.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge11" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M623.11,-150.22C664.33,-138.53 730.45,-119.8 777.26,-106.53"/>
<polygon fill="black" stroke="black" points="778,-109.96 786.67,-103.86 776.09,-103.22 778,-109.96"/>
</g>
<g id="node12" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="668.06" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="668.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge13" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M603.89,-145.12C614.41,-136.24 627.73,-125.01 639.51,-115.08"/>
<polygon fill="black" stroke="black" points="641.6,-117.9 646.98,-108.77 637.08,-112.54 641.6,-117.9"/>
</g>
<g id="edge22" class="edge">
<title>:core:domain-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M363.88,-221.2C411.27,-208.73 485.84,-189.11 535.1,-176.15"/>
<polygon fill="red" stroke="red" stroke-width="2" points="534.41,-179.95 543.19,-174.02 532.63,-173.18 534.41,-179.95"/>
</g>
<g id="edge23" class="edge">
<title>:core:domain-&gt;:core:model</title>
<path fill="none" stroke="black" d="M305.66,-216.32C281.85,-184.58 237.93,-114.81 274.06,-72 304.43,-36.01 434.35,-24.46 516.36,-20.75"/>
<polygon fill="black" stroke="black" points="516.49,-24.25 526.33,-20.33 516.19,-17.25 516.49,-24.25"/>
</g>
<g id="edge14" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M521.73,-72.41C532.35,-63.45 545.63,-52.25 557.29,-42.42"/>
<polygon fill="red" stroke="red" stroke-width="2" points="558.11,-46.3 563.5,-37.18 553.6,-40.95 558.11,-46.3"/>
</g>
<g id="edge16" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M933.02,-77.54C924.06,-75.61 914.79,-73.68 906.06,-72 816.46,-54.73 712.11,-38.15 647.31,-28.27"/>
<polygon fill="black" stroke="black" points="647.99,-24.83 637.57,-26.79 646.94,-31.75 647.99,-24.83"/>
</g>
<g id="edge17" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M950.29,-73.81C928.23,-63.58 898.91,-49.99 874.98,-38.9"/>
<polygon fill="black" stroke="black" points="876.68,-35.83 866.13,-34.8 873.73,-42.18 876.68,-35.83"/>
</g>
<g id="node13" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="1008.06" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="1008.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge15" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M989.24,-71.7C991.93,-64.15 995.16,-55.12 998.17,-46.68"/>
<polygon fill="black" stroke="black" points="1001.37,-48.12 1001.44,-37.53 994.78,-45.77 1001.37,-48.12"/>
</g>
<g id="edge19" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M787.9,-76.49C745.68,-64.52 682.02,-46.48 637.31,-33.81"/>
<polygon fill="black" stroke="black" points="638.4,-30.48 627.83,-31.12 636.49,-37.21 638.4,-30.48"/>
</g>
<g id="edge18" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M832.06,-71.7C832.06,-64.41 832.06,-55.73 832.06,-47.54"/>
<polygon fill="black" stroke="black" points="835.56,-47.62 832.06,-37.62 828.56,-47.62 835.56,-47.62"/>
</g>
<g id="edge20" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M648.39,-72.41C637.77,-63.45 624.48,-52.25 612.83,-42.42"/>
<polygon fill="black" stroke="black" points="615.36,-39.98 605.46,-36.2 610.84,-45.33 615.36,-39.98"/>
</g>
<g id="edge21" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M704.45,-73.46C728.84,-63.06 761.11,-49.28 787.1,-38.19"/>
<polygon fill="black" stroke="black" points="788.23,-41.51 796.05,-34.37 785.48,-35.07 788.23,-41.51"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@ -1,229 +1,188 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1073pt" height="332pt"
viewBox="0.00 0.00 1072.75 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 1068.75,-328 1068.75,4 -4,4"/>
<!-- :feature:interests -->
<g id="node1" class="node">
<title>:feature:interests</title>
<ellipse fill="none" stroke="black" cx="250.06" cy="-306" rx="72.34" ry="18"/>
<text text-anchor="middle" x="250.06" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:interests</text>
</g>
<!-- :core:ui -->
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-234" rx="39.07" ry="18"/>
<text text-anchor="middle" x="192.06" y="-228.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :feature:interests&#45;&gt;:core:ui -->
<g id="edge1" class="edge">
<title>:feature:interests&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M236.02,-288.05C229.08,-279.68 220.57,-269.4 212.89,-260.13"/>
<polygon fill="black" stroke="black" points="215.61,-257.94 206.54,-252.47 210.22,-262.41 215.61,-257.94"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-162" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :feature:interests&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:feature:interests&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M209.97,-290.57C188.83,-281.64 163.36,-268.69 144.06,-252 123.99,-234.64 107.23,-209.43 96.22,-190.27"/>
<polygon fill="black" stroke="black" points="99.35,-188.7 91.44,-181.66 93.23,-192.1 99.35,-188.7"/>
</g>
<!-- :core:data -->
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="568.06" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="568.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :feature:interests&#45;&gt;:core:data -->
<g id="edge3" class="edge">
<title>:feature:interests&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M287.22,-290.14C312.87,-279.75 347.69,-265.39 378.06,-252 430.92,-228.69 491.2,-200.11 529.43,-181.73"/>
<polygon fill="black" stroke="black" points="530.74,-184.98 538.23,-177.48 527.71,-178.67 530.74,-184.98"/>
</g>
<!-- :core:domain -->
<g id="node5" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="309.06" cy="-234" rx="60.05" ry="18"/>
<text text-anchor="middle" x="309.06" y="-228.95" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<!-- :feature:interests&#45;&gt;:core:domain -->
<g id="edge4" class="edge">
<title>:feature:interests&#45;&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M264.34,-288.05C271.3,-279.8 279.81,-269.7 287.54,-260.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="289.19,-264.01 292.96,-254.1 283.84,-259.49 289.19,-264.01"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge6" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M169.8,-218.83C154.65,-209.19 134.29,-196.24 117,-185.23"/>
<polygon fill="black" stroke="black" points="119.35,-182.58 109.04,-180.17 115.59,-188.49 119.35,-182.58"/>
</g>
<!-- :core:analytics -->
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="342.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="342.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge5" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M208.69,-217.26C234.76,-192.58 285.48,-144.57 316.3,-115.38"/>
<polygon fill="black" stroke="black" points="318.48,-118.14 323.33,-108.73 313.67,-113.06 318.48,-118.14"/>
</g>
<!-- :core:model -->
<g id="node7" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="568.06" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="568.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge7" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M192.94,-215.73C195.65,-182.32 206.61,-108.88 251.06,-72 288.33,-41.08 420.81,-27.72 502.24,-22.33"/>
<polygon fill="black" stroke="black" points="502.11,-25.84 511.87,-21.71 501.66,-18.86 502.11,-25.84"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge12" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M532.25,-149.91C495.35,-138.48 437.4,-120.53 395.16,-107.45"/>
<polygon fill="black" stroke="black" points="396.27,-104.13 385.69,-104.51 394.2,-110.81 396.27,-104.13"/>
</g>
<!-- :core:common -->
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="806.06" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="806.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M614.84,-159.04C725.87,-153.9 998.07,-138.31 1025.06,-108 1035.7,-96.05 1034.95,-84.57 1025.06,-72 1023.79,-70.39 929.84,-48.06 865.42,-32.9"/>
<polygon fill="black" stroke="black" points="866.57,-29.58 856.03,-30.7 864.97,-36.39 866.57,-29.58"/>
</g>
<!-- :core:database -->
<g id="node9" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="488.06" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="488.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge9" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M549.91,-145.12C539.69,-136.18 526.74,-124.85 515.33,-114.86"/>
<polygon fill="red" stroke="red" stroke-width="2" points="519.08,-113.5 509.25,-109.54 514.48,-118.76 519.08,-113.5"/>
</g>
<!-- :core:datastore -->
<g id="node10" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="951.06" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="951.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge10" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M611.44,-154.34C671.36,-144.97 782.73,-126.91 877.06,-108 881.92,-107.03 886.94,-105.97 891.98,-104.88"/>
<polygon fill="black" stroke="black" points="892.49,-108.35 901.5,-102.78 890.98,-101.52 892.49,-108.35"/>
</g>
<!-- :core:network -->
<g id="node11" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="806.06" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="806.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge11" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M604.73,-150.22C644.27,-138.58 707.62,-119.95 752.69,-106.7"/>
<polygon fill="black" stroke="black" points="753.67,-110.06 762.27,-103.88 751.69,-103.34 753.67,-110.06"/>
</g>
<!-- :core:notifications -->
<g id="node12" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="648.06" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="648.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge13" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M586.21,-145.12C596.25,-136.33 608.94,-125.23 620.21,-115.37"/>
<polygon fill="black" stroke="black" points="622.5,-118.01 627.72,-108.79 617.89,-112.75 622.5,-118.01"/>
</g>
<!-- :core:domain&#45;&gt;:core:data -->
<g id="edge22" class="edge">
<title>:core:domain&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M352.7,-221.2C398.75,-208.76 471.15,-189.19 519.11,-176.23"/>
<polygon fill="red" stroke="red" stroke-width="2" points="518.48,-180.02 527.22,-174.04 516.66,-173.27 518.48,-180.02"/>
</g>
<!-- :core:domain&#45;&gt;:core:model -->
<g id="edge23" class="edge">
<title>:core:domain&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M296.33,-216.3C273.75,-184.5 232.28,-114.65 268.06,-72 297.26,-37.19 422.38,-25.23 501.52,-21.13"/>
<polygon fill="black" stroke="black" points="501.52,-24.64 511.34,-20.66 501.18,-17.64 501.52,-24.64"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge14" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M507.02,-72.41C517.15,-63.54 529.81,-52.47 540.96,-42.71"/>
<polygon fill="red" stroke="red" stroke-width="2" points="542.01,-46.44 547.23,-37.22 537.4,-41.17 542.01,-46.44"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge16" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M902.98,-77.54C894.37,-75.61 885.46,-73.68 877.06,-72 791.15,-54.78 691.1,-38.26 628.66,-28.37"/>
<polygon fill="black" stroke="black" points="629.37,-24.94 618.95,-26.83 628.28,-31.85 629.37,-24.94"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge17" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M919.6,-73.81C898.51,-63.63 870.51,-50.11 847.59,-39.05"/>
<polygon fill="black" stroke="black" points="849.35,-36.01 838.82,-34.82 846.31,-42.32 849.35,-36.01"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node13" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="977.06" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="977.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge15" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M957.49,-71.7C960.29,-64.15 963.64,-55.12 966.78,-46.68"/>
<polygon fill="black" stroke="black" points="969.98,-48.12 970.18,-37.52 963.42,-45.68 969.98,-48.12"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge19" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M763.51,-76.49C723.04,-64.58 662.12,-46.67 619.07,-34"/>
<polygon fill="black" stroke="black" points="620.29,-30.71 609.71,-31.25 618.32,-37.43 620.29,-30.71"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge18" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M806.06,-71.7C806.06,-64.41 806.06,-55.73 806.06,-47.54"/>
<polygon fill="black" stroke="black" points="809.56,-47.62 806.06,-37.62 802.56,-47.62 809.56,-47.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge20" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M629.1,-72.41C618.97,-63.54 606.31,-52.47 595.15,-42.71"/>
<polygon fill="black" stroke="black" points="597.58,-40.18 587.75,-36.23 592.97,-45.44 597.58,-40.18"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge21" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M683.13,-73.46C706.43,-63.14 737.22,-49.5 762.16,-38.45"/>
<polygon fill="black" stroke="black" points="763.34,-41.76 771.06,-34.51 760.5,-35.36 763.34,-41.76"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1108pt" height="332pt" viewBox="0.00 0.00 1107.53 332.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 1103.53,-328 1103.53,4 -4,4"/>
<g id="node1" class="node">
<title>:feature:interests</title>
<ellipse fill="none" stroke="black" cx="258.06" cy="-306" rx="75.39" ry="18"/>
<text text-anchor="middle" x="258.06" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:interests</text>
</g>
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-234" rx="40.53" ry="18"/>
<text text-anchor="middle" x="198.06" y="-229.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge1" class="edge">
<title>:feature:interests-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M243.53,-288.05C236.28,-279.59 227.36,-269.19 219.35,-259.84"/>
<polygon fill="black" stroke="black" points="222.19,-257.77 213.02,-252.46 216.87,-262.33 222.19,-257.77"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-162" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:feature:interests-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M216.22,-290.69C194.35,-281.83 168.05,-268.9 148.06,-252 127.69,-234.78 110.66,-209.55 99.46,-190.35"/>
<polygon fill="black" stroke="black" points="102.55,-188.71 94.6,-181.71 96.45,-192.14 102.55,-188.71"/>
</g>
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="585.06" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="585.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge3" class="edge">
<title>:feature:interests-&gt;:core:data</title>
<path fill="none" stroke="black" d="M296.37,-290.16C322.82,-279.78 358.74,-265.43 390.06,-252 444.42,-228.7 506.44,-200.03 545.66,-181.63"/>
<polygon fill="black" stroke="black" points="546.91,-184.91 554.47,-177.49 543.94,-178.57 546.91,-184.91"/>
</g>
<g id="node5" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="319.06" cy="-234" rx="61.99" ry="18"/>
<text text-anchor="middle" x="319.06" y="-229.8" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<g id="edge4" class="edge">
<title>:feature:interests-&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M272.82,-288.05C280.09,-279.71 289,-269.49 297.05,-260.25"/>
<polygon fill="red" stroke="red" stroke-width="2" points="298.51,-263.91 302.44,-254.07 293.23,-259.31 298.51,-263.91"/>
</g>
<g id="edge6" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.19,-218.83C159.63,-209.19 138.71,-196.24 120.95,-185.23"/>
<polygon fill="black" stroke="black" points="123.09,-182.44 112.74,-180.15 119.4,-188.39 123.09,-182.44"/>
</g>
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="350.06" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="350.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge5" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M214.9,-217.26C241.33,-192.58 292.72,-144.57 323.96,-115.38"/>
<polygon fill="black" stroke="black" points="326.17,-118.1 331.09,-108.72 321.39,-112.99 326.17,-118.1"/>
</g>
<g id="node7" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="585.06" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="585.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge7" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M198.92,-215.71C201.6,-182.26 212.51,-108.76 257.06,-72 295.71,-40.1 433.01,-27.09 517.23,-22.02"/>
<polygon fill="black" stroke="black" points="517.2,-25.53 526.98,-21.46 516.79,-18.54 517.2,-25.53"/>
</g>
<g id="edge12" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M547.82,-149.91C509.28,-138.43 448.68,-120.38 404.71,-107.28"/>
<polygon fill="black" stroke="black" points="405.95,-104 395.37,-104.5 403.95,-110.71 405.95,-104"/>
</g>
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="832.06" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="832.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M633.67,-159.18C749.06,-154.36 1031.95,-139.42 1060.06,-108 1070.73,-96.08 1070.01,-84.53 1060.06,-72 1058.73,-70.32 960.24,-47.86 893.16,-32.72"/>
<polygon fill="black" stroke="black" points="894.27,-29.39 883.74,-30.6 892.73,-36.22 894.27,-29.39"/>
</g>
<g id="node9" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="502.06" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="502.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge9" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M566.22,-145.12C555.63,-136.18 542.19,-124.85 530.35,-114.86"/>
<polygon fill="red" stroke="red" stroke-width="2" points="533.9,-113.27 524,-109.5 529.38,-118.63 533.9,-113.27"/>
</g>
<g id="node10" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="983.06" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="983.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge10" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M630.12,-154.34C692.34,-144.97 808.03,-126.9 906.06,-108 911.25,-107 916.62,-105.91 922,-104.79"/>
<polygon fill="black" stroke="black" points="922.48,-108.27 931.54,-102.77 921.03,-101.42 922.48,-108.27"/>
</g>
<g id="node11" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="832.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="832.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge11" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M623.11,-150.22C664.33,-138.53 730.45,-119.8 777.26,-106.53"/>
<polygon fill="black" stroke="black" points="778,-109.96 786.67,-103.86 776.09,-103.22 778,-109.96"/>
</g>
<g id="node12" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="668.06" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="668.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge13" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M603.89,-145.12C614.41,-136.24 627.73,-125.01 639.51,-115.08"/>
<polygon fill="black" stroke="black" points="641.6,-117.9 646.98,-108.77 637.08,-112.54 641.6,-117.9"/>
</g>
<g id="edge22" class="edge">
<title>:core:domain-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M363.88,-221.2C411.27,-208.73 485.84,-189.11 535.1,-176.15"/>
<polygon fill="red" stroke="red" stroke-width="2" points="534.41,-179.95 543.19,-174.02 532.63,-173.18 534.41,-179.95"/>
</g>
<g id="edge23" class="edge">
<title>:core:domain-&gt;:core:model</title>
<path fill="none" stroke="black" d="M305.66,-216.32C281.85,-184.58 237.93,-114.81 274.06,-72 304.43,-36.01 434.35,-24.46 516.36,-20.75"/>
<polygon fill="black" stroke="black" points="516.49,-24.25 526.33,-20.33 516.19,-17.25 516.49,-24.25"/>
</g>
<g id="edge14" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M521.73,-72.41C532.35,-63.45 545.63,-52.25 557.29,-42.42"/>
<polygon fill="red" stroke="red" stroke-width="2" points="558.11,-46.3 563.5,-37.18 553.6,-40.95 558.11,-46.3"/>
</g>
<g id="edge16" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M933.02,-77.54C924.06,-75.61 914.79,-73.68 906.06,-72 816.46,-54.73 712.11,-38.15 647.31,-28.27"/>
<polygon fill="black" stroke="black" points="647.99,-24.83 637.57,-26.79 646.94,-31.75 647.99,-24.83"/>
</g>
<g id="edge17" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M950.29,-73.81C928.23,-63.58 898.91,-49.99 874.98,-38.9"/>
<polygon fill="black" stroke="black" points="876.68,-35.83 866.13,-34.8 873.73,-42.18 876.68,-35.83"/>
</g>
<g id="node13" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="1008.06" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="1008.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge15" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M989.24,-71.7C991.93,-64.15 995.16,-55.12 998.17,-46.68"/>
<polygon fill="black" stroke="black" points="1001.37,-48.12 1001.44,-37.53 994.78,-45.77 1001.37,-48.12"/>
</g>
<g id="edge19" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M787.9,-76.49C745.68,-64.52 682.02,-46.48 637.31,-33.81"/>
<polygon fill="black" stroke="black" points="638.4,-30.48 627.83,-31.12 636.49,-37.21 638.4,-30.48"/>
</g>
<g id="edge18" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M832.06,-71.7C832.06,-64.41 832.06,-55.73 832.06,-47.54"/>
<polygon fill="black" stroke="black" points="835.56,-47.62 832.06,-37.62 828.56,-47.62 835.56,-47.62"/>
</g>
<g id="edge20" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M648.39,-72.41C637.77,-63.45 624.48,-52.25 612.83,-42.42"/>
<polygon fill="black" stroke="black" points="615.36,-39.98 605.46,-36.2 610.84,-45.33 615.36,-39.98"/>
</g>
<g id="edge21" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M704.45,-73.46C728.84,-63.06 761.11,-49.28 787.1,-38.19"/>
<polygon fill="black" stroke="black" points="788.23,-41.51 796.05,-34.37 785.48,-35.07 788.23,-41.51"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@ -1,229 +1,188 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1073pt" height="332pt"
viewBox="0.00 0.00 1072.75 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 1068.75,-328 1068.75,4 -4,4"/>
<!-- :feature:search -->
<g id="node1" class="node">
<title>:feature:search</title>
<ellipse fill="none" stroke="black" cx="250.06" cy="-306" rx="65.17" ry="18"/>
<text text-anchor="middle" x="250.06" y="-300.95" font-family="Times,serif" font-size="14.00">:feature:search</text>
</g>
<!-- :core:ui -->
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-234" rx="39.07" ry="18"/>
<text text-anchor="middle" x="192.06" y="-228.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :feature:search&#45;&gt;:core:ui -->
<g id="edge1" class="edge">
<title>:feature:search&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M236.02,-288.05C229.08,-279.68 220.57,-269.4 212.89,-260.13"/>
<polygon fill="black" stroke="black" points="215.61,-257.94 206.54,-252.47 210.22,-262.41 215.61,-257.94"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-162" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :feature:search&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:feature:search&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M211.24,-291.1C189.86,-282.17 163.75,-269.02 144.06,-252 123.99,-234.64 107.23,-209.43 96.22,-190.27"/>
<polygon fill="black" stroke="black" points="99.35,-188.7 91.44,-181.66 93.23,-192.1 99.35,-188.7"/>
</g>
<!-- :core:data -->
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="568.06" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="568.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :feature:search&#45;&gt;:core:data -->
<g id="edge3" class="edge">
<title>:feature:search&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M286.11,-290.58C311.86,-280.16 347.25,-265.59 378.06,-252 430.92,-228.69 491.2,-200.11 529.43,-181.73"/>
<polygon fill="black" stroke="black" points="530.74,-184.98 538.23,-177.48 527.71,-178.67 530.74,-184.98"/>
</g>
<!-- :core:domain -->
<g id="node5" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="309.06" cy="-234" rx="60.05" ry="18"/>
<text text-anchor="middle" x="309.06" y="-228.95" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<!-- :feature:search&#45;&gt;:core:domain -->
<g id="edge4" class="edge">
<title>:feature:search&#45;&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M264.34,-288.05C271.3,-279.8 279.81,-269.7 287.54,-260.54"/>
<polygon fill="red" stroke="red" stroke-width="2" points="289.19,-264.01 292.96,-254.1 283.84,-259.49 289.19,-264.01"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge6" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M169.8,-218.83C154.65,-209.19 134.29,-196.24 117,-185.23"/>
<polygon fill="black" stroke="black" points="119.35,-182.58 109.04,-180.17 115.59,-188.49 119.35,-182.58"/>
</g>
<!-- :core:analytics -->
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="342.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="342.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge5" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M208.69,-217.26C234.76,-192.58 285.48,-144.57 316.3,-115.38"/>
<polygon fill="black" stroke="black" points="318.48,-118.14 323.33,-108.73 313.67,-113.06 318.48,-118.14"/>
</g>
<!-- :core:model -->
<g id="node7" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="568.06" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="568.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge7" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M192.94,-215.73C195.65,-182.32 206.61,-108.88 251.06,-72 288.33,-41.08 420.81,-27.72 502.24,-22.33"/>
<polygon fill="black" stroke="black" points="502.11,-25.84 511.87,-21.71 501.66,-18.86 502.11,-25.84"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge12" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M532.25,-149.91C495.35,-138.48 437.4,-120.53 395.16,-107.45"/>
<polygon fill="black" stroke="black" points="396.27,-104.13 385.69,-104.51 394.2,-110.81 396.27,-104.13"/>
</g>
<!-- :core:common -->
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="806.06" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="806.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M614.84,-159.04C725.87,-153.9 998.07,-138.31 1025.06,-108 1035.7,-96.05 1034.95,-84.57 1025.06,-72 1023.79,-70.39 929.84,-48.06 865.42,-32.9"/>
<polygon fill="black" stroke="black" points="866.57,-29.58 856.03,-30.7 864.97,-36.39 866.57,-29.58"/>
</g>
<!-- :core:database -->
<g id="node9" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="488.06" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="488.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge9" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M549.91,-145.12C539.69,-136.18 526.74,-124.85 515.33,-114.86"/>
<polygon fill="red" stroke="red" stroke-width="2" points="519.08,-113.5 509.25,-109.54 514.48,-118.76 519.08,-113.5"/>
</g>
<!-- :core:datastore -->
<g id="node10" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="951.06" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="951.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge10" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M611.44,-154.34C671.36,-144.97 782.73,-126.91 877.06,-108 881.92,-107.03 886.94,-105.97 891.98,-104.88"/>
<polygon fill="black" stroke="black" points="892.49,-108.35 901.5,-102.78 890.98,-101.52 892.49,-108.35"/>
</g>
<!-- :core:network -->
<g id="node11" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="806.06" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="806.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge11" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M604.73,-150.22C644.27,-138.58 707.62,-119.95 752.69,-106.7"/>
<polygon fill="black" stroke="black" points="753.67,-110.06 762.27,-103.88 751.69,-103.34 753.67,-110.06"/>
</g>
<!-- :core:notifications -->
<g id="node12" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="648.06" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="648.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge13" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M586.21,-145.12C596.25,-136.33 608.94,-125.23 620.21,-115.37"/>
<polygon fill="black" stroke="black" points="622.5,-118.01 627.72,-108.79 617.89,-112.75 622.5,-118.01"/>
</g>
<!-- :core:domain&#45;&gt;:core:data -->
<g id="edge22" class="edge">
<title>:core:domain&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M352.7,-221.2C398.75,-208.76 471.15,-189.19 519.11,-176.23"/>
<polygon fill="red" stroke="red" stroke-width="2" points="518.48,-180.02 527.22,-174.04 516.66,-173.27 518.48,-180.02"/>
</g>
<!-- :core:domain&#45;&gt;:core:model -->
<g id="edge23" class="edge">
<title>:core:domain&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M296.33,-216.3C273.75,-184.5 232.28,-114.65 268.06,-72 297.26,-37.19 422.38,-25.23 501.52,-21.13"/>
<polygon fill="black" stroke="black" points="501.52,-24.64 511.34,-20.66 501.18,-17.64 501.52,-24.64"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge14" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M507.02,-72.41C517.15,-63.54 529.81,-52.47 540.96,-42.71"/>
<polygon fill="red" stroke="red" stroke-width="2" points="542.01,-46.44 547.23,-37.22 537.4,-41.17 542.01,-46.44"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge16" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M902.98,-77.54C894.37,-75.61 885.46,-73.68 877.06,-72 791.15,-54.78 691.1,-38.26 628.66,-28.37"/>
<polygon fill="black" stroke="black" points="629.37,-24.94 618.95,-26.83 628.28,-31.85 629.37,-24.94"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge17" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M919.6,-73.81C898.51,-63.63 870.51,-50.11 847.59,-39.05"/>
<polygon fill="black" stroke="black" points="849.35,-36.01 838.82,-34.82 846.31,-42.32 849.35,-36.01"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node13" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="977.06" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="977.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge15" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M957.49,-71.7C960.29,-64.15 963.64,-55.12 966.78,-46.68"/>
<polygon fill="black" stroke="black" points="969.98,-48.12 970.18,-37.52 963.42,-45.68 969.98,-48.12"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge19" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M763.51,-76.49C723.04,-64.58 662.12,-46.67 619.07,-34"/>
<polygon fill="black" stroke="black" points="620.29,-30.71 609.71,-31.25 618.32,-37.43 620.29,-30.71"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge18" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M806.06,-71.7C806.06,-64.41 806.06,-55.73 806.06,-47.54"/>
<polygon fill="black" stroke="black" points="809.56,-47.62 806.06,-37.62 802.56,-47.62 809.56,-47.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge20" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M629.1,-72.41C618.97,-63.54 606.31,-52.47 595.15,-42.71"/>
<polygon fill="black" stroke="black" points="597.58,-40.18 587.75,-36.23 592.97,-45.44 597.58,-40.18"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge21" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M683.13,-73.46C706.43,-63.14 737.22,-49.5 762.16,-38.45"/>
<polygon fill="black" stroke="black" points="763.34,-41.76 771.06,-34.51 760.5,-35.36 763.34,-41.76"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1108pt" height="332pt" viewBox="0.00 0.00 1107.53 332.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 1103.53,-328 1103.53,4 -4,4"/>
<g id="node1" class="node">
<title>:feature:search</title>
<ellipse fill="none" stroke="black" cx="258.06" cy="-306" rx="67.87" ry="18"/>
<text text-anchor="middle" x="258.06" y="-301.8" font-family="Times,serif" font-size="14.00">:feature:search</text>
</g>
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-234" rx="40.53" ry="18"/>
<text text-anchor="middle" x="198.06" y="-229.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge1" class="edge">
<title>:feature:search-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M243.53,-288.05C236.28,-279.59 227.36,-269.19 219.35,-259.84"/>
<polygon fill="black" stroke="black" points="222.19,-257.77 213.02,-252.46 216.87,-262.33 222.19,-257.77"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-162" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:feature:search-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M217.55,-291.22C195.42,-282.35 168.45,-269.25 148.06,-252 127.69,-234.78 110.66,-209.55 99.46,-190.35"/>
<polygon fill="black" stroke="black" points="102.55,-188.71 94.6,-181.71 96.45,-192.14 102.55,-188.71"/>
</g>
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="585.06" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="585.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge3" class="edge">
<title>:feature:search-&gt;:core:data</title>
<path fill="none" stroke="black" d="M295.23,-290.61C321.78,-280.2 358.28,-265.62 390.06,-252 444.42,-228.7 506.44,-200.03 545.66,-181.63"/>
<polygon fill="black" stroke="black" points="546.91,-184.91 554.47,-177.49 543.94,-178.57 546.91,-184.91"/>
</g>
<g id="node5" class="node">
<title>:core:domain</title>
<ellipse fill="none" stroke="black" cx="319.06" cy="-234" rx="61.99" ry="18"/>
<text text-anchor="middle" x="319.06" y="-229.8" font-family="Times,serif" font-size="14.00">:core:domain</text>
</g>
<g id="edge4" class="edge">
<title>:feature:search-&gt;:core:domain</title>
<path fill="none" stroke="red" stroke-width="2" d="M272.82,-288.05C280.09,-279.71 289,-269.49 297.05,-260.25"/>
<polygon fill="red" stroke="red" stroke-width="2" points="298.51,-263.91 302.44,-254.07 293.23,-259.31 298.51,-263.91"/>
</g>
<g id="edge6" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.19,-218.83C159.63,-209.19 138.71,-196.24 120.95,-185.23"/>
<polygon fill="black" stroke="black" points="123.09,-182.44 112.74,-180.15 119.4,-188.39 123.09,-182.44"/>
</g>
<g id="node6" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="350.06" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="350.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge5" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M214.9,-217.26C241.33,-192.58 292.72,-144.57 323.96,-115.38"/>
<polygon fill="black" stroke="black" points="326.17,-118.1 331.09,-108.72 321.39,-112.99 326.17,-118.1"/>
</g>
<g id="node7" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="585.06" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="585.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge7" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M198.92,-215.71C201.6,-182.26 212.51,-108.76 257.06,-72 295.71,-40.1 433.01,-27.09 517.23,-22.02"/>
<polygon fill="black" stroke="black" points="517.2,-25.53 526.98,-21.46 516.79,-18.54 517.2,-25.53"/>
</g>
<g id="edge12" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M547.82,-149.91C509.28,-138.43 448.68,-120.38 404.71,-107.28"/>
<polygon fill="black" stroke="black" points="405.95,-104 395.37,-104.5 403.95,-110.71 405.95,-104"/>
</g>
<g id="node8" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="832.06" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="832.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M633.67,-159.18C749.06,-154.36 1031.95,-139.42 1060.06,-108 1070.73,-96.08 1070.01,-84.53 1060.06,-72 1058.73,-70.32 960.24,-47.86 893.16,-32.72"/>
<polygon fill="black" stroke="black" points="894.27,-29.39 883.74,-30.6 892.73,-36.22 894.27,-29.39"/>
</g>
<g id="node9" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="502.06" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="502.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge9" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M566.22,-145.12C555.63,-136.18 542.19,-124.85 530.35,-114.86"/>
<polygon fill="red" stroke="red" stroke-width="2" points="533.9,-113.27 524,-109.5 529.38,-118.63 533.9,-113.27"/>
</g>
<g id="node10" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="983.06" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="983.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge10" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M630.12,-154.34C692.34,-144.97 808.03,-126.9 906.06,-108 911.25,-107 916.62,-105.91 922,-104.79"/>
<polygon fill="black" stroke="black" points="922.48,-108.27 931.54,-102.77 921.03,-101.42 922.48,-108.27"/>
</g>
<g id="node11" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="832.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="832.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge11" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M623.11,-150.22C664.33,-138.53 730.45,-119.8 777.26,-106.53"/>
<polygon fill="black" stroke="black" points="778,-109.96 786.67,-103.86 776.09,-103.22 778,-109.96"/>
</g>
<g id="node12" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="668.06" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="668.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge13" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M603.89,-145.12C614.41,-136.24 627.73,-125.01 639.51,-115.08"/>
<polygon fill="black" stroke="black" points="641.6,-117.9 646.98,-108.77 637.08,-112.54 641.6,-117.9"/>
</g>
<g id="edge22" class="edge">
<title>:core:domain-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M363.88,-221.2C411.27,-208.73 485.84,-189.11 535.1,-176.15"/>
<polygon fill="red" stroke="red" stroke-width="2" points="534.41,-179.95 543.19,-174.02 532.63,-173.18 534.41,-179.95"/>
</g>
<g id="edge23" class="edge">
<title>:core:domain-&gt;:core:model</title>
<path fill="none" stroke="black" d="M305.66,-216.32C281.85,-184.58 237.93,-114.81 274.06,-72 304.43,-36.01 434.35,-24.46 516.36,-20.75"/>
<polygon fill="black" stroke="black" points="516.49,-24.25 526.33,-20.33 516.19,-17.25 516.49,-24.25"/>
</g>
<g id="edge14" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M521.73,-72.41C532.35,-63.45 545.63,-52.25 557.29,-42.42"/>
<polygon fill="red" stroke="red" stroke-width="2" points="558.11,-46.3 563.5,-37.18 553.6,-40.95 558.11,-46.3"/>
</g>
<g id="edge16" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M933.02,-77.54C924.06,-75.61 914.79,-73.68 906.06,-72 816.46,-54.73 712.11,-38.15 647.31,-28.27"/>
<polygon fill="black" stroke="black" points="647.99,-24.83 637.57,-26.79 646.94,-31.75 647.99,-24.83"/>
</g>
<g id="edge17" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M950.29,-73.81C928.23,-63.58 898.91,-49.99 874.98,-38.9"/>
<polygon fill="black" stroke="black" points="876.68,-35.83 866.13,-34.8 873.73,-42.18 876.68,-35.83"/>
</g>
<g id="node13" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="1008.06" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="1008.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge15" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M989.24,-71.7C991.93,-64.15 995.16,-55.12 998.17,-46.68"/>
<polygon fill="black" stroke="black" points="1001.37,-48.12 1001.44,-37.53 994.78,-45.77 1001.37,-48.12"/>
</g>
<g id="edge19" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M787.9,-76.49C745.68,-64.52 682.02,-46.48 637.31,-33.81"/>
<polygon fill="black" stroke="black" points="638.4,-30.48 627.83,-31.12 636.49,-37.21 638.4,-30.48"/>
</g>
<g id="edge18" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M832.06,-71.7C832.06,-64.41 832.06,-55.73 832.06,-47.54"/>
<polygon fill="black" stroke="black" points="835.56,-47.62 832.06,-37.62 828.56,-47.62 835.56,-47.62"/>
</g>
<g id="edge20" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M648.39,-72.41C637.77,-63.45 624.48,-52.25 612.83,-42.42"/>
<polygon fill="black" stroke="black" points="615.36,-39.98 605.46,-36.2 610.84,-45.33 615.36,-39.98"/>
</g>
<g id="edge21" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M704.45,-73.46C728.84,-63.06 761.11,-49.28 787.1,-38.19"/>
<polygon fill="black" stroke="black" points="788.23,-41.51 796.05,-34.37 785.48,-35.07 788.23,-41.51"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@ -1,205 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1028pt" height="260pt"
viewBox="0.00 0.00 1027.75 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1023.75,-256 1023.75,4 -4,4"/>
<!-- :feature:settings -->
<g id="node1" class="node">
<title>:feature:settings</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-234" rx="69.78" ry="18"/>
<text text-anchor="middle" x="192.06" y="-228.95" font-family="Times,serif" font-size="14.00">:feature:settings</text>
</g>
<!-- :core:ui -->
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-162" rx="39.07" ry="18"/>
<text text-anchor="middle" x="192.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :feature:settings&#45;&gt;:core:ui -->
<g id="edge1" class="edge">
<title>:feature:settings&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M192.06,-215.7C192.06,-208.41 192.06,-199.73 192.06,-191.54"/>
<polygon fill="black" stroke="black" points="195.56,-191.62 192.06,-181.62 188.56,-191.62 195.56,-191.62"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-90" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :feature:settings&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:feature:settings&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.93,-216.3C166.33,-206.1 154.11,-192.63 144.06,-180 128.01,-159.83 111.39,-135.78 99.41,-117.77"/>
<polygon fill="black" stroke="black" points="102.35,-115.88 93.93,-109.46 96.51,-119.73 102.35,-115.88"/>
</g>
<!-- :core:data -->
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="591.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :feature:settings&#45;&gt;:core:data -->
<g id="edge3" class="edge">
<title>:feature:settings&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M248.38,-223.12C325.31,-209.62 462.27,-185.59 537.65,-172.37"/>
<polygon fill="red" stroke="red" stroke-width="2" points="536.53,-176.12 545.77,-170.95 535.32,-169.23 536.53,-176.12"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge5" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M169.8,-146.83C154.65,-137.19 134.29,-124.24 117,-113.23"/>
<polygon fill="black" stroke="black" points="119.35,-110.58 109.04,-108.17 115.59,-116.49 119.35,-110.58"/>
</g>
<!-- :core:analytics -->
<g id="node5" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="285.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="285.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge4" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M211.78,-146.15C224.2,-136.81 240.49,-124.54 254.56,-113.96"/>
<polygon fill="black" stroke="black" points="256.32,-117.01 262.21,-108.2 252.11,-111.42 256.32,-117.01"/>
</g>
<!-- :core:model -->
<g id="node6" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="591.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge6" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M190.4,-143.81C189.47,-123.54 191.4,-90.3 211.06,-72 255.22,-30.9 427.13,-21.43 523.91,-19.4"/>
<polygon fill="black" stroke="black" points="523.87,-22.9 533.81,-19.22 523.74,-15.9 523.87,-22.9"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge11" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M551.05,-151.97C504.63,-141.47 425.78,-123.59 358.06,-108 353.57,-106.97 348.92,-105.89 344.24,-104.81"/>
<polygon fill="black" stroke="black" points="345.36,-101.48 334.82,-102.62 343.78,-108.29 345.36,-101.48"/>
</g>
<!-- :core:common -->
<g id="node7" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="755.06" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="755.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M636.86,-157.02C697,-150.74 797.62,-136.23 820.06,-108 830.02,-95.48 826.92,-86.45 820.06,-72 814.21,-59.69 803.96,-49.3 793.29,-41.07"/>
<polygon fill="black" stroke="black" points="795.33,-38.22 785.15,-35.27 791.27,-43.92 795.33,-38.22"/>
</g>
<!-- :core:database -->
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="431.06" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="431.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M560.97,-147.83C536.75,-137.24 502.38,-122.2 475.07,-110.26"/>
<polygon fill="red" stroke="red" stroke-width="2" points="477.95,-107.7 467.39,-106.89 475.15,-114.11 477.95,-107.7"/>
</g>
<!-- :core:datastore -->
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="932.06" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="932.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge9" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M632.39,-152.8C684.04,-142.52 775.15,-124.26 853.06,-108 858.9,-106.78 864.97,-105.5 871.05,-104.21"/>
<polygon fill="black" stroke="black" points="871.4,-107.71 880.45,-102.2 869.94,-100.87 871.4,-107.71"/>
</g>
<!-- :core:network -->
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="749.06" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="749.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge10" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M621.15,-147.67C645.1,-137.06 678.94,-122.07 705.79,-110.17"/>
<polygon fill="black" stroke="black" points="706.97,-113.47 714.7,-106.22 704.14,-107.07 706.97,-113.47"/>
</g>
<!-- :core:notifications -->
<g id="node11" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="591.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge12" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M591.06,-143.7C591.06,-136.41 591.06,-127.73 591.06,-119.54"/>
<polygon fill="black" stroke="black" points="594.56,-119.62 591.06,-109.62 587.56,-119.62 594.56,-119.62"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge13" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M464.6,-74.33C489,-63.65 522.23,-49.11 548.51,-37.62"/>
<polygon fill="red" stroke="red" stroke-width="2" points="548.4,-41.49 556.15,-34.27 545.59,-35.07 548.4,-41.49"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge15" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M881.01,-78.52C818.61,-65.71 713.32,-44.1 648.25,-30.74"/>
<polygon fill="black" stroke="black" points="648.97,-27.31 638.47,-28.73 647.56,-34.17 648.97,-27.31"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge16" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M895.81,-74.67C868.61,-63.91 831.14,-49.09 801.71,-37.45"/>
<polygon fill="black" stroke="black" points="803.25,-34.29 792.66,-33.87 800.68,-40.8 803.25,-34.29"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node12" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="932.06" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="932.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge14" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M932.06,-71.7C932.06,-64.41 932.06,-55.73 932.06,-47.54"/>
<polygon fill="black" stroke="black" points="935.56,-47.62 932.06,-37.62 928.56,-47.62 935.56,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge18" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M715.94,-74.33C691.84,-63.65 659.03,-49.11 633.08,-37.62"/>
<polygon fill="black" stroke="black" points="634.74,-34.52 624.17,-33.67 631.9,-40.92 634.74,-34.52"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge17" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M750.54,-71.7C751.17,-64.41 751.91,-55.73 752.61,-47.54"/>
<polygon fill="black" stroke="black" points="756.1,-47.87 753.46,-37.61 749.12,-47.28 756.1,-47.87"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge19" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M591.06,-71.7C591.06,-64.41 591.06,-55.73 591.06,-47.54"/>
<polygon fill="black" stroke="black" points="594.56,-47.62 591.06,-37.62 587.56,-47.62 594.56,-47.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge20" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M627.05,-73.64C651.5,-63.2 684.01,-49.33 710.15,-38.17"/>
<polygon fill="black" stroke="black" points="711.34,-41.47 719.17,-34.32 708.59,-35.03 711.34,-41.47"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1064pt" height="260pt" viewBox="0.00 0.00 1063.53 260.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1059.53,-256 1059.53,4 -4,4"/>
<g id="node1" class="node">
<title>:feature:settings</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-234" rx="72.71" ry="18"/>
<text text-anchor="middle" x="198.06" y="-229.8" font-family="Times,serif" font-size="14.00">:feature:settings</text>
</g>
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-162" rx="40.53" ry="18"/>
<text text-anchor="middle" x="198.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge1" class="edge">
<title>:feature:settings-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M198.06,-215.7C198.06,-208.41 198.06,-199.73 198.06,-191.54"/>
<polygon fill="black" stroke="black" points="201.56,-191.62 198.06,-181.62 194.56,-191.62 201.56,-191.62"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-90" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:feature:settings-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M181.21,-216.37C171.21,-206.19 158.48,-192.72 148.06,-180 131.56,-159.86 114.61,-135.67 102.45,-117.6"/>
<polygon fill="black" stroke="black" points="105.52,-115.89 97.06,-109.51 99.69,-119.77 105.52,-115.89"/>
</g>
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="611.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge3" class="edge">
<title>:feature:settings-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M256.79,-223.05C336.6,-209.52 478.25,-185.51 556.07,-172.32"/>
<polygon fill="red" stroke="red" stroke-width="2" points="554.81,-176.08 564.09,-170.96 553.64,-169.18 554.81,-176.08"/>
</g>
<g id="edge5" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.19,-146.83C159.63,-137.19 138.71,-124.24 120.95,-113.23"/>
<polygon fill="black" stroke="black" points="123.09,-110.44 112.74,-108.15 119.4,-116.39 123.09,-110.44"/>
</g>
<g id="node5" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="293.06" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="293.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge4" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M218.2,-146.15C230.89,-136.81 247.53,-124.54 261.9,-113.96"/>
<polygon fill="black" stroke="black" points="263.76,-116.94 269.73,-108.19 259.6,-111.3 263.76,-116.94"/>
</g>
<g id="node6" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="611.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge6" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M196.38,-143.8C195.44,-123.51 197.35,-90.25 217.06,-72 263.07,-29.38 442.34,-20.56 542.46,-19.03"/>
<polygon fill="black" stroke="black" points="542.2,-22.54 552.15,-18.91 542.11,-15.54 542.2,-22.54"/>
</g>
<g id="edge11" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M569.69,-151.91C521.68,-141.37 440.13,-123.44 370.06,-108 364.98,-106.88 359.71,-105.72 354.42,-104.55"/>
<polygon fill="black" stroke="black" points="355.58,-101.23 345.07,-102.49 354.08,-108.06 355.58,-101.23"/>
</g>
<g id="node7" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="781.06" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="781.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M658.9,-157.27C721.41,-151.3 825.69,-137.15 849.06,-108 859.07,-95.52 856.08,-86.38 849.06,-72 842.9,-59.39 832.13,-48.91 820.96,-40.69"/>
<polygon fill="black" stroke="black" points="823.06,-37.88 812.82,-35.17 819.13,-43.68 823.06,-37.88"/>
</g>
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="445.06" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="445.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M579.83,-147.83C554.6,-137.19 518.74,-122.07 490.35,-110.1"/>
<polygon fill="red" stroke="red" stroke-width="2" points="493.23,-107.52 482.66,-106.86 490.51,-113.97 493.23,-107.52"/>
</g>
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="964.06" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="964.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge9" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M653.8,-152.8C707.23,-142.5 801.46,-124.24 882.06,-108 888.27,-106.75 894.74,-105.43 901.2,-104.11"/>
<polygon fill="black" stroke="black" points="901.45,-107.63 910.54,-102.19 900.04,-100.77 901.45,-107.63"/>
</g>
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="775.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="775.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge10" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M642.29,-147.67C667.26,-137.01 702.58,-121.93 730.52,-110.01"/>
<polygon fill="black" stroke="black" points="731.61,-113.35 739.43,-106.2 728.86,-106.91 731.61,-113.35"/>
</g>
<g id="node11" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="611.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge12" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M611.06,-143.7C611.06,-136.41 611.06,-127.73 611.06,-119.54"/>
<polygon fill="black" stroke="black" points="614.56,-119.62 611.06,-109.62 607.56,-119.62 614.56,-119.62"/>
</g>
<g id="edge13" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M479.86,-74.33C505.29,-63.6 539.96,-48.98 567.27,-37.46"/>
<polygon fill="red" stroke="red" stroke-width="2" points="567.08,-41.34 574.93,-34.23 564.36,-34.89 567.08,-41.34"/>
</g>
<g id="edge15" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M910.83,-78.44C846.01,-65.59 736.89,-43.95 669.71,-30.63"/>
<polygon fill="black" stroke="black" points="670.46,-27.21 659.97,-28.7 669.1,-34.08 670.46,-27.21"/>
</g>
<g id="edge16" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M926.58,-74.67C898.33,-63.86 859.38,-48.96 828.88,-37.29"/>
<polygon fill="black" stroke="black" points="830.49,-34.16 819.9,-33.86 827.98,-40.7 830.49,-34.16"/>
</g>
<g id="node12" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="964.06" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="964.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge14" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M964.06,-71.7C964.06,-64.41 964.06,-55.73 964.06,-47.54"/>
<polygon fill="black" stroke="black" points="967.56,-47.62 964.06,-37.62 960.56,-47.62 967.56,-47.62"/>
</g>
<g id="edge18" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M740.68,-74.33C715.55,-63.6 681.3,-48.98 654.32,-37.46"/>
<polygon fill="black" stroke="black" points="655.96,-34.36 645.39,-33.65 653.21,-40.8 655.96,-34.36"/>
</g>
<g id="edge17" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M776.54,-71.7C777.17,-64.41 777.91,-55.73 778.61,-47.54"/>
<polygon fill="black" stroke="black" points="782.1,-47.87 779.46,-37.61 775.12,-47.28 782.1,-47.87"/>
</g>
<g id="edge19" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M611.06,-71.7C611.06,-64.41 611.06,-55.73 611.06,-47.54"/>
<polygon fill="black" stroke="black" points="614.56,-47.62 611.06,-37.62 607.56,-47.62 614.56,-47.62"/>
</g>
<g id="edge20" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M648.36,-73.64C673.9,-63.12 707.94,-49.11 735.14,-37.91"/>
<polygon fill="black" stroke="black" points="736.27,-41.23 744.18,-34.18 733.6,-34.76 736.27,-41.23"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@ -1,205 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="1028pt" height="260pt"
viewBox="0.00 0.00 1027.75 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1023.75,-256 1023.75,4 -4,4"/>
<!-- :feature:topic -->
<g id="node1" class="node">
<title>:feature:topic</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-234" rx="60.05" ry="18"/>
<text text-anchor="middle" x="192.06" y="-228.95" font-family="Times,serif" font-size="14.00">:feature:topic</text>
</g>
<!-- :core:ui -->
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="192.06" cy="-162" rx="39.07" ry="18"/>
<text text-anchor="middle" x="192.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<!-- :feature:topic&#45;&gt;:core:ui -->
<g id="edge1" class="edge">
<title>:feature:topic&#45;&gt;:core:ui</title>
<path fill="none" stroke="black" d="M192.06,-215.7C192.06,-208.41 192.06,-199.73 192.06,-191.54"/>
<polygon fill="black" stroke="black" points="195.56,-191.62 192.06,-181.62 188.56,-191.62 195.56,-191.62"/>
</g>
<!-- :core:designsystem -->
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="82.06" cy="-90" rx="82.06" ry="18"/>
<text text-anchor="middle" x="82.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<!-- :feature:topic&#45;&gt;:core:designsystem -->
<g id="edge2" class="edge">
<title>:feature:topic&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.93,-216.3C166.33,-206.1 154.11,-192.63 144.06,-180 128.01,-159.83 111.39,-135.78 99.41,-117.77"/>
<polygon fill="black" stroke="black" points="102.35,-115.88 93.93,-109.46 96.51,-119.73 102.35,-115.88"/>
</g>
<!-- :core:data -->
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="591.06" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :feature:topic&#45;&gt;:core:data -->
<g id="edge3" class="edge">
<title>:feature:topic&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M243,-224.06C318.79,-210.77 460.58,-185.89 537.73,-172.36"/>
<polygon fill="red" stroke="red" stroke-width="2" points="536.4,-176.14 545.65,-170.97 535.19,-169.25 536.4,-176.14"/>
</g>
<!-- :core:ui&#45;&gt;:core:designsystem -->
<g id="edge5" class="edge">
<title>:core:ui&#45;&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M169.8,-146.83C154.65,-137.19 134.29,-124.24 117,-113.23"/>
<polygon fill="black" stroke="black" points="119.35,-110.58 109.04,-108.17 115.59,-116.49 119.35,-110.58"/>
</g>
<!-- :core:analytics -->
<g id="node5" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="285.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="285.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:ui&#45;&gt;:core:analytics -->
<g id="edge4" class="edge">
<title>:core:ui&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M211.78,-146.15C224.2,-136.81 240.49,-124.54 254.56,-113.96"/>
<polygon fill="black" stroke="black" points="256.32,-117.01 262.21,-108.2 252.11,-111.42 256.32,-117.01"/>
</g>
<!-- :core:model -->
<g id="node6" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="591.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:ui&#45;&gt;:core:model -->
<g id="edge6" class="edge">
<title>:core:ui&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M190.4,-143.81C189.47,-123.54 191.4,-90.3 211.06,-72 255.22,-30.9 427.13,-21.43 523.91,-19.4"/>
<polygon fill="black" stroke="black" points="523.87,-22.9 533.81,-19.22 523.74,-15.9 523.87,-22.9"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge11" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M551.05,-151.97C504.63,-141.47 425.78,-123.59 358.06,-108 353.57,-106.97 348.92,-105.89 344.24,-104.81"/>
<polygon fill="black" stroke="black" points="345.36,-101.48 334.82,-102.62 343.78,-108.29 345.36,-101.48"/>
</g>
<!-- :core:common -->
<g id="node7" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="755.06" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="755.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M636.86,-157.02C697,-150.74 797.62,-136.23 820.06,-108 830.02,-95.48 826.92,-86.45 820.06,-72 814.21,-59.69 803.96,-49.3 793.29,-41.07"/>
<polygon fill="black" stroke="black" points="795.33,-38.22 785.15,-35.27 791.27,-43.92 795.33,-38.22"/>
</g>
<!-- :core:database -->
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="431.06" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="431.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M560.97,-147.83C536.75,-137.24 502.38,-122.2 475.07,-110.26"/>
<polygon fill="red" stroke="red" stroke-width="2" points="477.95,-107.7 467.39,-106.89 475.15,-114.11 477.95,-107.7"/>
</g>
<!-- :core:datastore -->
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="932.06" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="932.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge9" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M632.39,-152.8C684.04,-142.52 775.15,-124.26 853.06,-108 858.9,-106.78 864.97,-105.5 871.05,-104.21"/>
<polygon fill="black" stroke="black" points="871.4,-107.71 880.45,-102.2 869.94,-100.87 871.4,-107.71"/>
</g>
<!-- :core:network -->
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="749.06" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="749.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge10" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M621.15,-147.67C645.1,-137.06 678.94,-122.07 705.79,-110.17"/>
<polygon fill="black" stroke="black" points="706.97,-113.47 714.7,-106.22 704.14,-107.07 706.97,-113.47"/>
</g>
<!-- :core:notifications -->
<g id="node11" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="591.06" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="591.06" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge12" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M591.06,-143.7C591.06,-136.41 591.06,-127.73 591.06,-119.54"/>
<polygon fill="black" stroke="black" points="594.56,-119.62 591.06,-109.62 587.56,-119.62 594.56,-119.62"/>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge13" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M464.6,-74.33C489,-63.65 522.23,-49.11 548.51,-37.62"/>
<polygon fill="red" stroke="red" stroke-width="2" points="548.4,-41.49 556.15,-34.27 545.59,-35.07 548.4,-41.49"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge15" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M881.01,-78.52C818.61,-65.71 713.32,-44.1 648.25,-30.74"/>
<polygon fill="black" stroke="black" points="648.97,-27.31 638.47,-28.73 647.56,-34.17 648.97,-27.31"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge16" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M895.81,-74.67C868.61,-63.91 831.14,-49.09 801.71,-37.45"/>
<polygon fill="black" stroke="black" points="803.25,-34.29 792.66,-33.87 800.68,-40.8 803.25,-34.29"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node12" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="932.06" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="932.06" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge14" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M932.06,-71.7C932.06,-64.41 932.06,-55.73 932.06,-47.54"/>
<polygon fill="black" stroke="black" points="935.56,-47.62 932.06,-37.62 928.56,-47.62 935.56,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge18" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M715.94,-74.33C691.84,-63.65 659.03,-49.11 633.08,-37.62"/>
<polygon fill="black" stroke="black" points="634.74,-34.52 624.17,-33.67 631.9,-40.92 634.74,-34.52"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge17" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M750.54,-71.7C751.17,-64.41 751.91,-55.73 752.61,-47.54"/>
<polygon fill="black" stroke="black" points="756.1,-47.87 753.46,-37.61 749.12,-47.28 756.1,-47.87"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge19" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M591.06,-71.7C591.06,-64.41 591.06,-55.73 591.06,-47.54"/>
<polygon fill="black" stroke="black" points="594.56,-47.62 591.06,-37.62 587.56,-47.62 594.56,-47.62"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge20" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M627.05,-73.64C651.5,-63.2 684.01,-49.33 710.15,-38.17"/>
<polygon fill="black" stroke="black" points="711.34,-41.47 719.17,-34.32 708.59,-35.03 711.34,-41.47"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1064pt" height="260pt" viewBox="0.00 0.00 1063.53 260.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1059.53,-256 1059.53,4 -4,4"/>
<g id="node1" class="node">
<title>:feature:topic</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-234" rx="62.51" ry="18"/>
<text text-anchor="middle" x="198.06" y="-229.8" font-family="Times,serif" font-size="14.00">:feature:topic</text>
</g>
<g id="node2" class="node">
<title>:core:ui</title>
<ellipse fill="none" stroke="black" cx="198.06" cy="-162" rx="40.53" ry="18"/>
<text text-anchor="middle" x="198.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:ui</text>
</g>
<g id="edge1" class="edge">
<title>:feature:topic-&gt;:core:ui</title>
<path fill="none" stroke="black" d="M198.06,-215.7C198.06,-208.41 198.06,-199.73 198.06,-191.54"/>
<polygon fill="black" stroke="black" points="201.56,-191.62 198.06,-181.62 194.56,-191.62 201.56,-191.62"/>
</g>
<g id="node3" class="node">
<title>:core:designsystem</title>
<ellipse fill="none" stroke="black" cx="85.06" cy="-90" rx="85.06" ry="18"/>
<text text-anchor="middle" x="85.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:designsystem</text>
</g>
<g id="edge2" class="edge">
<title>:feature:topic-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M181.21,-216.37C171.21,-206.19 158.48,-192.72 148.06,-180 131.56,-159.86 114.61,-135.67 102.45,-117.6"/>
<polygon fill="black" stroke="black" points="105.52,-115.89 97.06,-109.51 99.69,-119.77 105.52,-115.89"/>
</g>
<g id="node4" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="611.06" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge3" class="edge">
<title>:feature:topic-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M250.78,-224.06C329.23,-210.77 476,-185.89 555.86,-172.36"/>
<polygon fill="red" stroke="red" stroke-width="2" points="554.88,-176.07 564.15,-170.95 553.71,-169.17 554.88,-176.07"/>
</g>
<g id="edge5" class="edge">
<title>:core:ui-&gt;:core:designsystem</title>
<path fill="none" stroke="black" d="M175.19,-146.83C159.63,-137.19 138.71,-124.24 120.95,-113.23"/>
<polygon fill="black" stroke="black" points="123.09,-110.44 112.74,-108.15 119.4,-116.39 123.09,-110.44"/>
</g>
<g id="node5" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="293.06" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="293.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge4" class="edge">
<title>:core:ui-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M218.2,-146.15C230.89,-136.81 247.53,-124.54 261.9,-113.96"/>
<polygon fill="black" stroke="black" points="263.76,-116.94 269.73,-108.19 259.6,-111.3 263.76,-116.94"/>
</g>
<g id="node6" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="611.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge6" class="edge">
<title>:core:ui-&gt;:core:model</title>
<path fill="none" stroke="black" d="M196.38,-143.8C195.44,-123.51 197.35,-90.25 217.06,-72 263.07,-29.38 442.34,-20.56 542.46,-19.03"/>
<polygon fill="black" stroke="black" points="542.2,-22.54 552.15,-18.91 542.11,-15.54 542.2,-22.54"/>
</g>
<g id="edge11" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M569.69,-151.91C521.68,-141.37 440.13,-123.44 370.06,-108 364.98,-106.88 359.71,-105.72 354.42,-104.55"/>
<polygon fill="black" stroke="black" points="355.58,-101.23 345.07,-102.49 354.08,-108.06 355.58,-101.23"/>
</g>
<g id="node7" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="781.06" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="781.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M658.9,-157.27C721.41,-151.3 825.69,-137.15 849.06,-108 859.07,-95.52 856.08,-86.38 849.06,-72 842.9,-59.39 832.13,-48.91 820.96,-40.69"/>
<polygon fill="black" stroke="black" points="823.06,-37.88 812.82,-35.17 819.13,-43.68 823.06,-37.88"/>
</g>
<g id="node8" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="445.06" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="445.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M579.83,-147.83C554.6,-137.19 518.74,-122.07 490.35,-110.1"/>
<polygon fill="red" stroke="red" stroke-width="2" points="493.23,-107.52 482.66,-106.86 490.51,-113.97 493.23,-107.52"/>
</g>
<g id="node9" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="964.06" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="964.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge9" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M653.8,-152.8C707.23,-142.5 801.46,-124.24 882.06,-108 888.27,-106.75 894.74,-105.43 901.2,-104.11"/>
<polygon fill="black" stroke="black" points="901.45,-107.63 910.54,-102.19 900.04,-100.77 901.45,-107.63"/>
</g>
<g id="node10" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="775.06" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="775.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge10" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M642.29,-147.67C667.26,-137.01 702.58,-121.93 730.52,-110.01"/>
<polygon fill="black" stroke="black" points="731.61,-113.35 739.43,-106.2 728.86,-106.91 731.61,-113.35"/>
</g>
<g id="node11" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="611.06" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="611.06" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge12" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M611.06,-143.7C611.06,-136.41 611.06,-127.73 611.06,-119.54"/>
<polygon fill="black" stroke="black" points="614.56,-119.62 611.06,-109.62 607.56,-119.62 614.56,-119.62"/>
</g>
<g id="edge13" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M479.86,-74.33C505.29,-63.6 539.96,-48.98 567.27,-37.46"/>
<polygon fill="red" stroke="red" stroke-width="2" points="567.08,-41.34 574.93,-34.23 564.36,-34.89 567.08,-41.34"/>
</g>
<g id="edge15" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M910.83,-78.44C846.01,-65.59 736.89,-43.95 669.71,-30.63"/>
<polygon fill="black" stroke="black" points="670.46,-27.21 659.97,-28.7 669.1,-34.08 670.46,-27.21"/>
</g>
<g id="edge16" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M926.58,-74.67C898.33,-63.86 859.38,-48.96 828.88,-37.29"/>
<polygon fill="black" stroke="black" points="830.49,-34.16 819.9,-33.86 827.98,-40.7 830.49,-34.16"/>
</g>
<g id="node12" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="964.06" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="964.06" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge14" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M964.06,-71.7C964.06,-64.41 964.06,-55.73 964.06,-47.54"/>
<polygon fill="black" stroke="black" points="967.56,-47.62 964.06,-37.62 960.56,-47.62 967.56,-47.62"/>
</g>
<g id="edge18" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M740.68,-74.33C715.55,-63.6 681.3,-48.98 654.32,-37.46"/>
<polygon fill="black" stroke="black" points="655.96,-34.36 645.39,-33.65 653.21,-40.8 655.96,-34.36"/>
</g>
<g id="edge17" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M776.54,-71.7C777.17,-64.41 777.91,-55.73 778.61,-47.54"/>
<polygon fill="black" stroke="black" points="782.1,-47.87 779.46,-37.61 775.12,-47.28 782.1,-47.87"/>
</g>
<g id="edge19" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M611.06,-71.7C611.06,-64.41 611.06,-55.73 611.06,-47.54"/>
<polygon fill="black" stroke="black" points="614.56,-47.62 611.06,-37.62 607.56,-47.62 614.56,-47.62"/>
</g>
<g id="edge20" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M648.36,-73.64C673.9,-63.12 707.94,-49.11 735.14,-37.91"/>
<polygon fill="black" stroke="black" points="736.27,-41.23 744.18,-34.18 733.6,-34.76 736.27,-41.23"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@ -1,187 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="763pt" height="332pt"
viewBox="0.00 0.00 762.64 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 758.64,-328 758.64,4 -4,4"/>
<!-- :sync:sync&#45;test -->
<g id="node1" class="node">
<title>:sync:sync&#45;test</title>
<ellipse fill="none" stroke="black" cx="436.98" cy="-306" rx="65.68" ry="18"/>
<text text-anchor="middle" x="436.98" y="-300.95" font-family="Times,serif" font-size="14.00">:sync:sync&#45;test</text>
</g>
<!-- :core:data -->
<g id="node2" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="396.98" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="396.98" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :sync:sync&#45;test&#45;&gt;:core:data -->
<g id="edge1" class="edge">
<title>:sync:sync&#45;test&#45;&gt;:core:data</title>
<path fill="none" stroke="black" d="M429.44,-288.07C425.07,-277.79 419.71,-264.32 415.98,-252 409.96,-232.09 405.11,-209.13 401.81,-191.51"/>
<polygon fill="black" stroke="black" points="405.28,-190.99 400.06,-181.77 398.39,-192.23 405.28,-190.99"/>
</g>
<!-- :sync:work -->
<g id="node3" class="node">
<title>:sync:work</title>
<ellipse fill="none" stroke="black" cx="476.98" cy="-234" rx="51.86" ry="18"/>
<text text-anchor="middle" x="476.98" y="-228.95" font-family="Times,serif" font-size="14.00">:sync:work</text>
</g>
<!-- :sync:sync&#45;test&#45;&gt;:sync:work -->
<g id="edge2" class="edge">
<title>:sync:sync&#45;test&#45;&gt;:sync:work</title>
<path fill="none" stroke="red" stroke-width="2" d="M446.67,-288.05C451.19,-280.14 456.67,-270.54 461.73,-261.69"/>
<polygon fill="red" stroke="red" stroke-width="2" points="463.96,-264.84 465.89,-254.42 457.89,-261.36 463.96,-264.84"/>
</g>
<!-- :core:common -->
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="87.98" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="87.98" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge3" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M350.54,-158.07C252.04,-151.38 29.32,-133.57 6.98,-108 -3.54,-95.95 -0.63,-86.07 6.98,-72 14.64,-57.84 27.9,-46.86 41.5,-38.66"/>
<polygon fill="black" stroke="black" points="43.02,-41.82 50.07,-33.91 39.62,-35.7 43.02,-41.82"/>
</g>
<!-- :core:database -->
<g id="node5" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="543.98" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="543.98" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge4" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M425.67,-147.34C447.46,-136.96 477.74,-122.54 502.21,-110.89"/>
<polygon fill="red" stroke="red" stroke-width="2" points="502.05,-114.85 509.57,-107.39 499.04,-108.53 502.05,-114.85"/>
</g>
<!-- :core:datastore -->
<g id="node6" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="396.98" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="396.98" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge5" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M396.98,-143.7C396.98,-136.41 396.98,-127.73 396.98,-119.54"/>
<polygon fill="black" stroke="black" points="400.48,-119.62 396.98,-109.62 393.48,-119.62 400.48,-119.62"/>
</g>
<!-- :core:network -->
<g id="node7" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="77.98" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="77.98" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge6" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M356.1,-152.58C306.89,-142.38 221.77,-124.49 148.98,-108 144.66,-107.02 140.19,-105.99 135.69,-104.94"/>
<polygon fill="black" stroke="black" points="136.55,-101.55 126.01,-102.67 134.94,-108.36 136.55,-101.55"/>
</g>
<!-- :core:analytics -->
<g id="node8" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="689.98" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="689.98" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M436.19,-151.63C486.12,-139.7 572.84,-118.99 630.82,-105.13"/>
<polygon fill="black" stroke="black" points="631.63,-108.54 640.54,-102.81 630,-101.73 631.63,-108.54"/>
</g>
<!-- :core:notifications -->
<g id="node9" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="235.98" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="235.98" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M366.7,-147.83C342.82,-137.45 309.11,-122.8 281.91,-110.97"/>
<polygon fill="black" stroke="black" points="283.42,-107.81 272.85,-107.03 280.63,-114.23 283.42,-107.81"/>
</g>
<!-- :sync:work&#45;&gt;:core:data -->
<g id="edge18" class="edge">
<title>:sync:work&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M458.43,-216.76C448.06,-207.69 434.95,-196.22 423.51,-186.21"/>
<polygon fill="red" stroke="red" stroke-width="2" points="427.27,-184.85 417.44,-180.9 422.66,-190.12 427.27,-184.85"/>
</g>
<!-- :sync:work&#45;&gt;:core:analytics -->
<g id="edge17" class="edge">
<title>:sync:work&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M500.18,-217.53C537.97,-192.34 612.97,-142.34 656.52,-113.31"/>
<polygon fill="black" stroke="black" points="658.19,-116.4 664.57,-107.94 654.31,-110.57 658.19,-116.4"/>
</g>
<!-- :core:model -->
<g id="node10" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="235.98" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="235.98" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge9" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M496.11,-77.7C487.74,-75.77 479.11,-73.8 470.98,-72 395.16,-55.19 375.54,-53.98 299.98,-36 296.18,-35.09 292.25,-34.13 288.31,-33.14"/>
<polygon fill="red" stroke="red" stroke-width="2" points="290.7,-30.14 280.15,-31.04 288.96,-36.92 290.7,-30.14"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge12" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M348.03,-77.72C339.67,-75.81 331.08,-73.84 322.98,-72 263.71,-58.51 195.99,-43.25 148.52,-32.58"/>
<polygon fill="black" stroke="black" points="149.51,-29.22 138.99,-30.44 147.98,-36.05 149.51,-29.22"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge11" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M363.23,-74.33C338.68,-63.65 305.24,-49.11 278.8,-37.62"/>
<polygon fill="black" stroke="black" points="280.27,-34.44 269.7,-33.66 277.48,-40.86 280.27,-34.44"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node11" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="396.98" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="396.98" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge10" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M396.98,-71.7C396.98,-64.41 396.98,-55.73 396.98,-47.54"/>
<polygon fill="black" stroke="black" points="400.48,-47.62 396.98,-37.62 393.48,-47.62 400.48,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge13" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M80.45,-71.7C81.51,-64.32 82.76,-55.52 83.95,-47.25"/>
<polygon fill="black" stroke="black" points="87.38,-48 85.33,-37.6 80.45,-47.01 87.38,-48"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge14" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M111.1,-74.33C135.2,-63.65 168.02,-49.11 193.96,-37.62"/>
<polygon fill="black" stroke="black" points="195.14,-40.92 202.87,-33.67 192.31,-34.52 195.14,-40.92"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge16" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M202.77,-73.29C181.26,-63.12 153.07,-49.79 130.01,-38.88"/>
<polygon fill="black" stroke="black" points="131.72,-35.82 121.19,-34.7 128.73,-42.14 131.72,-35.82"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge15" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M235.98,-71.7C235.98,-64.41 235.98,-55.73 235.98,-47.54"/>
<polygon fill="black" stroke="black" points="239.48,-47.62 235.98,-37.62 232.48,-47.62 239.48,-47.62"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="791pt" height="332pt" viewBox="0.00 0.00 791.39 332.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-328 787.39,-328 787.39,4 -4,4"/>
<g id="node1" class="node">
<title>:sync:sync-test</title>
<ellipse fill="none" stroke="black" cx="453.04" cy="-306" rx="68.43" ry="18"/>
<text text-anchor="middle" x="453.04" y="-301.8" font-family="Times,serif" font-size="14.00">:sync:sync-test</text>
</g>
<g id="node2" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="412.04" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="412.04" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge1" class="edge">
<title>:sync:sync-test-&gt;:core:data</title>
<path fill="none" stroke="black" d="M444.89,-287.63C440.34,-277.43 434.84,-264.18 431.04,-252 424.86,-232.14 420.01,-209.18 416.76,-191.55"/>
<polygon fill="black" stroke="black" points="420.22,-191.03 415.03,-181.79 413.33,-192.25 420.22,-191.03"/>
</g>
<g id="node3" class="node">
<title>:sync:work</title>
<ellipse fill="none" stroke="black" cx="494.04" cy="-234" rx="53.95" ry="18"/>
<text text-anchor="middle" x="494.04" y="-229.8" font-family="Times,serif" font-size="14.00">:sync:work</text>
</g>
<g id="edge2" class="edge">
<title>:sync:sync-test-&gt;:sync:work</title>
<path fill="none" stroke="red" stroke-width="2" d="M462.97,-288.05C467.6,-280.14 473.23,-270.54 478.41,-261.69"/>
<polygon fill="red" stroke="red" stroke-width="2" points="480.65,-264.8 482.68,-254.4 474.61,-261.26 480.65,-264.8"/>
</g>
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="92.04" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="92.04" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge3" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M363.83,-158.21C261.55,-151.79 30.29,-134.48 7.04,-108 -3.51,-95.97 -0.72,-85.99 7.04,-72 15.13,-57.42 29.09,-46.33 43.38,-38.16"/>
<polygon fill="black" stroke="black" points="44.7,-41.42 51.91,-33.66 41.44,-35.22 44.7,-41.42"/>
</g>
<g id="node5" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="564.04" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="564.04" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge4" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M441.71,-147.34C464.24,-136.96 495.55,-122.54 520.85,-110.89"/>
<polygon fill="red" stroke="red" stroke-width="2" points="520.92,-114.71 528.54,-107.35 517.99,-108.35 520.92,-114.71"/>
</g>
<g id="node6" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="412.04" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="412.04" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge5" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M412.04,-143.7C412.04,-136.41 412.04,-127.73 412.04,-119.54"/>
<polygon fill="black" stroke="black" points="415.54,-119.62 412.04,-109.62 408.54,-119.62 415.54,-119.62"/>
</g>
<g id="node7" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="81.04" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="81.04" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge6" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M369.69,-152.57C318.7,-142.35 230.49,-124.44 155.04,-108 150.41,-106.99 145.61,-105.93 140.79,-104.85"/>
<polygon fill="black" stroke="black" points="141.57,-101.44 131.05,-102.65 140.03,-108.26 141.57,-101.44"/>
</g>
<g id="node8" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="716.04" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="716.04" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M452.73,-151.63C504.74,-139.66 595.25,-118.81 655.41,-104.96"/>
<polygon fill="black" stroke="black" points="655.84,-108.45 664.8,-102.8 654.27,-101.63 655.84,-108.45"/>
</g>
<g id="node9" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="245.04" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="245.04" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M380.63,-147.83C355.75,-137.4 320.59,-122.67 292.31,-110.81"/>
<polygon fill="black" stroke="black" points="293.82,-107.65 283.24,-107.01 291.11,-114.1 293.82,-107.65"/>
</g>
<g id="edge18" class="edge">
<title>:sync:work-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M475.03,-216.76C464.39,-207.69 450.96,-196.22 439.24,-186.21"/>
<polygon fill="red" stroke="red" stroke-width="2" points="442.86,-184.7 432.98,-180.87 438.31,-190.03 442.86,-184.7"/>
</g>
<g id="edge17" class="edge">
<title>:sync:work-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M518.22,-217.53C557.69,-192.29 636.1,-142.13 681.45,-113.13"/>
<polygon fill="black" stroke="black" points="683.06,-116.25 689.6,-107.92 679.29,-110.36 683.06,-116.25"/>
</g>
<g id="node10" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="245.04" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="245.04" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge9" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M514.86,-77.69C506.26,-75.76 497.4,-73.8 489.04,-72 410.56,-55.13 390.31,-53.88 312.04,-36 307.76,-35.02 303.32,-33.97 298.88,-32.9"/>
<polygon fill="red" stroke="red" stroke-width="2" points="301.35,-29.9 290.8,-30.91 299.67,-36.7 301.35,-29.9"/>
</g>
<g id="edge12" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M361.1,-77.73C352.41,-75.82 343.47,-73.85 335.04,-72 273.42,-58.48 202.98,-43.12 153.86,-32.44"/>
<polygon fill="black" stroke="black" points="154.78,-29.05 144.26,-30.35 153.29,-35.89 154.78,-29.05"/>
</g>
<g id="edge11" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M377.03,-74.33C351.37,-63.57 316.34,-48.89 288.82,-37.35"/>
<polygon fill="black" stroke="black" points="290.27,-34.16 279.7,-33.52 287.57,-40.62 290.27,-34.16"/>
</g>
<g id="node11" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="412.04" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="412.04" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge10" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M412.04,-71.7C412.04,-64.41 412.04,-55.73 412.04,-47.54"/>
<polygon fill="black" stroke="black" points="415.54,-47.62 412.04,-37.62 408.54,-47.62 415.54,-47.62"/>
</g>
<g id="edge13" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M83.76,-71.7C84.92,-64.32 86.3,-55.52 87.6,-47.25"/>
<polygon fill="black" stroke="black" points="91.03,-48.02 89.12,-37.6 84.11,-46.93 91.03,-48.02"/>
</g>
<g id="edge14" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M115.42,-74.33C140.55,-63.6 174.8,-48.98 201.78,-37.46"/>
<polygon fill="black" stroke="black" points="202.89,-40.8 210.72,-33.65 200.14,-34.36 202.89,-40.8"/>
</g>
<g id="edge16" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M210.71,-73.29C188.37,-63.07 159.07,-49.66 135.17,-38.73"/>
<polygon fill="black" stroke="black" points="136.88,-35.66 126.33,-34.69 133.97,-42.03 136.88,-35.66"/>
</g>
<g id="edge15" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M245.04,-71.7C245.04,-64.41 245.04,-55.73 245.04,-47.54"/>
<polygon fill="black" stroke="black" points="248.54,-47.62 245.04,-37.62 241.54,-47.62 248.54,-47.62"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

@ -1,169 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: G Pages: 1 -->
<svg width="785pt" height="260pt"
viewBox="0.00 0.00 785.29 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 781.29,-256 781.29,4 -4,4"/>
<!-- :sync:work -->
<g id="node1" class="node">
<title>:sync:work</title>
<ellipse fill="none" stroke="black" cx="155.66" cy="-234" rx="51.86" ry="18"/>
<text text-anchor="middle" x="155.66" y="-228.95" font-family="Times,serif" font-size="14.00">:sync:work</text>
</g>
<!-- :core:analytics -->
<g id="node2" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="64.66" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="64.66" y="-84.95" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<!-- :sync:work&#45;&gt;:core:analytics -->
<g id="edge1" class="edge">
<title>:sync:work&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M144.86,-216.15C129.2,-191.71 100.01,-146.17 81.5,-117.29"/>
<polygon fill="black" stroke="black" points="84.6,-115.63 76.26,-109.1 78.71,-119.41 84.6,-115.63"/>
</g>
<!-- :core:data -->
<g id="node3" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="247.66" cy="-162" rx="47.26" ry="18"/>
<text text-anchor="middle" x="247.66" y="-156.95" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<!-- :sync:work&#45;&gt;:core:data -->
<g id="edge2" class="edge">
<title>:sync:work&#45;&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M176.53,-217.12C188.85,-207.74 204.64,-195.73 218.21,-185.41"/>
<polygon fill="red" stroke="red" stroke-width="2" points="218.93,-189.25 224.77,-180.41 214.7,-183.68 218.93,-189.25"/>
</g>
<!-- :core:data&#45;&gt;:core:analytics -->
<g id="edge7" class="edge">
<title>:core:data&#45;&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M215.36,-148.65C186.78,-137.72 144.7,-121.62 112.27,-109.21"/>
<polygon fill="black" stroke="black" points="113.67,-106 103.08,-105.7 111.17,-112.54 113.67,-106"/>
</g>
<!-- :core:common -->
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="257.66" cy="-18" rx="65.17" ry="18"/>
<text text-anchor="middle" x="257.66" y="-12.95" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<!-- :core:data&#45;&gt;:core:common -->
<g id="edge3" class="edge">
<title>:core:data&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M218.41,-147.49C202.96,-138.64 185.41,-125.46 176.66,-108 169.49,-93.7 169.05,-86.07 176.66,-72 184.31,-57.84 197.57,-46.86 211.18,-38.66"/>
<polygon fill="black" stroke="black" points="212.7,-41.82 219.74,-33.91 209.3,-35.7 212.7,-41.82"/>
</g>
<!-- :core:database -->
<g id="node5" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="713.66" cy="-90" rx="63.63" ry="18"/>
<text text-anchor="middle" x="713.66" y="-84.95" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<!-- :core:data&#45;&gt;:core:database -->
<g id="edge4" class="edge">
<title>:core:data&#45;&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M292.97,-156.3C366.34,-148.38 515.55,-130.95 640.66,-108 645.62,-107.09 650.74,-106.07 655.88,-104.99"/>
<polygon fill="red" stroke="red" stroke-width="2" points="655.08,-108.74 664.11,-103.19 653.59,-101.9 655.08,-108.74"/>
</g>
<!-- :core:datastore -->
<g id="node6" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="566.66" cy="-90" rx="65.17" ry="18"/>
<text text-anchor="middle" x="566.66" y="-84.95" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<!-- :core:data&#45;&gt;:core:datastore -->
<g id="edge5" class="edge">
<title>:core:data&#45;&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M288.01,-152.44C336.6,-142.09 420.66,-124.06 492.66,-108 497.29,-106.97 502.08,-105.89 506.9,-104.8"/>
<polygon fill="black" stroke="black" points="507.67,-108.21 516.64,-102.58 506.11,-101.39 507.67,-108.21"/>
</g>
<!-- :core:network -->
<g id="node7" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="247.66" cy="-90" rx="62.1" ry="18"/>
<text text-anchor="middle" x="247.66" y="-84.95" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<!-- :core:data&#45;&gt;:core:network -->
<g id="edge6" class="edge">
<title>:core:data&#45;&gt;:core:network</title>
<path fill="none" stroke="black" d="M247.66,-143.7C247.66,-136.41 247.66,-127.73 247.66,-119.54"/>
<polygon fill="black" stroke="black" points="251.16,-119.62 247.66,-109.62 244.16,-119.62 251.16,-119.62"/>
</g>
<!-- :core:notifications -->
<g id="node8" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="405.66" cy="-90" rx="77.97" ry="18"/>
<text text-anchor="middle" x="405.66" y="-84.95" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<!-- :core:data&#45;&gt;:core:notifications -->
<g id="edge8" class="edge">
<title>:core:data&#45;&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M277.75,-147.67C301.15,-137.3 333.98,-122.76 360.52,-111"/>
<polygon fill="black" stroke="black" points="361.61,-114.34 369.34,-107.09 358.78,-107.94 361.61,-114.34"/>
</g>
<!-- :core:model -->
<g id="node9" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="405.66" cy="-18" rx="55.45" ry="18"/>
<text text-anchor="middle" x="405.66" y="-12.95" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<!-- :core:database&#45;&gt;:core:model -->
<g id="edge9" class="edge">
<title>:core:database&#45;&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M665.79,-77.7C657.42,-75.77 648.79,-73.8 640.66,-72 564.83,-55.19 545.22,-53.98 469.66,-36 465.85,-35.09 461.93,-34.13 457.98,-33.14"/>
<polygon fill="red" stroke="red" stroke-width="2" points="460.38,-30.14 449.82,-31.04 458.64,-36.92 460.38,-30.14"/>
</g>
<!-- :core:datastore&#45;&gt;:core:common -->
<g id="edge12" class="edge">
<title>:core:datastore&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M517.7,-77.72C509.35,-75.81 500.76,-73.84 492.66,-72 433.39,-58.51 365.66,-43.25 318.2,-32.58"/>
<polygon fill="black" stroke="black" points="319.19,-29.22 308.66,-30.44 317.65,-36.05 319.19,-29.22"/>
</g>
<!-- :core:datastore&#45;&gt;:core:model -->
<g id="edge11" class="edge">
<title>:core:datastore&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M532.91,-74.33C508.35,-63.65 474.91,-49.11 448.48,-37.62"/>
<polygon fill="black" stroke="black" points="449.95,-34.44 439.38,-33.66 447.16,-40.86 449.95,-34.44"/>
</g>
<!-- :core:datastore&#45;proto -->
<g id="node10" class="node">
<title>:core:datastore&#45;proto</title>
<ellipse fill="none" stroke="black" cx="566.66" cy="-18" rx="87.69" ry="18"/>
<text text-anchor="middle" x="566.66" y="-12.95" font-family="Times,serif" font-size="14.00">:core:datastore&#45;proto</text>
</g>
<!-- :core:datastore&#45;&gt;:core:datastore&#45;proto -->
<g id="edge10" class="edge">
<title>:core:datastore&#45;&gt;:core:datastore&#45;proto</title>
<path fill="none" stroke="black" d="M566.66,-71.7C566.66,-64.41 566.66,-55.73 566.66,-47.54"/>
<polygon fill="black" stroke="black" points="570.16,-47.62 566.66,-37.62 563.16,-47.62 570.16,-47.62"/>
</g>
<!-- :core:network&#45;&gt;:core:common -->
<g id="edge13" class="edge">
<title>:core:network&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M250.13,-71.7C251.18,-64.32 252.44,-55.52 253.62,-47.25"/>
<polygon fill="black" stroke="black" points="257.05,-48 255,-37.6 250.12,-47.01 257.05,-48"/>
</g>
<!-- :core:network&#45;&gt;:core:model -->
<g id="edge14" class="edge">
<title>:core:network&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M280.78,-74.33C304.88,-63.65 337.69,-49.11 363.64,-37.62"/>
<polygon fill="black" stroke="black" points="364.82,-40.92 372.54,-33.67 361.98,-34.52 364.82,-40.92"/>
</g>
<!-- :core:notifications&#45;&gt;:core:common -->
<g id="edge16" class="edge">
<title>:core:notifications&#45;&gt;:core:common</title>
<path fill="none" stroke="black" d="M372.44,-73.29C350.94,-63.12 322.75,-49.79 299.69,-38.88"/>
<polygon fill="black" stroke="black" points="301.4,-35.82 290.86,-34.7 298.4,-42.14 301.4,-35.82"/>
</g>
<!-- :core:notifications&#45;&gt;:core:model -->
<g id="edge15" class="edge">
<title>:core:notifications&#45;&gt;:core:model</title>
<path fill="none" stroke="black" d="M405.66,-71.7C405.66,-64.41 405.66,-55.73 405.66,-47.54"/>
<polygon fill="black" stroke="black" points="409.16,-47.62 405.66,-37.62 402.16,-47.62 409.16,-47.62"/>
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="813pt" height="260pt" viewBox="0.00 0.00 812.60 260.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 808.6,-256 808.6,4 -4,4"/>
<g id="node1" class="node">
<title>:sync:work</title>
<ellipse fill="none" stroke="black" cx="161.34" cy="-234" rx="53.95" ry="18"/>
<text text-anchor="middle" x="161.34" y="-229.8" font-family="Times,serif" font-size="14.00">:sync:work</text>
</g>
<g id="node2" class="node">
<title>:core:analytics</title>
<ellipse fill="none" stroke="black" cx="67.34" cy="-90" rx="67.34" ry="18"/>
<text text-anchor="middle" x="67.34" y="-85.8" font-family="Times,serif" font-size="14.00">:core:analytics</text>
</g>
<g id="edge1" class="edge">
<title>:sync:work-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M150.19,-216.15C134.01,-191.71 103.86,-146.17 84.74,-117.29"/>
<polygon fill="black" stroke="black" points="87.75,-115.49 79.32,-109.09 81.92,-119.36 87.75,-115.49"/>
</g>
<g id="node3" class="node">
<title>:core:data</title>
<ellipse fill="none" stroke="black" cx="255.34" cy="-162" rx="49.1" ry="18"/>
<text text-anchor="middle" x="255.34" y="-157.8" font-family="Times,serif" font-size="14.00">:core:data</text>
</g>
<g id="edge2" class="edge">
<title>:sync:work-&gt;:core:data</title>
<path fill="none" stroke="red" stroke-width="2" d="M182.67,-217.12C195.26,-207.74 211.39,-195.73 225.25,-185.41"/>
<polygon fill="red" stroke="red" stroke-width="2" points="226.06,-189.17 231.99,-180.39 221.88,-183.55 226.06,-189.17"/>
</g>
<g id="edge7" class="edge">
<title>:core:data-&gt;:core:analytics</title>
<path fill="none" stroke="black" d="M221.73,-148.49C192.28,-137.52 149.12,-121.45 115.92,-109.09"/>
<polygon fill="black" stroke="black" points="117.53,-105.95 106.93,-105.74 115.08,-112.51 117.53,-105.95"/>
</g>
<g id="node4" class="node">
<title>:core:common</title>
<ellipse fill="none" stroke="black" cx="266.34" cy="-18" rx="66.81" ry="18"/>
<text text-anchor="middle" x="266.34" y="-13.8" font-family="Times,serif" font-size="14.00">:core:common</text>
</g>
<g id="edge3" class="edge">
<title>:core:data-&gt;:core:common</title>
<path fill="none" stroke="black" d="M224.51,-147.58C208.51,-138.83 190.44,-125.71 181.34,-108 174.03,-93.77 173.58,-85.99 181.34,-72 189.43,-57.42 203.38,-46.33 217.67,-38.16"/>
<polygon fill="black" stroke="black" points="218.99,-41.42 226.21,-33.66 215.73,-35.22 218.99,-41.42"/>
</g>
<g id="node5" class="node">
<title>:core:database</title>
<ellipse fill="none" stroke="black" cx="738.34" cy="-90" rx="66.26" ry="18"/>
<text text-anchor="middle" x="738.34" y="-85.8" font-family="Times,serif" font-size="14.00">:core:database</text>
</g>
<g id="edge4" class="edge">
<title>:core:data-&gt;:core:database</title>
<path fill="none" stroke="red" stroke-width="2" d="M302.37,-156.34C378.53,-148.47 533.42,-131.11 663.34,-108 668.49,-107.08 673.82,-106.05 679.16,-104.96"/>
<polygon fill="red" stroke="red" stroke-width="2" points="678.05,-108.77 687.1,-103.27 676.59,-101.92 678.05,-108.77"/>
</g>
<g id="node6" class="node">
<title>:core:datastore</title>
<ellipse fill="none" stroke="black" cx="586.34" cy="-90" rx="67.87" ry="18"/>
<text text-anchor="middle" x="586.34" y="-85.8" font-family="Times,serif" font-size="14.00">:core:datastore</text>
</g>
<g id="edge5" class="edge">
<title>:core:data-&gt;:core:datastore</title>
<path fill="none" stroke="black" d="M297.62,-152.33C348.06,-141.96 434.91,-123.98 509.34,-108 514.22,-106.95 519.26,-105.86 524.33,-104.76"/>
<polygon fill="black" stroke="black" points="524.92,-108.21 533.94,-102.65 523.42,-101.37 524.92,-108.21"/>
</g>
<g id="node7" class="node">
<title>:core:network</title>
<ellipse fill="none" stroke="black" cx="255.34" cy="-90" rx="64.66" ry="18"/>
<text text-anchor="middle" x="255.34" y="-85.8" font-family="Times,serif" font-size="14.00">:core:network</text>
</g>
<g id="edge6" class="edge">
<title>:core:data-&gt;:core:network</title>
<path fill="none" stroke="black" d="M255.34,-143.7C255.34,-136.41 255.34,-127.73 255.34,-119.54"/>
<polygon fill="black" stroke="black" points="258.84,-119.62 255.34,-109.62 251.84,-119.62 258.84,-119.62"/>
</g>
<g id="node8" class="node">
<title>:core:notifications</title>
<ellipse fill="none" stroke="black" cx="419.34" cy="-90" rx="81.29" ry="18"/>
<text text-anchor="middle" x="419.34" y="-85.8" font-family="Times,serif" font-size="14.00">:core:notifications</text>
</g>
<g id="edge8" class="edge">
<title>:core:data-&gt;:core:notifications</title>
<path fill="none" stroke="black" d="M286.58,-147.67C310.86,-137.3 344.94,-122.76 372.49,-111"/>
<polygon fill="black" stroke="black" points="373.86,-114.22 381.69,-107.07 371.12,-107.78 373.86,-114.22"/>
</g>
<g id="node9" class="node">
<title>:core:model</title>
<ellipse fill="none" stroke="black" cx="419.34" cy="-18" rx="57.16" ry="18"/>
<text text-anchor="middle" x="419.34" y="-13.8" font-family="Times,serif" font-size="14.00">:core:model</text>
</g>
<g id="edge9" class="edge">
<title>:core:database-&gt;:core:model</title>
<path fill="none" stroke="red" stroke-width="2" d="M689.16,-77.69C680.56,-75.76 671.7,-73.8 663.34,-72 584.86,-55.13 564.6,-53.88 486.34,-36 482.06,-35.02 477.62,-33.97 473.18,-32.9"/>
<polygon fill="red" stroke="red" stroke-width="2" points="475.65,-29.9 465.1,-30.91 473.97,-36.7 475.65,-29.9"/>
</g>
<g id="edge12" class="edge">
<title>:core:datastore-&gt;:core:common</title>
<path fill="none" stroke="black" d="M535.4,-77.73C526.71,-75.82 517.77,-73.85 509.34,-72 447.72,-58.48 377.27,-43.12 328.16,-32.44"/>
<polygon fill="black" stroke="black" points="329.07,-29.05 318.56,-30.35 327.59,-35.89 329.07,-29.05"/>
</g>
<g id="edge11" class="edge">
<title>:core:datastore-&gt;:core:model</title>
<path fill="none" stroke="black" d="M551.33,-74.33C525.66,-63.57 490.64,-48.89 463.12,-37.35"/>
<polygon fill="black" stroke="black" points="464.57,-34.16 453.99,-33.52 461.86,-40.62 464.57,-34.16"/>
</g>
<g id="node10" class="node">
<title>:core:datastore-proto</title>
<ellipse fill="none" stroke="black" cx="586.34" cy="-18" rx="91.47" ry="18"/>
<text text-anchor="middle" x="586.34" y="-13.8" font-family="Times,serif" font-size="14.00">:core:datastore-proto</text>
</g>
<g id="edge10" class="edge">
<title>:core:datastore-&gt;:core:datastore-proto</title>
<path fill="none" stroke="black" d="M586.34,-71.7C586.34,-64.41 586.34,-55.73 586.34,-47.54"/>
<polygon fill="black" stroke="black" points="589.84,-47.62 586.34,-37.62 582.84,-47.62 589.84,-47.62"/>
</g>
<g id="edge13" class="edge">
<title>:core:network-&gt;:core:common</title>
<path fill="none" stroke="black" d="M258.06,-71.7C259.22,-64.32 260.6,-55.52 261.9,-47.25"/>
<polygon fill="black" stroke="black" points="265.32,-48.02 263.42,-37.6 258.41,-46.93 265.32,-48.02"/>
</g>
<g id="edge14" class="edge">
<title>:core:network-&gt;:core:model</title>
<path fill="none" stroke="black" d="M289.72,-74.33C314.85,-63.6 349.1,-48.98 376.08,-37.46"/>
<polygon fill="black" stroke="black" points="377.19,-40.8 385.01,-33.65 374.44,-34.36 377.19,-40.8"/>
</g>
<g id="edge16" class="edge">
<title>:core:notifications-&gt;:core:common</title>
<path fill="none" stroke="black" d="M385.01,-73.29C362.67,-63.07 333.37,-49.66 309.47,-38.73"/>
<polygon fill="black" stroke="black" points="311.18,-35.66 300.63,-34.69 308.27,-42.03 311.18,-35.66"/>
</g>
<g id="edge15" class="edge">
<title>:core:notifications-&gt;:core:model</title>
<path fill="none" stroke="black" d="M419.34,-71.7C419.34,-64.41 419.34,-55.73 419.34,-47.54"/>
<polygon fill="black" stroke="black" points="422.84,-47.62 419.34,-37.62 415.84,-47.62 422.84,-47.62"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

@ -41,13 +41,16 @@ internal class TopicArgs(val topicId: String) {
}
fun NavController.navigateToTopic(topicId: String, navOptions: NavOptionsBuilder.() -> Unit = {}) {
val encodedId = URLEncoder.encode(topicId, URL_CHARACTER_ENCODING)
val newRoute = "$TOPIC_ROUTE/$encodedId"
navigate(newRoute) {
navigate(createTopicRoute(topicId)) {
navOptions()
}
}
fun createTopicRoute(topicId: String): String {
val encodedId = URLEncoder.encode(topicId, URL_CHARACTER_ENCODING)
return "$TOPIC_ROUTE/$encodedId"
}
fun NavGraphBuilder.topicScreen(
showBackButton: Boolean,
onBackClick: () -> Unit,

@ -100,8 +100,11 @@ echo "$module_paths" | while read -r module_path; do
-Pmodules.graph.output.gv="/tmp/${file_name}.gv" \
-Pmodules.graph.of.module="${module_path}" </dev/null
# Convert to SVG using dot
dot -Tsvg "/tmp/${file_name}.gv" > "docs/images/graphs/${file_name}.svg"
# Convert to SVG using dot, remove unnecessary comments, and reformat
dot -Tsvg "/tmp/${file_name}.gv" |
sed 's/<!--/\x0<!--/g;s/-->/-->\x0/g' | grep -zv '^<!--' | tr -d '\0' |
xmllint --format - \
> "docs/images/graphs/${file_name}.svg"
# Remove the temporary .gv file
rm "/tmp/${file_name}.gv"
fi

@ -4,7 +4,7 @@ androidDesugarJdkLibs = "2.0.4"
# AGP and tools should be updated together
androidGradlePlugin = "8.3.0"
androidTools = "31.3.0"
androidxActivity = "1.8.0"
androidxActivity = "1.8.2"
androidxAppCompat = "1.6.1"
androidxBrowser = "1.8.0"
androidxComposeBom = "2024.02.02"
@ -18,9 +18,9 @@ androidxDataStore = "1.0.0"
androidxEspresso = "3.5.1"
androidxHiltNavigationCompose = "1.2.0"
androidxLifecycle = "2.7.0"
androidxMacroBenchmark = "1.2.2"
androidxMacroBenchmark = "1.2.3"
androidxMetrics = "1.0.0-alpha04"
androidxNavigation = "2.7.4"
androidxNavigation = "2.8.0-alpha06"
androidxProfileinstaller = "1.3.1"
androidxTestCore = "1.5.0"
androidxTestExt = "1.1.5"
@ -31,7 +31,7 @@ androidxUiAutomator = "2.2.0"
androidxWindowManager = "1.3.0-alpha03"
androidxWork = "2.9.0"
coil = "2.6.0"
dependencyGuard = "0.4.3"
dependencyGuard = "0.5.0"
firebaseBom = "32.4.0"
firebaseCrashlyticsPlugin = "2.9.9"
firebasePerfPlugin = "1.4.2"
@ -49,7 +49,7 @@ kotlinxSerializationJson = "1.6.3"
ksp = "1.9.22-1.0.18"
moduleGraph = "2.5.0"
okhttp = "4.12.0"
protobuf = "3.25.2"
protobuf = "4.26.0"
protobufPlugin = "0.9.4"
retrofit = "2.9.0"
retrofitKotlinxSerializationJson = "1.0.0"
@ -58,7 +58,7 @@ roborazzi = "1.7.0"
room = "2.6.1"
secrets = "2.0.1"
truth = "1.4.2"
turbine = "1.0.0"
turbine = "1.1.0"
[libraries]
accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" }
@ -149,7 +149,6 @@ firebase-performance-gradlePlugin = { group = "com.google.firebase", name = "per
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
room-gradlePlugin = { group = "androidx.room", name = "room-gradle-plugin", version.ref = "room" }
work-testing = { group = "androidx.work", name = "work-testing", version = "2.9.0" }
[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }

@ -18,6 +18,8 @@ package com.google.samples.apps.nowinandroid.core.sync.test
import com.google.samples.apps.nowinandroid.core.data.util.SyncManager
import com.google.samples.apps.nowinandroid.sync.di.SyncModule
import com.google.samples.apps.nowinandroid.sync.status.StubSyncSubscriber
import com.google.samples.apps.nowinandroid.sync.status.SyncSubscriber
import dagger.Binds
import dagger.Module
import dagger.hilt.components.SingletonComponent
@ -33,4 +35,9 @@ internal interface TestSyncModule {
fun bindsSyncStatusMonitor(
syncStatusMonitor: NeverSyncingSyncManager,
): SyncManager
@Binds
fun bindsSyncSubscriber(
syncSubscriber: StubSyncSubscriber,
): SyncSubscriber
}

@ -24,7 +24,7 @@ private const val TAG = "StubSyncSubscriber"
/**
* Stub implementation of [SyncSubscriber]
*/
internal class StubSyncSubscriber @Inject constructor() : SyncSubscriber {
class StubSyncSubscriber @Inject constructor() : SyncSubscriber {
override suspend fun subscribe() {
Log.d(TAG, "Subscribing to sync")
}

Loading…
Cancel
Save