Address design comments on the change server screen (#196)

* Address design comments on the change server screen

* Update screenshots

* Address review comments.
This commit is contained in:
Jorge Martin Espinosa 2023-03-09 14:51:44 +01:00 committed by GitHub
parent f6dc48bec8
commit b149914c73
51 changed files with 167 additions and 105 deletions

1
changelog.d/101.bugfix Normal file
View file

@ -0,0 +1 @@
Address design issues in the change server screen

View file

@ -17,6 +17,7 @@
package io.element.android.features.login.changeserver package io.element.android.features.login.changeserver
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@ -44,16 +45,26 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.ExperimentalTextApi
import androidx.compose.ui.text.ParagraphStyle
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.UrlAnnotation
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.features.login.R import io.element.android.features.login.R
import io.element.android.features.login.error.changeServerError import io.element.android.features.login.error.changeServerError
import io.element.android.features.login.util.LoginConstants
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.ElementTextStyles import io.element.android.libraries.designsystem.ElementTextStyles
import io.element.android.libraries.designsystem.LinkColor
import io.element.android.libraries.designsystem.components.ClickableLinkText
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog
import io.element.android.libraries.designsystem.components.form.textFieldState import io.element.android.libraries.designsystem.components.form.textFieldState
@ -70,12 +81,13 @@ import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.TextField import io.element.android.libraries.designsystem.theme.components.TextField
import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.designsystem.theme.components.TopAppBar
import io.element.android.libraries.designsystem.theme.components.onTabOrEnterKeyFocusNext import io.element.android.libraries.designsystem.theme.components.onTabOrEnterKeyFocusNext
import io.element.android.libraries.designsystem.theme.roomListRoomName
import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag import io.element.android.libraries.testtags.testTag
import org.matrix.rustcomponents.sdk.AuthenticationException import org.matrix.rustcomponents.sdk.AuthenticationException
import io.element.android.libraries.ui.strings.R as StringR import io.element.android.libraries.ui.strings.R as StringR
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class, ExperimentalTextApi::class)
@Composable @Composable
fun ChangeServerView( fun ChangeServerView(
state: ChangeServerState, state: ChangeServerState,
@ -215,12 +227,27 @@ fun ChangeServerView(
} }
} }
Spacer(Modifier.height(8.dp)) Spacer(Modifier.height(8.dp))
Text( val footerMessage = stringResource(StringR.string.server_selection_server_footer)
text = stringResource(StringR.string.server_selection_server_footer), val footerAction = stringResource(StringR.string.server_selection_server_footer_action)
val footerText = buildAnnotatedString {
val defaultColor = MaterialTheme.colorScheme.tertiary
withStyle(ParagraphStyle(textAlign = TextAlign.Start)) {
withStyle(SpanStyle(color = defaultColor)) {
append(footerMessage)
append(" ")
}
val start = length
withStyle(SpanStyle(color = LinkColor)) {
append(footerAction)
}
addUrlAnnotation(UrlAnnotation(LoginConstants.SLIDING_SYNC_READ_MORE_URL), start, length)
}
}
ClickableLinkText(
text = footerText,
interactionSource = MutableInteractionSource(),
modifier = Modifier.padding(horizontal = 16.dp), modifier = Modifier.padding(horizontal = 16.dp),
style = ElementTextStyles.Regular.caption1, style = ElementTextStyles.Regular.caption1,
textAlign = TextAlign.Start,
color = MaterialTheme.colorScheme.tertiary,
) )
Spacer(Modifier.height(32.dp)) Spacer(Modifier.height(32.dp))
Button( Button(
@ -259,6 +286,8 @@ internal fun SlidingSyncNotSupportedDialog(onLearnMoreClicked: () -> Unit, onDis
onDismiss = onDismiss, onDismiss = onDismiss,
submitText = stringResource(StringR.string.action_learn_more), submitText = stringResource(StringR.string.action_learn_more),
onSubmitClicked = onLearnMoreClicked, onSubmitClicked = onLearnMoreClicked,
onCancelClicked = onDismiss,
emphasizeSubmitButton = true,
title = stringResource(StringR.string.server_selection_sliding_sync_alert_title), title = stringResource(StringR.string.server_selection_sliding_sync_alert_title),
content = stringResource(StringR.string.server_selection_sliding_sync_alert_message), content = stringResource(StringR.string.server_selection_sliding_sync_alert_message),
) )

View file

@ -68,4 +68,4 @@ val ElementGreen = Color(0xFF0DBD8B)
val ElementOrange = Color(0xFFD9B072) val ElementOrange = Color(0xFFD9B072)
val Vermilion = Color(0xFFFF5B55) val Vermilion = Color(0xFFFF5B55)
val LinkColor = Color(0xFF054F6E) val LinkColor = Color(0xFF0086E6)

View file

@ -30,6 +30,7 @@ import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.ExperimentalTextApi
import androidx.compose.ui.text.ParagraphStyle import androidx.compose.ui.text.ParagraphStyle
import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextLayoutResult
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
@ -40,14 +41,15 @@ import io.element.android.libraries.designsystem.theme.components.Text
import kotlinx.collections.immutable.ImmutableMap import kotlinx.collections.immutable.ImmutableMap
import kotlinx.collections.immutable.persistentMapOf import kotlinx.collections.immutable.persistentMapOf
@OptIn(ExperimentalTextApi::class)
@Composable @Composable
fun ClickableLinkText( fun ClickableLinkText(
text: AnnotatedString, text: AnnotatedString,
linkAnnotationTag: String,
onClick: () -> Unit,
onLongClick: () -> Unit,
interactionSource: MutableInteractionSource, interactionSource: MutableInteractionSource,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
linkAnnotationTag: String = "",
onClick: () -> Unit = {},
onLongClick: () -> Unit = {},
style: TextStyle = LocalTextStyle.current, style: TextStyle = LocalTextStyle.current,
inlineContent: ImmutableMap<String, InlineTextContent> = persistentMapOf(), inlineContent: ImmutableMap<String, InlineTextContent> = persistentMapOf(),
) { ) {
@ -71,12 +73,14 @@ fun ClickableLinkText(
) { offset -> ) { offset ->
layoutResult.value?.let { layoutResult -> layoutResult.value?.let { layoutResult ->
val position = layoutResult.getOffsetForPosition(offset) val position = layoutResult.getOffsetForPosition(offset)
val linkAnnotations = val linkUrlAnnotations = text.getUrlAnnotations(position, position)
.map { AnnotatedString.Range(it.item.url, it.start, it.end, linkAnnotationTag) }
val linkStringAnnotations = linkUrlAnnotations +
text.getStringAnnotations(linkAnnotationTag, position, position) text.getStringAnnotations(linkAnnotationTag, position, position)
if (linkAnnotations.isEmpty()) { if (linkStringAnnotations.isEmpty()) {
onClick() onClick()
} else { } else {
uriHandler.openUri(linkAnnotations.first().item) uriHandler.openUri(linkStringAnnotations.first().item)
} }
} }
} }

View file

@ -16,9 +16,6 @@
package io.element.android.libraries.designsystem.components.dialogs package io.element.android.libraries.designsystem.components.dialogs
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.AlertDialogDefaults
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@ -29,28 +26,33 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview 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.Dp
import io.element.android.libraries.designsystem.ElementTextStyles
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.BooleanProvider
import io.element.android.libraries.ui.strings.R as StringR import io.element.android.libraries.ui.strings.R as StringR
@Composable @Composable
fun ConfirmationDialog( fun ConfirmationDialog(
title: String, title: String,
content: String, content: String,
onSubmitClicked: () -> Unit,
onDismiss: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
submitText: String = stringResource(id = StringR.string.ok), submitText: String = stringResource(id = StringR.string.ok),
cancelText: String = stringResource(id = StringR.string.action_cancel), cancelText: String = stringResource(id = StringR.string.action_cancel),
thirdButtonText: String? = null, thirdButtonText: String? = null,
onSubmitClicked: () -> Unit = {}, emphasizeSubmitButton: Boolean = false,
onCancelClicked: () -> Unit = {}, onCancelClicked: () -> Unit = onDismiss,
onThirdButtonClicked: () -> Unit = {}, onThirdButtonClicked: () -> Unit = {},
onDismiss: () -> Unit = {},
shape: Shape = AlertDialogDefaults.shape, shape: Shape = AlertDialogDefaults.shape,
containerColor: Color = AlertDialogDefaults.containerColor, containerColor: Color = AlertDialogDefaults.containerColor,
iconContentColor: Color = AlertDialogDefaults.iconContentColor, iconContentColor: Color = AlertDialogDefaults.iconContentColor,
titleContentColor: Color = AlertDialogDefaults.titleContentColor, // According to the design team, `primary` should be used here instead of the default `onSurface`
titleContentColor: Color = MaterialTheme.colorScheme.primary,
textContentColor: Color = AlertDialogDefaults.textContentColor, textContentColor: Color = AlertDialogDefaults.textContentColor,
tonalElevation: Dp = AlertDialogDefaults.TonalElevation, tonalElevation: Dp = AlertDialogDefaults.TonalElevation,
) { ) {
@ -79,9 +81,16 @@ fun ConfirmationDialog(
TextButton( TextButton(
onClick = { onClick = {
onSubmitClicked() onSubmitClicked()
} },
) { ) {
Text(submitText) Text(
submitText,
style = if (emphasizeSubmitButton) {
ElementTextStyles.Bold.subheadline
} else {
MaterialTheme.typography.labelLarge
}
)
} }
}, },
shape = shape, shape = shape,
@ -95,17 +104,22 @@ fun ConfirmationDialog(
@Preview @Preview
@Composable @Composable
internal fun ConfirmationDialogLightPreview() = ElementPreviewLight { ContentToPreview() } internal fun ConfirmationDialogLightPreview(@PreviewParameter(BooleanProvider::class) emphasizeSubmitButton: Boolean) =
ElementPreviewLight { ContentToPreview(emphasizeSubmitButton) }
@Preview @Preview
@Composable @Composable
internal fun ConfirmationDialogDarkPreview() = ElementPreviewDark { ContentToPreview() } internal fun ConfirmationDialogDarkPreview(@PreviewParameter(BooleanProvider::class) emphasizeSubmitButton: Boolean) =
ElementPreviewDark { ContentToPreview(emphasizeSubmitButton) }
@Composable @Composable
private fun ContentToPreview() { private fun ContentToPreview(emphasizeSubmitButton: Boolean) {
ConfirmationDialog( ConfirmationDialog(
title = "Title", title = "Title",
content = "Content", content = "Content",
thirdButtonText = "Disable" thirdButtonText = "Disable",
onSubmitClicked = {},
onDismiss = {},
emphasizeSubmitButton = emphasizeSubmitButton,
) )
} }

View file

@ -24,6 +24,7 @@ import io.element.android.libraries.designsystem.Azure
import io.element.android.libraries.designsystem.Black_800 import io.element.android.libraries.designsystem.Black_800
import io.element.android.libraries.designsystem.Black_950 import io.element.android.libraries.designsystem.Black_950
import io.element.android.libraries.designsystem.DarkGrey import io.element.android.libraries.designsystem.DarkGrey
import io.element.android.libraries.designsystem.Gray_300
import io.element.android.libraries.designsystem.Gray_400 import io.element.android.libraries.designsystem.Gray_400
import io.element.android.libraries.designsystem.Gray_450 import io.element.android.libraries.designsystem.Gray_450
import io.element.android.libraries.designsystem.SystemGrey5Dark import io.element.android.libraries.designsystem.SystemGrey5Dark
@ -59,7 +60,7 @@ val materialColorSchemeDark = darkColorScheme(
surface = Black_800, surface = Black_800,
onSurface = Color.White, onSurface = Color.White,
surfaceVariant = Black_950, surfaceVariant = Black_950,
onSurfaceVariant = Color.White, onSurfaceVariant = Gray_300,
// TODO surfaceTint = primary, // TODO surfaceTint = primary,
// TODO inverseSurface = ColorDarkTokens.InverseSurface, // TODO inverseSurface = ColorDarkTokens.InverseSurface,
// TODO inverseOnSurface = ColorDarkTokens.InverseOnSurface, // TODO inverseOnSurface = ColorDarkTokens.InverseOnSurface,

View file

@ -12,6 +12,7 @@
<string name="login_hide_password">Hide password</string> <string name="login_hide_password">Hide password</string>
<string name="ex_choose_server_subtitle">What is the address of your server?</string> <string name="ex_choose_server_subtitle">What is the address of your server?</string>
<string name="server_selection_server_footer">You can only connect to an existing server that supports sliding sync. Your homeserver admin will need to configure it.</string> <string name="server_selection_server_footer">You can only connect to an existing server that supports sliding sync. Your homeserver admin will need to configure it.</string>
<string name="server_selection_server_footer_action">Learn more</string>
<string name="server_selection_sliding_sync_alert_title">Server not supported</string> <string name="server_selection_sliding_sync_alert_title">Server not supported</string>
<string name="server_selection_sliding_sync_alert_message">This server currently doesn\'t support sliding sync.</string> <string name="server_selection_sliding_sync_alert_message">This server currently doesn\'t support sliding sync.</string>
<!-- Create room --> <!-- Create room -->

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:510c17406a13ce64a9b7578d70535dac7fe20e9c3a9a4ab3c8cab775bc46f568 oid sha256:5451d8fb06cef9a346c92db43fa5994e39f3079b67b99d867a31d9b8a645cb0d
size 19718 size 19198

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:0c48397dc1a7ec94678c9423d3f4734422390679882d838c391913fe544042bc oid sha256:c5ec4955c5bd390d8f4681f709adcb7152de690bb9033827a9167bb0a4afeed3
size 39873 size 41337

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:be550cedf5e99a3c80c50d201e8cf6faaed9161a1e5007eeff11fd9b46d844d8 oid sha256:ad203c77d755606febd055a852a7288a670abab4bd6d281df1262a4cd02b8bff
size 43345 size 44823

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:fde980094076a921eee29d84663b6b5f09cf363c51681eb7702d15e8922d2950 oid sha256:db98ec6bb8890f95367fb81bb61b592a883f113c92211b69f7d71431af00975a
size 42663 size 44135

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:625bcb0c020582e470474463458c4a8335c84e6048bb12c4f57dbed92f257f57 oid sha256:545df3870e1a6034180b6ebb23366a5855105df09ac741fe7a2e8c97e3df5086
size 43384 size 44870

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:be550cedf5e99a3c80c50d201e8cf6faaed9161a1e5007eeff11fd9b46d844d8 oid sha256:ad203c77d755606febd055a852a7288a670abab4bd6d281df1262a4cd02b8bff
size 43345 size 44823

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e157e6b9c4d3e6c888f4360b45ed3ae13306407bcb4b55ef6a168341ad56b250 oid sha256:3e0939baaec56f1be550ab960cd66c6e4541060ed36ec487b487d4ffa1c6911a
size 36585 size 38103

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:a30b81972f9927741ec5298d32cd28d13bb2ad5b4f044f42e42275722cb2dc40 oid sha256:0baf660665cdce26b9e0716f1492f007cdf2d09d0989ae400b8677aafee80533
size 40490 size 41924

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:307c1a0c2741b43ebfc2c135367865e4cb85f8ddf31f6c6fb112c18e617fb47d oid sha256:28c94b5d7d5caf5e5b00b1060c4538422dd50c6f1d8168d2948d9a4b8634f658
size 39314 size 40818

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:194e3055a30dcb721a0c62e81cf9a326993e587d0d3805f71ca3eaed901f8fa4 oid sha256:de060d43920f967c80f9795a28e7c84467f86b559ef1e434d605ec4c61f0400e
size 40524 size 41954

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:a30b81972f9927741ec5298d32cd28d13bb2ad5b4f044f42e42275722cb2dc40 oid sha256:0baf660665cdce26b9e0716f1492f007cdf2d09d0989ae400b8677aafee80533
size 40490 size 41924

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:5128c12c3186abdab9020891825731fe1207421f86e7142f15fd67b15d872efe oid sha256:ae82ef6285127f343f0ebee35cedc6f28132dde37c3303bbc33aa881c471c48c
size 33314 size 32466

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:7b3c1d84c57ac35d57ddcadeffaa3efe3cfb35d8472cb499b113efeee27494f6 oid sha256:50627ff6140b8fb9eed181e812740a8bf8cf4cdb23cb4cf2fa9cd0b37fb880bc
size 36118 size 35224

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:a339ab789eb6710aa5edba53acc46a61de373566089590940ab4c8233e97558b oid sha256:8f94523e18a1eb82324325f0e3f8439d4d457d6d4883cd75a7fa6169f90bbdf4
size 34721 size 34229

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:675c1cbfc80acec11434153dacb1d69b0cf6122fb068db8a92ae86e039a54c71 oid sha256:fe3431804d6d84b8588b0fb475bd824159abe4d0a7e35f0b7967b08477b07778
size 34091 size 33523

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:8137f8ed97a1a924fc76e16c8f0f0fc5a4a866d989460859b98edfcb5c7f98b7 oid sha256:3d1c502239f0fd9cdd7fa286275d299b74597a2b0b5d0f081503a7db3cb39f52
size 30996 size 30277

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:a339ab789eb6710aa5edba53acc46a61de373566089590940ab4c8233e97558b oid sha256:8f94523e18a1eb82324325f0e3f8439d4d457d6d4883cd75a7fa6169f90bbdf4
size 34721 size 34229

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:76623bcd15bba7ba56a377396ae5909fb11be2b823ad9acec3460bf303744b76 oid sha256:b9f0ccf7c44ec97173ac34554dcd143065b9141f2a1ae58d1eb436ebd3427231
size 5087 size 5170

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:dd10104dbe89a00378f167c76283d08417b4599d27aabc16a73fc2be6e6b8137 oid sha256:92ab01744efdb2b4ecc142b1a9d31a69ca9759607ce8d786c38fd3e25f5242d1
size 5155 size 5115

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:a11dfc14ce5ab8c38dfdf5be75677c3e21089994e7571c6734f3925a3f84e38e oid sha256:8a5cc544c074ed497560a68195655b858c29b3e4e433b4fde14cfb46ef74a892
size 44441 size 44434

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:74d3f02e64692a5457155f0cc7784f84697fdcb26356eab1aa6c6711fdeb1d5c oid sha256:e30fd9b73928ad8d12f88f26a6593f81cf16cb511241cea72321547977db4365
size 44386 size 44386

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:7dbd8905aa8a0ecaf14585dcac1562ed1668b022f2f38b8bc6146259447c5e90 oid sha256:0a74fd9b4986b758b0c689da29c7eeac055befd1009a2b6bc49e01b56a19b85a
size 54382 size 53480

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:04ac815269914dce155e08aca470be0e3fab7791af69aa93c5fb11ae3503b3d2 oid sha256:5ffe2a0c8d2e9adba5ae0643727982bff1edf5d6977fe43ca76417d033b75dab
size 178384 size 177404

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e828aac8c3edcda28cb04a7c1469148c99b3151786a67ac63a260b1310bb96e6 oid sha256:4d995bd6d70846a5e0662220a087ea0c32c7d96b7c6516b36dbbb3834c8a8f7a
size 26511 size 24837

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:98d52f889f8803dd751f84b9e3fa065309a972e9f7b9a86f0cae697898c81670 oid sha256:be0b29f6bff994c832be9b7970c2acb19b0c5e5c5676d0f9fd11bf716ef14cc0
size 24745 size 24840

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:01e8b6c8a7419f5053f398bfc2d0ce37fc1381274d568b344632bce1b8d02659 oid sha256:8ce3ce57b0b52ff01e9f47884802e5847ff67af04f70bf0f287cdd26da098fd2
size 29276 size 27408

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:9b94b561d6e4211772c1fd5315f9db28f26a964af46ca94af8bc5cd6fc48c578 oid sha256:f93b061d0f155b3a86e399661f3b3cc63fb30809b1a77a0f5d936dafde810baa
size 27270 size 27411

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:dab39f2a090726fb292b38b49c102a475603a5bbdaca538500a1619fc8cb9636 oid sha256:23afdbfb4262b15b1855b434790e661da479bb7b0a310756de5c8e1f3ba2d351
size 23777 size 23773

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:ff04bf07f8c24b3b19d4926bb3c51b257166befe062fe8b8012d2e92dbfe3491 oid sha256:8bca09418758a20493dae2e73a747449af8a448ad3a3cc4c5aae2e08a425f3fb
size 13477 size 13464

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:328963ebd74fbbe47fd4a4d1f0edce5bf014d88a266c114e50a5274e87a88fe8 oid sha256:90e726f5086c32da2a9bf2887e5295a761748ba991cd541a4e119f14bc57b0e8
size 7154 size 7159

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:3c8868d4974f23637afed9ecd062b88421e2b39ffe22f19742b946afc91caeb6 oid sha256:0fc272268179409483fc5fad89aa00714a6811c63e478b5c696d4ab0338ce6bf
size 37838 size 37781

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:001f8509e1e21f53e4d19285875ac76b937ea73931f5df5bf57b050a008d45c1 oid sha256:716d8d42019944987e856dbe0978e9f8967998defb7421bcad12edbc50cec0a8
size 13126 size 13020

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e587aade6a2dc96e9d0f4bfe2529ef1e6d2d6359b65530ac22d26160d876e180
size 12955

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:716d8d42019944987e856dbe0978e9f8967998defb7421bcad12edbc50cec0a8
size 13020

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:3961fa465a6b11c6b762f39980febed8cce6be557780327b24dada42c486d258 oid sha256:609bd13480751ae36a6192a0609ca8d10f897bd25049bea3091e6852ab598433
size 13001 size 13052

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8c7c48cae8d37b026d5c1ad72fc69090679aaf3d3ad4d8fdbaffbb792b22c186
size 12981

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:609bd13480751ae36a6192a0609ca8d10f897bd25049bea3091e6852ab598433
size 13052

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:4f3acd334b5698e5b8f709eace3b8ba93218928012777a827d50d8057a02bda5 oid sha256:94856975f59d30d85b47f14d7ddb7bc93a435060aa19b0fdc3f7de027231e226
size 10484 size 10311

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:3c6df3331874bf0037100cf9f989fa0bb06f5eec57794eb887699e80a0d53fd5 oid sha256:74714d068fe3654b88b1847559a1aaf2f744fad8db14e7ea5f4de8dd1963b68d
size 9991 size 9485

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:35c286741bedf3dd27b206e499a585ddbd78cc1d0728e17e0ca6caf7788213a3 oid sha256:b99eecb6d174058b9782e204d26c1d9e630d2a1b7bb8ce3fb1422e00b23af828
size 6517 size 6542

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:0553e19671b9285c781d5f16eaf988aaed0a5eebd04445dcd571b56b7076bbce oid sha256:01f1ebe3c4ea49287cad6920e6125794424e7db562ca6f421921e713587305fe
size 42123 size 41847

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:8cbc253fcab9fa5724a7f65d186524949c1b6f0ce7a798064e1654d083854c77 oid sha256:d2655207242a616216b40041d34af1eafff311fefd5cb60773ebea379623b8b0
size 103194 size 103469

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:03bfd855f6e010d2d4dc0cb9f3c13e76a4f2bbcda98b086dabcd33f201ebe10a oid sha256:2bc66a477d35143ca76e8a2bf9660cc4d87df57b1388ebca892de5eae1f12c86
size 39486 size 39277

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:94ac7f61151a93051b6869aff30823d3995cd4229697e283d3490303f69377bc oid sha256:cc8026b2bf6fbc4afaf2641d2deba1b3ae27d582dbc30c70841356232aa8cbbe
size 116815 size 117237