Merge pull request #1264 from vector-im/feature/bma/roomColors

Room avatar colors
This commit is contained in:
Benoit Marty 2023-09-11 12:14:45 +02:00 committed by GitHub
commit fcb5adcd75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
216 changed files with 498 additions and 461 deletions

View file

@ -23,6 +23,7 @@ import io.element.android.features.createroom.impl.userlist.aListOfSelectedUsers
import io.element.android.features.createroom.impl.userlist.aUserListState
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
import io.element.android.libraries.matrix.ui.components.aMatrixUserList
import io.element.android.libraries.usersearch.api.UserSearchResult
import kotlinx.collections.immutable.toImmutableList
open class AddPeopleUserListStateProvider : PreviewParameterProvider<UserListState> {
@ -36,7 +37,11 @@ open class AddPeopleUserListStateProvider : PreviewParameterProvider<UserListSta
selectionMode = SelectionMode.Multiple,
),
aUserListState().copy(
searchResults = SearchBarResultState.Results(aMatrixUserList().toImmutableList()),
searchResults = SearchBarResultState.Results(aMatrixUserList()
.mapIndexed { index, matrixUser ->
UserSearchResult(matrixUser, index % 2 == 0)
}
.toImmutableList()),
selectedUsers = aListOfSelectedUsers(),
isSearchActive = true,
selectionMode = SelectionMode.Multiple,

View file

@ -42,8 +42,6 @@ import io.element.android.features.ftue.impl.R
import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule
import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule
import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage
import io.element.android.libraries.designsystem.colors.AvatarColors
import io.element.android.libraries.designsystem.colors.avatarColors
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
@ -67,7 +65,7 @@ fun NotificationsOptInView(
modifier = modifier
.systemBarsPadding()
.fillMaxSize(),
header = { NotificationsOptInHeader(modifier = Modifier.padding(top = 60.dp, bottom = 12.dp),) },
header = { NotificationsOptInHeader(modifier = Modifier.padding(top = 60.dp, bottom = 12.dp)) },
footer = { NotificationsOptInFooter(state) },
) {
NotificationsOptInContent(modifier = Modifier.fillMaxWidth())
@ -119,21 +117,21 @@ private fun NotificationsOptInContent(
) {
NotificationRow(
avatarLetter = "M",
avatarColors = avatarColors("5"),
avatarColorsId = "5",
firstRowPercent = 1f,
secondRowPercent = 0.4f
)
NotificationRow(
avatarLetter = "A",
avatarColors = avatarColors("1"),
avatarColorsId = "1",
firstRowPercent = 1f,
secondRowPercent = 1f
)
NotificationRow(
avatarLetter = "T",
avatarColors = avatarColors("4"),
avatarColorsId = "4",
firstRowPercent = 0.65f,
secondRowPercent = 0f
)
@ -144,7 +142,7 @@ private fun NotificationsOptInContent(
@Composable
private fun NotificationRow(
avatarLetter: String,
avatarColors: AvatarColors,
avatarColorsId: String,
firstRowPercent: Float,
secondRowPercent: Float,
modifier: Modifier = Modifier
@ -161,8 +159,7 @@ private fun NotificationRow(
verticalAlignment = Alignment.CenterVertically
) {
Avatar(
avatarData = AvatarData(id = "", name = avatarLetter, size = AvatarSize.NotificationsOptIn),
initialAvatarColors = avatarColors,
avatarData = AvatarData(id = avatarColorsId, name = avatarLetter, size = AvatarSize.NotificationsOptIn),
)
Column(Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(12.dp)) {
Box(
@ -174,7 +171,8 @@ private fun NotificationRow(
)
if (secondRowPercent > 0f) {
Box(
modifier = Modifier.clip(CircleShape)
modifier = Modifier
.clip(CircleShape)
.fillMaxWidth(secondRowPercent)
.height(10.dp)
.background(ElementTheme.colors.borderInteractiveSecondary)

View file

@ -27,6 +27,7 @@ import io.element.android.libraries.permissions.impl.FakePermissionStateProvider
import io.element.android.libraries.permissions.test.FakePermissionsPresenter
import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider
import io.element.android.tests.testutils.WarmUpRule
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.StandardTestDispatcher
@ -99,6 +100,7 @@ class NotificationsOptInPresenterTests {
}
}
@OptIn(ExperimentalCoroutinesApi::class)
@Test
fun `set permission denied on not now clicked in API 33`() = runTest(StandardTestDispatcher()) {
val permissionPresenter = FakePermissionsPresenter()

View file

@ -75,7 +75,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemImageContent
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemPollContent
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent
import io.element.android.libraries.designsystem.colors.avatarColors
import io.element.android.libraries.designsystem.colors.AvatarColorsProvider
import io.element.android.libraries.designsystem.components.EqualWidthColumn
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData
@ -328,7 +328,7 @@ private fun MessageSenderInformation(
) {
val avatarStrokeColor = MaterialTheme.colorScheme.background
val avatarSize = senderAvatar.size.dp
val avatarColors = avatarColors(senderAvatar.id)
val avatarColors = AvatarColorsProvider.provide(senderAvatar.id, ElementTheme.isLightTheme)
Box(
modifier = modifier
) {
@ -346,7 +346,7 @@ private fun MessageSenderInformation(
}
// Content
Row {
Avatar(senderAvatar, initialAvatarColors = avatarColors)
Avatar(senderAvatar)
Spacer(modifier = Modifier.width(4.dp))
Text(
text = sender,

View file

@ -93,6 +93,8 @@ androidx_startup = { module = "androidx.startup:startup-runtime", version.ref =
androidx_preference = "androidx.preference:preference:1.2.1"
androidx_compose_bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose_bom" }
# Warning: issue on alpha07, make sure this is working when upgrading
# Context in https://github.com/vector-im/element-x-android/pull/1239#issuecomment-1711500332
androidx_compose_material3 = "androidx.compose.material3:material3:1.2.0-alpha06"
# Coroutines

View file

@ -16,32 +16,10 @@
package io.element.android.libraries.designsystem.colors
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import io.element.android.libraries.theme.ElementTheme
import io.element.android.libraries.theme.colors.avatarColorsDark
import io.element.android.libraries.theme.colors.avatarColorsLight
data class AvatarColors(
val background: Color,
val foreground: Color,
)
@Composable
fun avatarColors(userId: String): AvatarColors {
val hash = userId.toHash()
val colors = if (ElementTheme.isLightTheme) {
avatarColorsLight[hash]
} else {
avatarColorsDark[hash]
}
return AvatarColors(
background = colors.first,
foreground = colors.second,
)
}
internal fun String.toHash(): Int {
return toList().sumOf { it.code } % avatarColorsLight.size
}

View file

@ -0,0 +1,58 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.designsystem.colors
import androidx.collection.LruCache
import io.element.android.libraries.theme.colors.avatarColorsDark
import io.element.android.libraries.theme.colors.avatarColorsLight
object AvatarColorsProvider {
private val cache = LruCache<String, AvatarColors>(200)
private var currentThemeIsLight = true
fun provide(id: String, isLightTheme: Boolean): AvatarColors {
if (currentThemeIsLight != isLightTheme) {
currentThemeIsLight = isLightTheme
cache.evictAll()
}
val valueFromCache = cache.get(id)
return if (valueFromCache != null) {
valueFromCache
} else {
val colors = avatarColors(id, isLightTheme)
cache.put(id, colors)
colors
}
}
private fun avatarColors(id: String, isLightTheme: Boolean): AvatarColors {
val hash = id.toHash()
val colors = if (isLightTheme) {
avatarColorsLight[hash]
} else {
avatarColorsDark[hash]
}
return AvatarColors(
background = colors.first,
foreground = colors.second,
)
}
}
internal fun String.toHash(): Int {
return toList().sumOf { it.code } % avatarColorsLight.size
}

View file

@ -26,14 +26,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage
import io.element.android.libraries.designsystem.colors.AvatarColors
import io.element.android.libraries.designsystem.colors.AvatarColorsProvider
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.debugPlaceholderAvatar
@ -46,7 +45,6 @@ import timber.log.Timber
fun Avatar(
avatarData: AvatarData,
modifier: Modifier = Modifier,
initialAvatarColors: AvatarColors? = null,
contentDescription: String? = null,
) {
val commonModifier = modifier
@ -55,7 +53,6 @@ fun Avatar(
if (avatarData.url.isNullOrBlank()) {
InitialsAvatar(
avatarData = avatarData,
avatarColors = initialAvatarColors,
modifier = commonModifier,
)
} else {
@ -88,13 +85,11 @@ private fun ImageAvatar(
@Composable
private fun InitialsAvatar(
avatarData: AvatarData,
avatarColors: AvatarColors?,
modifier: Modifier = Modifier,
) {
// Use temporary color for default avatar background, if avatarColors is not provided
val avatarColor = ElementTheme.colors.bgActionPrimaryDisabled
val avatarColors = AvatarColorsProvider.provide(avatarData.id, ElementTheme.isLightTheme)
Box(
modifier.background(color = avatarColors?.background ?: avatarColor)
modifier.background(color = avatarColors.background)
) {
val fontSize = avatarData.size.dp.toSp() / 2
val originalFont = ElementTheme.typography.fontHeadingMdBold
@ -104,7 +99,7 @@ private fun InitialsAvatar(
modifier = Modifier.align(Alignment.Center),
text = avatarData.initial,
style = originalFont.copy(fontSize = fontSize, lineHeight = lineHeight, letterSpacing = 0.sp),
color = avatarColors?.foreground ?: Color.White,
color = avatarColors.foreground,
)
}
}

View file

@ -24,7 +24,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.colors.avatarColors
import io.element.android.libraries.designsystem.preview.DayNightPreviews
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.theme.components.Text
@ -43,7 +42,7 @@ internal fun UserAvatarPreview() = ElementPreview {
verticalAlignment = Alignment.CenterVertically,
) {
// Note: it's OK, since the hash of "0" is 0, the hash of "1" is 1, etc.
Avatar(anAvatarData(), initialAvatarColors = avatarColors("$it"))
Avatar(anAvatarData(id = "$it"))
Text(text = "Color index $it")
}
}

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ff5cb940c05656ed7debf230c7c2d780395e30f20c5d3da3abef136afb5359fe
size 28541
oid sha256:2dc520372ac1b4ae340a1e75e0a1f4cc65f54c9e9ebf44c750309018613fa5d4
size 28865

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8c89ac73df77c2bccb0c2aa80cee1420f78e7d07f0eda89a90bffef55e8cf753
size 4464
oid sha256:7bf3e51b483ca9600d9f589721bdfe93e0977ebcfe59ff66484fcbd7cfb12e20
size 81101

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:edf63c7ae4b058c94cd611948f2bb3c3304c2646af0200e08f7b480f1ba965d8
size 29245
oid sha256:f8b78908805bb8745613be2f9fad2c1c4fd0d6087dce7f9b301b4fe3dc485d19
size 30273

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bb0d3bfcfd75cbd75fd9270ff1dc27090e5dbac79ca8db8a46d91a4c12bc966b
size 4457
oid sha256:25b86e5211512c4a676cb142b847455ba34c13eb3712f75a22c8b313ca725eeb
size 83750

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3fe351b3d0b78473fdab1d4bc806468485939734e46cb3fa6d9f9058513d4dba
size 86421
oid sha256:b051a4492303db0e5a1343269cb57301939105ab4c062db67326edb699a02d0f
size 86337

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9dbfb671a112ae3bab099db959b30dcd4185d48bd365f63373da62971df51e00
size 45246
oid sha256:88608834541e31673c52014cc56072953f1ff1814bb3f89852822ebc6f762188
size 45269

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:137a71939d978e2f10d94d49faed208c54a5fa82b32d9ba2b47a3946641d361f
size 25688
oid sha256:dda8e627414be70d99e5d7055fe32cb4d31014e5b55fb6fce326f90eb210a32f
size 26147

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eb84e5f7f23db39d8d2d162f0d55d8129ae88e984dcde816c86682981226bf4f
size 64074
oid sha256:c67a25ba48fdd4edc640f848712427656299cfd397a24805e6ebb89da533e1d9
size 63838

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eeeb724c3797679434f580261071602e2b8991b466e0e47806c7d7b0e4e4be2a
size 67838
oid sha256:67861c2fc225ca366c3c2206fcee0d59f77b232eedd29b1bce9ed630af002ea0
size 68143

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c2044763a0297a9d89c2a4ebb7fbd3ba967a5ac99a28375aeccf4766bc1a3be3
size 25762
oid sha256:7c01cba121aac57126e79becb6b5d2de7c3bee0f50418f9c17ab9228156c2030
size 26274

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:675584b016f10890e13008152ade861de50b3463de9a253353f0d1af4f57c200
size 65789
oid sha256:663b97daf508ebb9e619c1a6a14c5ea005b93bf004ed6ef7c08a202284b87e33
size 64676

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:708d5201ded559e388a453d0df87d97aa7068f4892d6acb8a3bf50497a6754eb
size 69831
oid sha256:e85d3ebafb87a593fa8977f9def17c8f45f9e067e02fe05c48b3f9650835a000
size 69456

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7816a99e6460155c0d4c8f74fec6b2f09ec724f3442f5b1e77b45e98b5d43be1
size 83585
oid sha256:a88f6e1fdc1b3cd26f21a94866d0348e458509c5ce129c86c69b2673c7dc75f1
size 84357

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ec1b567e5175c9e83aee05623270f2f2d5497c901438042075a2b57a1284a368
size 87153
oid sha256:e116827aaa9d30b356088805bf6a820cce3ba42c49e6ffca2460aab1a4cdc8ba
size 87872

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a59a7d481cdcc7b3fa216bc3ec4a20195730d27fe518a6610d9a61fb4a3b347f
size 20753
oid sha256:8f04a88c84cb7e4e6d0f487b47aaf5e80c9ae1472ab25bf5412e084c356d4bbe
size 20765

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:22ac66742c1e14c8f9ddf8f56f86fd155f6f8d3adfc90483772f4f78c71fe81c
size 27063
oid sha256:b85cf6982f409276e1bedc1a06322ecefef8ea86d4e5459a39d607fe10f5d08b
size 27093

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fd1cce3d0a456d3501f0f5c5160821210fd1060c24a66f1cacb65f9f95b44bb8
size 23792
oid sha256:d0be20df5f6bdf095fd9a93df3dc6ca81939365e4f27c8f605a1ab12b4959fc6
size 23724

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f26d62e7ca9b98ca9314305b0659f7919b58f5d7805684832e91d5f3cb6ece4
size 31162
oid sha256:31bfc0054eff2bce1e43c49fa628968504e16853a198579710d08a2134d24efd
size 31099

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5740c7f4d76a786612c5a1cb9e58c29c87778f3e8d11878f310cfda3da1bed8a
size 28445
oid sha256:245c5b206b5f560c9457069761694f0198a89ad700cfc39241b22441a7f2c31e
size 28345

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fbb6813f970b0fcfa9489d06b28b2e17d6d0fc97d2f0494553a629df930af48c
size 32919
oid sha256:70b2df85168ea6d5d7f7cbae84a91f45a9ec7fe716d4d6c087d21f8b787a3fb6
size 32648

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:633165e86d70889024469309db5a4f44eaa00456f0452e6c1447ed7e24b7bc4b
size 33059
oid sha256:4e3ad562682d7e0df76faf0041947158c0e90b93a60d2aa4129ea1d222e439ce
size 32762

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6fb2d663532efdd393063f3a1a53ad0da2bad91033dec2d6bad971f681a56a45
size 14016
oid sha256:88b77b856b1a6582aad3fe26f08a48f405d2a0cbc1a495f691de7af569bc7370
size 13744

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1e030b3d98c9d4e6a37a983b180e664b45697705a966bc9348ea432e123a3b6d
size 28604
oid sha256:9e2d4495246144df6f91ed8ad6ef5f32b507f56c2f8ab9713230e7212078d7ea
size 28479

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d75bae2ae2ee8a407d2b4652d699e664e619cffa5a7888cdf6169395abb97c6a
size 29142
oid sha256:730f27b45cb2176ac6f8415780b74e2f117b9cc3f64d4602e6c42253f65b23e7
size 29181

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:13fa1f840184a20cea94d1cd9d76480eda1c458225b4514e37213080c936d3fd
size 34888
oid sha256:5bcafa377dfdd0a3e3db955c2d81791f1c36c95b22d978090b8d4e6b063c7d69
size 34866

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5abcb5badc21e715c6f7c4330e5721b0275fdcc678ca3920ce64ae5d34829250
size 35005
oid sha256:0b77b77a20d1c3d936dea733542f1b2bd8e575ccb6d3021ce1c2d84a701bea35
size 34965

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:772d4d50bbed5bc5cebc8f636ce952fdc4951b714e4d621030a87db7a1df9c01
size 14162
oid sha256:d3092c176ec732f3e378430779a8645c02cd6c47756a6dafaf09a7fe28e79608
size 14112

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e3cd5c467381c74c579e62405bc6016da1b9b050365d04a335845a19d1ae2c41
size 29448
oid sha256:8b3cf23c4ef3ee18a3dd4a20a683266b2cdc6b6bca90b1006c109e23c82c6ebb
size 29445

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2aad1e4a3ba3691a37c9a2df872609ce7b7cbfb326deca6e5a81e6a0a50fb19b
size 52305
oid sha256:079fe39c7dced18433ef0c768b30ec0c66bda3d910b392bfc33319f6be7ce892
size 51852

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bb5f62cf093e48c40732d801cb27c51005c82f84aaf96ce86e5dc50c54ff27cb
size 49589
oid sha256:e002caef4c4be424468938e2ca05a25c6f6502340f216eca908ba8784a4d98b2
size 49289

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d4954c0ae06d16a0058b88eb9b648911eb0c8b36eba19e40031bcf5ec6c262ff
size 50257
oid sha256:d7bfc8f00d9286162292ed04e9a53f21f5f8f2f44bab88c00356d330b56fd426
size 49965

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0623f68ed17b1d7e39b2737255a2f3d5448a984bcef00ee58558a7581af84074
size 40173
oid sha256:6f23a5df96bb6faca94a8096cf4b884af1dc97a755f0664ca05c9d64657052f8
size 39772

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0623f68ed17b1d7e39b2737255a2f3d5448a984bcef00ee58558a7581af84074
size 40173
oid sha256:6f23a5df96bb6faca94a8096cf4b884af1dc97a755f0664ca05c9d64657052f8
size 39772

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9357fbad1987326b891699fb5e176e4458d1b7dbe660df95d20c079d8f38bc52
size 55154
oid sha256:9766ca3ad7562ead5bbc4b40eaf4712383a8c90876010fc0a23fc3ba4eb7eb42
size 54662

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:840b7a0a23d458680f59f328d2a8b756e80ab76e368d749a511e7352d31d0f4f
size 54196
oid sha256:b564f1c08b839c6758e3abba916a0b20f6cc0f590b27773de1d6a1e88a2cdc56
size 53899

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:062f857b2b2339f54543b70a864786b1463747cb7e45db54f76b1831938dd98f
size 54984
oid sha256:6881032ea2d387c2bb8f8dd776fe6b581c100328d13b023e190c22dc0832e4a1
size 54689

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:63070cf809fe17adedc37b9df0b9a421c453d09e8edd95869fb62f4b1b066a16
size 44827
oid sha256:9717ce6ae0559ae73cc9397976887b7acb1a534a957a3a29b0d0da2442e77130
size 44397

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:63070cf809fe17adedc37b9df0b9a421c453d09e8edd95869fb62f4b1b066a16
size 44827
oid sha256:9717ce6ae0559ae73cc9397976887b7acb1a534a957a3a29b0d0da2442e77130
size 44397

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b64a7ad8a711dcb67a5b130bac5f3083421ff79b4476060fa5f54f3b14dac173
size 38511
oid sha256:db2d848fded08ca0532f718f12ee9dab007d7bb129afcf949d26585e47efa054
size 38389

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4e335de03505f63e0b02ef98b916a1fd979b32a58f3c91bf0dc6194d6b66d671
size 28302
oid sha256:20847fc7ab9e27171ae0ae37a95e7524aac0bd2479ff5b8b1130a5bc26dbb3e6
size 28232

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5366117e506df73eb6073bfcdc76738a89262c4ff83182a381c50b98230c71c2
size 37051
oid sha256:67060b3bd4d09915ec4eda311726a8657cf09e455b5e8ca42631fa3b448ad5b7
size 37049

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:286f4ed93711fe203aace6e629971b6681ed74cb2a9cd7cb8544125144d4fb17
size 26867
oid sha256:a62ebcf0024a1876984c936c29037cf04e2e02aefb3bea461030c092fbde2937
size 26983

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:98bfdfa99e207e5f50aa6a6aa08914b8f2be407d5547f39984a0a3e05d41bab7
size 26932
oid sha256:7afef32647fb7ca666ba516c3f348d1fb168be290279869b73c3b64522e20301
size 27069

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:05e62d2584c3eda7e22068731de56223393e869c8e91ac547a148a7f84e870dc
size 26485
oid sha256:e2d9ea4c550094975fbdaa0f42c85dd871e414b1553c96b1256c8534233d6050
size 26618

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e72e276a8a0fefafe36314ec82f6ea1ca8f9bcb077afecc49f65ba977a59595f
size 26473
oid sha256:2a216a2aefd132b3ffb64e89de3c8b2013595573783f7dcb9ad6e0f04e1cbf1c
size 26607

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e72e276a8a0fefafe36314ec82f6ea1ca8f9bcb077afecc49f65ba977a59595f
size 26473
oid sha256:2a216a2aefd132b3ffb64e89de3c8b2013595573783f7dcb9ad6e0f04e1cbf1c
size 26607

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e72e276a8a0fefafe36314ec82f6ea1ca8f9bcb077afecc49f65ba977a59595f
size 26473
oid sha256:2a216a2aefd132b3ffb64e89de3c8b2013595573783f7dcb9ad6e0f04e1cbf1c
size 26607

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:080d58220454a98725f418f931c6e18c4af11821076d8cd446525098a52db6d2
size 28739
oid sha256:2333902757fee47ccdcab42188b5f5379fe48e2419896a4d525855510b7925a1
size 28241

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7da900d8aab1134bbcc472104a876c390f156a9531f1f3f7d57e2e9211be5ba6
size 28146
oid sha256:7c4bcdf48d7ba2f11cb7e09ad56fb1facce1722fe71b2b10ac5c4a86ed201e37
size 27646

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3f70d7796f416ec68599128d2da46304150b57d83262aa706e70fcf85d3b80a3
size 28198
oid sha256:fa25fe1ec3626e1726043987c5b727d5fd10660c4134d7b714616933a9e0d01c
size 27678

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3f70d7796f416ec68599128d2da46304150b57d83262aa706e70fcf85d3b80a3
size 28198
oid sha256:fa25fe1ec3626e1726043987c5b727d5fd10660c4134d7b714616933a9e0d01c
size 27678

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3f70d7796f416ec68599128d2da46304150b57d83262aa706e70fcf85d3b80a3
size 28198
oid sha256:fa25fe1ec3626e1726043987c5b727d5fd10660c4134d7b714616933a9e0d01c
size 27678

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:094a0f5436527308d2a37b52f6e0c5f12e267f214b79fae980e409da116a07ec
size 25277
oid sha256:fbe739da995dca5700bcbb6a944c611e7c0b427d39b5e085345d8a7e93759e7c
size 25201

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f0a29a48138febe8b13b1e1099fbeab2280f1b0567233614187d97117df05de0
size 24943
oid sha256:09864a80f5eaf0874dfdde8698b3fb6ef8ad95059f2d955e822f80009f49849f
size 24966

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ba052f24e62aabc015da4b38bb893148c888a858a097669b2191e7880867e371
size 52114
oid sha256:2b55dbcb731dfc40a1e100e8caf26802f759b4bcd186dbbc4432644db08f8316
size 52141

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4f8f7fd27e56aa2ca42053c249353836187467b99a9225c93c22f38365e63ccb
size 53285
oid sha256:d5953ae4bb021c39157b4118ea628ca9bb2277f9672749cc6313f0b378d31cb8
size 53312

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fbfc5593de6c7dda915b3a8bc881f0485b4b8400f52412547aa914862d1d8840
size 52245
oid sha256:fd991a67e7d6c1169e08e62cb74ed6fa7d12ad7f91d69bbfa778e0053efebfec
size 52284

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7225f3510289f07d4c273e3bb179d05df0ac9f1a2ec868f061a2622c6f9d0b84
size 54030
oid sha256:1d6ba255d9b1aee8d560b51f2bf0c1d4433c63502c83f6cf18ef8eaa598f05c4
size 54071

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d56d5666d1d7749484f19c983e3cb2125110039c80e5898684e20b7e24a3e56b
size 51312
oid sha256:dc662d180d1766706f249f1585fb100f5933206b65d4644fae65abc6a121a633
size 51331

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:398f4b1c7b21ab4c57802fb724d62b8c904f5a0c700eba507a811cb58881df49
size 53896
oid sha256:3eb1479510a8cd04d133265e33ea15115158ac55c93387d1dafa93a3a3a858f0
size 53620

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2913fc7ee2c4b32e79e0d813ee8fa54e6d3f863466b798b8194462cbd9ef4fde
size 55137
oid sha256:c0d5272b14b347f18b2d67d5fae6eaf507b8d6f7c9d361317bb6b8a062e63ceb
size 54899

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a20479945a552e2d3d3fb309c07ac7b9a66d4dfac0ad1ddf2c86c40fa0d34db9
size 54175
oid sha256:d421656ae8ad316e65f406c74dffa2ceb4e47b868b7f033f9cc4139e3e6be788
size 53909

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c9f686208853c864a9aada2c809a43e1de230e422e93af7c6330b8e78dffffec
size 55730
oid sha256:fa96d668bd220fb1e47850c86c7ded9fe99b14b9704f1a5662cfde1e932c5299
size 55443

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1e7697c3f1eb995fc0bbf084853fce1cc10e841d0275d6ff4f2d857afd81b31d
size 56103
oid sha256:dff46ed537c81602be0dea8782e37bb78669ee798ec4d422c23ff29cbbdebc17
size 55927

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:46bdcc0dcd5dd9ae0740eeb0af0b0587f1989689ec744c2f38cb4813c860bfab
size 39711
oid sha256:239a01988afb77f399b9488e3c314846a59d368ba2a7fd8bec1514ff60dbd8ab
size 39772

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ae44b96af239aee5fc7839df08f9298490add53d76c51f4778d2af4d57aa746b
size 39043
oid sha256:1b3670c1508e8548a32e51c8d1bd75d2dabce73a2bc710dc673a85f98901b5fb
size 39100

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:66cf5b700fefe4839d6956e83d7590711bc38a659e41d0aff829cf877e7dc209
size 42351
oid sha256:ec1f4a968f58c9c7faf6d51ec5dc8e31f00d867eb506b35a466e6a2242945c74
size 42131

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9372f8f7e0a173d680fd860fbbe7e4319409b82b02cad8b83eca2059fbf35bba
size 42486
oid sha256:4b0006728215e73456e78192ce7d774d8bc792d04fef9fcfa3b76c081dfc8deb
size 41996

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:964d97909629c1228e96d923ddb478735475839b8540c02142444f9ebd5bf400
size 13100
oid sha256:115262f8a16f26506139c7b8f630e85520639ae5dca424028bc9a721942aebc5
size 13168

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bd8ff4a09babf30be0eb3c336f3cbe6a1508a21696512d0dadbcc9d543e6e34f
size 12356
oid sha256:5055b4cc1bdf5a4b00e901e5e40c0cdcc415d22d7154ef38888936928100928e
size 12365

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:85530997942e39ce73512513ab0698494778168bc28cfab543b50b721c1807f5
size 12855
oid sha256:1c4ce3a10a671acfb2e619356cf792b5f11325a55edca30c57813aa7823e878d
size 12591

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2e0a638be5745c75c2663116877d380c83df093d226d2c969d4f6620e8cee109
size 12965
oid sha256:28f315ebf657e95e666b6599b096d1779b1c9f3cefea3e679a9054d80f89d53b
size 12412

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48311f503e47fc462a1f4d5afa2ea82c0e0eef99aaddea9cfabf5517af37bcd5
size 29796
oid sha256:19ac99f81f3e72f0492d33278a9e549763493ea7ff111412821c62d934a6b9f6
size 29522

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1aaa12b291dc1e187835114eb8c5c49bb4eb5bf16d87b039272a6e32e16cc6e2
size 23369
oid sha256:d15154d8ad933acf9a52a73fb650d28489d780cae71b44c7edf10b682cec1ff9
size 23143

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:82e2cd2caae9b20cb2e3990216b0ecdf0bcfde4478911f00168e4f936c223889
size 28736
oid sha256:0958e2a99818be0125b700df470a944a3202e0336d440b073cc73ccc6305173f
size 28482

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b2cb829eadcf07760a073af775be6d15e91624a9366d7bde366d7c9cfabe2c9b
size 28456
oid sha256:da07b8de2fd24e9e6bc7fea309e4d5fce68f2143316a5940a41f4270e9d48646
size 28099

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e142fdf51287c82112267ac8070ff4d6c2fc3f92c14c82c16127aa1822823312
size 28839
oid sha256:1a7e0644fff4f219712719b4837cf4e5db5c8cf4c9ec1e21fcd1362859a155f3
size 28607

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:447fdfc57825e1da34d294b7e212984b088e283810fe961c5b21b66f3c770cbb
size 24971
oid sha256:8444587bfa6ac65c6464b102bbac0bf679fecc0b193cc664540f39518b30c25d
size 24785

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2b27f3e2719d238b61a8f83264417c9c2d9e561bbaf12eea20f9169366c90489
size 31076
oid sha256:22b0a03bec31400bd88a51c160bf63132f0c8f7e1cf02041a901778c3f1e27ef
size 30856

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b5b4b04d5163e8acec4f156396fd239296b7fe3fc251fc5efa78200f4b6a0e83
size 24352
oid sha256:8308dc746a7a51a7bffa49cbf1436097565a175298073afe3d94558d77307510
size 24145

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:61b56cbc0193c9081ceb3c8662afc2da8686a7de4a3e8ed12af2f7dadfd0328a
size 30784
oid sha256:32f3030c3bfb1bc9ed4c4378698df073cb29285477538c81592c38668953ffc8
size 30562

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f7ff9340f9788a65fe6ec4707cba125196fed08bb57ead4dce8bce2efb70f1f6
size 29714
oid sha256:0587640a3ffb707c94d25da38d9f327500c3d3a96d0b57ba92a3c4201014fc11
size 29448

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3ab65feb9ba77f6a08e52fae42f32133845f169c651049e90c32c3abfbd8cea1
size 30835
oid sha256:1017fcd62a71f7a2a82dbee3ee2a5233747eb3c888c4b6302f65d9aa02c5492c
size 30673

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bf0735290b594857c52df56f2704b3e9ac7bae00a61a26b956febd5c6679357a
size 28228
oid sha256:4e01d7e598c771260bf4ef91d0ae99081e80f318c1e0300cda3dc1ce780c80ee
size 28078

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:41c029826a7f0d722ff9493a287dc45ed01c4e0f02e1fbdb4f69abd0b762b5ac
size 28592
oid sha256:44917f87510b19e963ab02f1324057b694815af1437300c8c4763ba617848dc5
size 29113

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5b4898e10aef39b1e7e9d16d9f214fab756dd203403de00e263a6049d4ff8b86
size 26594
oid sha256:c5fc0b0ad8f0b5524db430195f56526cf4c0d0ec48ac3bb90e7f339e4859507c
size 27041

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:473160d4ce97eecd9bc9ed67011c505e536272ce1acf838516c34f3b992f74a8
size 45367
oid sha256:6d289d744e4ab63c6f9fc679b3e431ca4a8a3e905b0a34f4dd4b6d8ec5f345b3
size 45347

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b20115a793c0b021d077d816061b5b221f8e40581a6cf715fb4701941a38c207
size 38583
oid sha256:c61dfd03185e0eff646f3e6d4c433881825299129d979369645d689305a6234c
size 38500

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:695041dfecf9415914d4f642c81154c8f90c8460bbd5c2023c9cce91352d2245
size 29528
oid sha256:d1071bdafa2d9c1aa08e81ecc4b7017957725eb90d0fcb23f455b5f80f98691e
size 30568

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f8b8e95fc48731162ddf10a3b00bee300ba6fcaa02ea48455a68ce834915b8d
size 27532
oid sha256:e391357db9d24d00fa2dcadb4cad590c7e71971b113ccccf7370edc396ae4da7
size 28171

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:867deebdc8a7e1844718508501e05d1f2f811f9847c60815fea86113ccb82bbd
size 47057
oid sha256:6fec1683e88a36fa4c95f9bd83b01030f9b375cfff2034f723c81c31c6615f5d
size 46229

Some files were not shown because too many files have changed in this diff Show more