This commit is contained in:
KP9lKk 2024-12-19 11:54:34 +03:00
parent 0bd5c0792b
commit 5f0b8a9b48
14 changed files with 213 additions and 67 deletions

View File

@ -5,18 +5,6 @@
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
</SelectionState> </SelectionState>
<SelectionState runConfigName="AuthorizeScreen">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
<SelectionState runConfigName="MainActivity">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
<SelectionState runConfigName="MainActivity (1)">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
<SelectionState runConfigName="MainActivity (2)">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates> </selectionStates>
</component> </component>
</project> </project>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings"> <component name="GradleSettings">
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">

View File

@ -19,7 +19,7 @@ object Registration
object Authorization object Authorization
@Serializable @Serializable
object Score data class Score(val userId: Int)
@Serializable @Serializable
data class Clicker(val userId: Int) data class Clicker(val userId: Int)
@ -37,8 +37,13 @@ fun Navigation() {
}) } }) }
composable<Clicker>{ navBackStackEntry -> composable<Clicker>{ navBackStackEntry ->
val clicker: Clicker = navBackStackEntry.toRoute() val clicker: Clicker = navBackStackEntry.toRoute()
ClickerScreen(clicker.userId, {navController.navigate(route = Score)}) ClickerScreen(clicker.userId, {navController.navigate(route = Score(clicker.userId))})
}
composable<Score> { navBackStackEntry ->
val score: Score = navBackStackEntry.toRoute()
ScoreScreen(score.userId, {userID ->
navController.navigate(route = Clicker(userID))
})
} }
composable<Score> { ScoreScreen({navController.navigate(route = Clicker)}) }
} }
} }

View File

@ -13,6 +13,9 @@ interface AppForKidsApi {
@GET("/user") @GET("/user")
suspend fun getUsers():List<UserResponse> suspend fun getUsers():List<UserResponse>
@GET("/user/{user_id}")
suspend fun getUser(@Path("user_id") idUser: Int):UserResponse?
@PUT("/user/{user_id}/clicks") @PUT("/user/{user_id}/clicks")
suspend fun registerClick(@Path("user_id") idUser:Int) suspend fun registerClick(@Path("user_id") idUser:Int)

View File

@ -7,5 +7,5 @@ data class UserResponse(
val id:Int, val id:Int,
val nickname: String, val nickname: String,
val password: String, val password: String,
val clicks:Int, var clicks:Int,
var url:String? = null ) var url:String? = null )

View File

@ -6,7 +6,7 @@ import retrofit2.Retrofit
import retrofit2.converter.kotlinx.serialization.asConverterFactory import retrofit2.converter.kotlinx.serialization.asConverterFactory
object HttpClient { object HttpClient {
const val URL = "http://192.168.0.108:8080" const val URL = "http://192.168.1.183:8080"
private val retrofit: Retrofit by lazy { private val retrofit: Retrofit by lazy {
Retrofit.Builder() Retrofit.Builder()
.baseUrl(URL) .baseUrl(URL)

View File

@ -23,7 +23,6 @@ import com.example.appforkids.screen.common.CommonButton
import com.example.appforkids.screen.common.CommonTextFieldWithLabel import com.example.appforkids.screen.common.CommonTextFieldWithLabel
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@Preview
@Composable @Composable
fun AuthorizeScreen(onNavigateToClickerScreen: (Int) -> Unit) { fun AuthorizeScreen(onNavigateToClickerScreen: (Int) -> Unit) {
val authorizeViewModel:AuthorizeViewModel = viewModel() val authorizeViewModel:AuthorizeViewModel = viewModel()

View File

@ -1,6 +1,5 @@
package com.example.appforkids.screen.main package com.example.appforkids.screen.main
import android.content.res.Resources
import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.border import androidx.compose.foundation.border
@ -8,28 +7,26 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.example.appforkids.R import com.example.appforkids.R
import com.example.appforkids.data.Models.Response.UserResponse
import com.example.appforkids.screen.common.CommonButton import com.example.appforkids.screen.common.CommonButton
@Composable @Composable
fun ClickerScreen(userId: Int, OnRouteToRating: () -> Unit){ fun ClickerScreen(userId: Int, OnRouteToRating: () -> Unit){
var countClick by remember { mutableIntStateOf(0) } val viewModel:ClickerViewModel = viewModel()
LaunchedEffect(true) {
viewModel.getUser(userId)
}
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
@ -37,14 +34,16 @@ fun ClickerScreen(userId: Int, OnRouteToRating: () -> Unit){
.fillMaxSize() .fillMaxSize()
.padding(5.dp) .padding(5.dp)
) { ) {
val user = viewModel.user.collectAsState()
user.value?.let { Text(text = it.nickname) }
Image( Image(
painter = painterResource(id = R.drawable.pepega), painter = painterResource(id = R.drawable.kodee),
contentDescription = "", contentDescription = "",
modifier = Modifier.padding(5.dp) modifier = Modifier.padding(5.dp)
.clickable { countClick++ } .clickable { viewModel.setClick() }
.border(border = BorderStroke(1.dp, Color.Gray)) .border(border = BorderStroke(1.dp, Color.Gray))
) )
Text(text = countClick.toString()) user.value?.let { Text(text = it.clicks.toString()) }
CommonButton(onClick = {OnRouteToRating()}, text = "Открыть рейтинг") CommonButton(onClick = {OnRouteToRating()}, text = "Открыть рейтинг")
} }
} }

View File

@ -0,0 +1,29 @@
package com.example.appforkids.screen.main
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.appforkids.data.HttpClient
import com.example.appforkids.data.Models.Response.UserResponse
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
class ClickerViewModel:ViewModel() {
val user = MutableStateFlow<UserResponse?>(null)
fun getUser(id:Int){
viewModelScope.launch {
user.emit(HttpClient.retrofitInstance.getUser(id))
}
}
fun setClick(){
viewModelScope.launch {
if (user.value == null) return@launch
HttpClient.retrofitInstance.registerClick(user.value!!.id)
val click = user.value!!.clicks + 1;
user.emit(user.value!!.copy(clicks = click))
}
}
}

View File

@ -1,8 +1,11 @@
package com.example.appforkids.screen.score package com.example.appforkids.screen.score
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -10,6 +13,7 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
@ -17,23 +21,43 @@ import com.example.appforkids.screen.common.CommonButton
import com.example.appforkids.screen.common.CommonTextFieldWithLabel import com.example.appforkids.screen.common.CommonTextFieldWithLabel
@Composable @Composable
fun ScoreScreen(onNavigateToClickerScreen: () -> Unit) { fun ScoreScreen(userID:Int, onNavigateToClickerScreen: (Int) -> Unit) {
val registrationViewModel: ScoreViewModel = viewModel() val registrationViewModel: ScoreViewModel = viewModel()
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
modifier = Modifier.fillMaxSize().padding(5.dp), modifier = Modifier
.fillMaxSize()
.padding(5.dp),
) { ) {
val registerState by registrationViewModel.registrationState.collectAsState() val registerState by registrationViewModel.registrationState.collectAsState()
registerState.forEach { registerState.forEach {
Text(text = "${it.nickname} ${it.clicks}") val row = "Никнейм: ${it.nickname} Количество клацов:${it.clicks}"
if (it.id == userID) {
Text(text = row,
modifier = Modifier
.padding(10.dp)
.fillMaxWidth()
.border(BorderStroke(2.dp, Color.Magenta))
.padding(5.dp)
)
}else{
Text(
text = row,
modifier = Modifier
.padding(10.dp)
.fillMaxWidth()
.border(BorderStroke(1.dp, Color.Black))
.padding(5.dp)
)
}
} }
CommonButton( CommonButton(
text = "Вернуться", text = "Вернуться",
onClick = { onClick = {
onNavigateToClickerScreen() onNavigateToClickerScreen(userID)
} }
) )
} }

View File

@ -18,7 +18,7 @@ class ScoreViewModel():ViewModel() {
init { init {
viewModelScope.launch { viewModelScope.launch {
registrationState.emit(HttpClient.retrofitInstance.getUsers()) registrationState.emit(HttpClient.retrofitInstance.getUsers().sortedByDescending { it -> it.clicks })
} }
} }
} }

View File

@ -0,0 +1,129 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="800dp"
android:height="800dp"
android:viewportWidth="800"
android:viewportHeight="800">
<path
android:pathData="M552.2,419.5c-7.8,0 -15.1,-4.8 -17.9,-12.6c-3.5,-9.9 1.6,-20.8 11.5,-24.3c38.3,-13.7 66.8,-38 84.6,-72.1c13.7,-26.1 15.8,-48.6 15.8,-48.9c0.8,-10.5 10,-18.2 20.5,-17.4c10.5,0.8 18.2,10.1 17.4,20.5c-0.1,1.2 -2.5,29.1 -19.2,61.7c-15.4,30.1 -46.3,70.5 -106.4,92C556.5,419.2 554.3,419.5 552.2,419.5z"
android:fillColor="#7F52FF"/>
<path
android:pathData="M479.1,680.3h-35.4c-6.8,0 -13.2,-3.6 -16.6,-9.5s-3.3,-13.2 0.2,-19c0.1,-0.1 11.2,-20 15.1,-52.4c5.1,-43.2 -4.6,-87.2 -28.8,-130.7c-5.1,-9.2 -1.8,-20.7 7.4,-25.8c9.2,-5.1 20.7,-1.8 25.8,7.4c35.6,64.1 37.6,120.1 33,155.9c-1.8,14.2 -4.8,26.4 -7.9,36.3h7.1c10.5,0 19,8.5 19,19S489.5,680.3 479.1,680.3z"
android:fillColor="#7F52FF"/>
<path
android:pathData="M349.9,680.3h-35.4c-10.5,0 -19,-8.5 -19,-19s8.5,-19 19,-19h23.9c11.3,-23.1 38.1,-88.7 33.6,-179.5c-0.5,-10.5 7.6,-19.4 18,-19.9c10.5,-0.5 19.4,7.6 19.9,18c6.2,126.1 -41.8,206.8 -43.9,210.2C362.7,676.9 356.5,680.3 349.9,680.3z"
android:fillColor="#7F52FF"/>
<path
android:pathData="M214.6,448.9c-1.7,0 -3.4,-0.1 -5.1,-0.2c-24.2,-1.8 -52.6,-17.2 -60.1,-55c-2.2,-10.9 -0.7,-21.9 0.7,-32.5c3,-22.9 3.6,-33.5 -14.6,-43.7c-9.2,-5.1 -12.4,-16.7 -7.3,-25.9c5.1,-9.2 16.7,-12.4 25.9,-7.3c18.1,10.1 29.4,24.1 33.6,41.6c3.5,14.3 1.7,28 0.1,40.2c-1,7.9 -2,15.3 -1.1,20.2c1.4,6.9 6.6,23 25.6,24.4c7.8,0.6 14.2,-2 19.8,-7.9c5.2,-5.6 8.3,-12.9 9,-17.3c1.6,-10.4 11.3,-17.5 21.7,-15.9c10.4,1.6 17.5,11.3 15.9,21.7C275,416 252.7,448.9 214.6,448.9z"
android:fillColor="#7F52FF"/>
<path
android:pathData="M283.4,489l256.9,-18c20,-1.4 35.1,-18.8 33.7,-38.8l-14.2,-203.1c-2.3,-32.5 -40.7,-48.5 -65.4,-27.3l-87.9,75.7c-5,4.3 -12.2,4.8 -17.7,1.2l-97.4,-62.7c-27.4,-17.7 -63.3,3.5 -61,36.1l14.2,203.1C246,475.3 263.4,490.4 283.4,489z"
android:fillColor="#7F52FF"/>
<path
android:fillColor="#FF000000"
android:pathData="M527.8,452.4l-234.2,16.3c-15.4,1.1 -28.8,-10.6 -29.9,-26L256.5,339c-1.1,-15.4 10.6,-28.8 26,-29.9l234.2,-16.3c15.4,-1.1 28.8,10.6 29.9,26l7.2,103.7C554.8,438 543.2,451.3 527.8,452.4z"/>
<path
android:pathData="M385.5,425.6c7,2.8 15,3.5 22.4,2.8c7.8,-0.7 15.6,-2.6 22.3,-6.7c2,-1.2 3,-4.1 1.6,-6.2c-1.3,-2 -4,-2.9 -6.2,-1.6c-1.4,0.9 -2.9,1.6 -4.5,2.3c0.7,-0.3 0.2,-0.1 -0.2,0.1c-0.4,0.2 -0.9,0.3 -1.3,0.5c-0.8,0.3 -1.6,0.5 -2.4,0.8c-1.7,0.5 -3.4,0.9 -5.1,1.2c-0.5,0.1 -1,0.2 -1.5,0.3c-0.1,0 -1.4,0.2 -0.3,0.1c-0.9,0.1 -1.9,0.2 -2.8,0.3c-3.6,0.3 -7.1,0.2 -10.7,-0.2c-0.9,-0.1 0.8,0.1 -0.4,-0.1c-0.4,-0.1 -0.8,-0.1 -1.2,-0.2c-0.8,-0.1 -1.6,-0.3 -2.4,-0.5c-1.6,-0.4 -3.3,-0.9 -4.8,-1.6c-2.2,-0.9 -5,1 -5.5,3.1C381.8,422.6 383.2,424.6 385.5,425.6L385.5,425.6z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M643,161.8c-7.1,-2.6 -14.6,-1.2 -20.2,3c-1.6,-6.8 -6.5,-12.7 -13.6,-15.2c-11.1,-4 -23.4,1.7 -27.4,12.9c-8.1,22.4 13.1,49.4 20.8,58.2c11.5,-1.8 45.1,-9 53.2,-31.4C659.9,178.1 654.1,165.9 643,161.8z"
android:fillColor="#7F52FF"/>
<path
android:pathData="M177.5,209c-3.7,1.4 -6.2,4.6 -7,8.2c-3,-2.1 -7,-2.8 -10.7,-1.4c-5.8,2.2 -8.7,8.8 -6.4,14.6c4.5,11.7 22.3,15.1 28.4,15.9c3.9,-4.7 14.8,-19.2 10.3,-30.8C189.8,209.6 183.3,206.7 177.5,209z"
android:fillColor="#7F52FF"/>
<path
android:pathData="M335.2,347.8L335.2,347.8c4.7,-0.3 8.8,3.2 9.1,7.9v0c0.3,4.7 -3.2,8.8 -7.9,9.1l0,0c-4.7,0.3 -8.8,-3.2 -9.1,-7.9l0,0C327,352.2 330.5,348.1 335.2,347.8z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M319.6,350.2L319.6,350.2c-4.7,0.3 -8.8,-3.2 -9.1,-7.9l0,0c-0.3,-4.7 3.2,-8.8 7.9,-9.1h0c4.7,-0.3 8.8,3.2 9.1,7.9l0,0C327.9,345.8 324.3,349.9 319.6,350.2z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M296.8,334.7L296.8,334.7c4.7,-0.3 8.8,3.2 9.1,7.9v0c0.3,4.7 -3.2,8.8 -7.9,9.1l0,0c-4.7,0.3 -8.8,-3.2 -9.1,-7.9l0,0C288.6,339.1 292.1,335.1 296.8,334.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M297,361.1L297,361.1c1.1,4.6 -1.8,9.2 -6.4,10.2l0,0c-4.6,1.1 -9.2,-1.8 -10.2,-6.4v0c-1.1,-4.6 1.8,-9.2 6.4,-10.2h0C291.3,353.7 295.9,356.5 297,361.1z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M284,386.2L284,386.2c-1.1,-4.6 1.8,-9.2 6.4,-10.2h0c4.6,-1.1 9.2,1.8 10.2,6.4l0,0c1.1,4.6 -1.8,9.2 -6.4,10.2h0C289.6,393.6 285,390.8 284,386.2z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M310.5,393.8L310.5,393.8c3.5,3.1 3.9,8.5 0.8,12l0,0c-3.1,3.5 -8.5,3.9 -12,0.8l0,0c-3.5,-3.1 -3.9,-8.5 -0.8,-12l0,0C301.5,391.1 306.9,390.7 310.5,393.8z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M315.4,419.7L315.4,419.7c-3.5,-3.1 -3.9,-8.5 -0.8,-12l0,0c3.1,-3.5 8.5,-3.9 12,-0.8l0,0c3.5,3.1 3.9,8.5 0.8,12l0,0C324.3,422.4 319,422.8 315.4,419.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M334.9,429.9L334.9,429.9c-3.5,-3.1 -3.9,-8.5 -0.8,-12h0c3.1,-3.5 8.5,-3.9 12,-0.8l0,0c3.5,3.1 3.9,8.5 0.8,12l0,0C343.8,432.6 338.4,433 334.9,429.9z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M335.2,347.8L335.2,347.8c-4.7,0.3 -8.2,4.4 -7.9,9.1l0,0c0.3,4.7 4.4,8.2 9.1,7.9l0,0c4.7,-0.3 8.2,-4.4 7.9,-9.1v0C343.9,351 339.9,347.5 335.2,347.8z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M350.9,348L350.9,348c4.7,-0.3 8.2,-4.4 7.9,-9.1v0c-0.3,-4.7 -4.4,-8.2 -9.1,-7.9h0c-4.7,0.3 -8.2,4.4 -7.9,9.1l0,0C342.2,344.8 346.2,348.4 350.9,348z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M371.4,329.5L371.4,329.5c-4.7,0.3 -8.2,4.4 -7.9,9.1l0,0c0.3,4.7 4.4,8.2 9.1,7.9h0c4.7,-0.3 8.2,-4.4 7.9,-9.1l0,0C380.2,332.8 376.1,329.2 371.4,329.5z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M374.9,355.7L374.9,355.7c-0.4,4.7 3,8.8 7.7,9.2h0c4.7,0.4 8.8,-3 9.2,-7.7v0c0.4,-4.7 -3,-8.8 -7.7,-9.2h0C379.4,347.5 375.3,351 374.9,355.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M391.2,378.7L391.2,378.7c0.4,-4.7 -3,-8.8 -7.7,-9.2h0c-4.7,-0.4 -8.8,3 -9.2,7.7l0,0c-0.4,4.7 3,8.8 7.7,9.2h0C386.7,386.9 390.8,383.4 391.2,378.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M366,389.9L366,389.9c-3.1,3.5 -2.7,8.9 0.8,12h0c3.5,3.1 8.9,2.7 12,-0.8v0c3.1,-3.5 2.7,-8.9 -0.8,-12l0,0C374.5,386 369.1,386.4 366,389.9z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M364.7,416.3L364.7,416.3c3.1,-3.5 2.7,-8.9 -0.8,-12l0,0c-3.5,-3.1 -8.9,-2.7 -12,0.8v0c-3.1,3.5 -2.7,8.9 0.8,12h0C356.3,420.2 361.6,419.8 364.7,416.3z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M346.9,429.1L346.9,429.1c3.1,-3.5 2.7,-8.9 -0.8,-12l0,0c-3.5,-3.1 -8.9,-2.7 -12,0.8h0c-3.1,3.5 -2.7,8.9 0.8,12v0C338.4,433 343.8,432.6 346.9,429.1z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M473.2,339.3L473.2,339.3c4.7,-0.3 8.8,3.2 9.1,7.9v0c0.3,4.7 -3.2,8.8 -7.9,9.1h0c-4.7,0.3 -8.8,-3.2 -9.1,-7.9v0C465,343.7 468.5,339.6 473.2,339.3z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M457.7,341.7L457.7,341.7c-4.7,0.3 -8.8,-3.2 -9.1,-7.9l0,0c-0.3,-4.7 3.2,-8.8 7.9,-9.1l0,0c4.7,-0.3 8.8,3.2 9.1,7.9v0C465.9,337.3 462.4,341.4 457.7,341.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M434.8,326.2L434.8,326.2c4.7,-0.3 8.8,3.2 9.1,7.9v0c0.3,4.7 -3.2,8.8 -7.9,9.1h0c-4.7,0.3 -8.8,-3.2 -9.1,-7.9v0C426.6,330.6 430.1,326.5 434.8,326.2z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M435,352.6L435,352.6c1.1,4.6 -1.8,9.2 -6.4,10.2l0,0c-4.6,1.1 -9.2,-1.8 -10.2,-6.4v0c-1.1,-4.6 1.8,-9.2 6.4,-10.2l0,0C429.4,345.2 433.9,348 435,352.6z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M422,377.7L422,377.7c-1.1,-4.6 1.8,-9.2 6.4,-10.2l0,0c4.6,-1.1 9.2,1.8 10.2,6.4l0,0c1.1,4.6 -1.8,9.2 -6.4,10.2v0C427.6,385.1 423.1,382.3 422,377.7z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M448.5,385.3L448.5,385.3c3.5,3.1 3.9,8.5 0.8,12h0c-3.1,3.5 -8.5,3.9 -12,0.8l0,0c-3.5,-3.1 -3.9,-8.5 -0.8,-12l0,0C439.6,382.6 444.9,382.2 448.5,385.3z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M453.5,411.2L453.5,411.2c-3.5,-3.1 -3.9,-8.5 -0.8,-12h0c3.1,-3.5 8.5,-3.9 12,-0.8v0c3.5,3.1 3.9,8.5 0.8,12l0,0C462.4,413.9 457,414.3 453.5,411.2z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M472.9,421.4L472.9,421.4c-3.5,-3.1 -3.9,-8.5 -0.8,-12l0,0c3.1,-3.5 8.5,-3.9 12,-0.8l0,0c3.5,3.1 3.9,8.5 0.8,12l0,0C481.8,424.1 476.4,424.5 472.9,421.4z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M473.2,339.3L473.2,339.3c-4.7,0.3 -8.2,4.4 -7.9,9.1v0c0.3,4.7 4.4,8.2 9.1,7.9h0c4.7,-0.3 8.2,-4.4 7.9,-9.1v0C482,342.5 477.9,339 473.2,339.3z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M489,339.5L489,339.5c4.7,-0.3 8.2,-4.4 7.9,-9.1v0c-0.3,-4.7 -4.4,-8.2 -9.1,-7.9l0,0c-4.7,0.3 -8.2,4.4 -7.9,9.1v0C480.2,336.3 484.3,339.8 489,339.5z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M509.4,321L509.4,321c-4.7,0.3 -8.2,4.4 -7.9,9.1l0,0c0.3,4.7 4.4,8.2 9.1,7.9l0,0c4.7,-0.3 8.2,-4.4 7.9,-9.1v0C518.2,324.2 514.1,320.7 509.4,321z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M512.9,347.2L512.9,347.2c-0.4,4.7 3,8.8 7.7,9.2h0c4.7,0.4 8.8,-3 9.2,-7.7l0,0c0.4,-4.7 -3,-8.8 -7.7,-9.2v0C517.5,339 513.3,342.5 512.9,347.2z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M529.3,370.2L529.3,370.2c0.4,-4.7 -3,-8.8 -7.7,-9.2l0,0c-4.7,-0.4 -8.8,3 -9.2,7.7v0c-0.4,4.7 3,8.8 7.7,9.2h0C524.7,378.4 528.8,374.9 529.3,370.2z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M504.1,381.4L504.1,381.4c-3.1,3.5 -2.7,8.9 0.8,12v0c3.5,3.1 8.9,2.7 12,-0.8l0,0c3.1,-3.5 2.7,-8.9 -0.8,-12l0,0C512.5,377.5 507.2,377.9 504.1,381.4z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M502.8,407.8L502.8,407.8c3.1,-3.5 2.7,-8.9 -0.8,-12l0,0c-3.5,-3.1 -8.9,-2.7 -12,0.8v0c-3.1,3.5 -2.7,8.9 0.8,12l0,0C494.3,411.7 499.7,411.3 502.8,407.8z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M484.9,420.6L484.9,420.6c3.1,-3.5 2.7,-8.9 -0.8,-12l0,0c-3.5,-3.1 -8.9,-2.7 -12,0.8l0,0c-3.1,3.5 -2.7,8.9 0.8,12l0,0C476.4,424.5 481.8,424.1 484.9,420.6z"
android:fillColor="#FFFFFF"/>
</vector>

File diff suppressed because one or more lines are too long