Yet another merge from master, need to be faster... ;)

This commit is contained in:
Sebastian Wolf 2020-11-23 12:08:25 +01:00
commit 51cad07231
81 changed files with 711 additions and 1023 deletions

View file

@ -9,8 +9,8 @@ Sebastian J. Wolf [sebastian@ygriega.de](mailto:sebastian@ygriega.de) and severa
Fernschreiber wouldn't be the same without all the people helping in making it better. Thank you very much to all contributors! Fernschreiber wouldn't be the same without all the people helping in making it better. Thank you very much to all contributors!
### Code (Features, Bugfixes, Optimizations etc.) ### Code (Features, Bugfixes, Optimizations etc.)
- Chat list model, notifications, TDLib receiver, animated stickers, project dependencies: [Slava Monich](https://github.com/monich) - Chat list model, chat model, notifications, TDLib receiver, animated stickers, project dependencies, qml/c++ optimizations, chatPhoto, TDLibFile, code reviews, logging categories: [Slava Monich](https://github.com/monich)
- Chat info page, performance improvements to chat page, location support, app initialization/registration with Telegram, project dependencies: [jgibbon](https://github.com/jgibbon) - Chat info page, performance improvements to chat page, location support, app initialization/registration with Telegram, project dependencies, emoji handling, qml/js optimizations, multi-message actions, i18n fixes, chat permission handling, code reviews, logging categories: [jgibbon](https://github.com/jgibbon)
- Copy message to clipboard [Christian Stemmle](https://github.com/chstem) - Copy message to clipboard [Christian Stemmle](https://github.com/chstem)
### Logo/Icon ### Logo/Icon
@ -44,6 +44,13 @@ You get the Telegram API ID and hash as soon as you've registered your own appli
Moreover, you need to have a compiled version of [TDLib](https://github.com/tdlib/td) in the sub-directory `tdlib`. This sub-directory must contain another sub-directory that fits to the target device architecture (e.g. armv7hl, i486). Within this directory, there needs to be a folder called `lib` that contains at least `libtdjson.so`. For armv7hl the relative path would consequently be `tdlib/armv7hl/lib`. Moreover, you need to have a compiled version of [TDLib](https://github.com/tdlib/td) in the sub-directory `tdlib`. This sub-directory must contain another sub-directory that fits to the target device architecture (e.g. armv7hl, i486). Within this directory, there needs to be a folder called `lib` that contains at least `libtdjson.so`. For armv7hl the relative path would consequently be `tdlib/armv7hl/lib`.
## Debug
Fernschreiber does only output a few TDLib messages by default. To get its own debug log messages, you can either run a debug build to see all of them or use the environment variable `QT_LOGGING_RULES` to specify/filter which messages you'd like to see.
Run `QT_LOGGING_RULES="fernschreiber.*=true" harbour-fernschreiber` to see all messages or replace the `*` with specific logging categories. You'll find the logging category inside the corresponding `.cpp` file for backend usage or you can use `JS` to only see frontend messages.
## Contribute
If you want to contribute bug fixes, improvements, new features etc. please create a pull request (PR). PRs are always welcome and will be reviewed as soon as possible, but may take some time. :) If you want to contribute bug fixes, improvements, new features etc. please create a pull request (PR). PRs are always welcome and will be reviewed as soon as possible, but may take some time. :)
## Credits ## Credits

View file

@ -28,6 +28,7 @@ SOURCES += src/harbour-fernschreiber.cpp \
src/dbusinterface.cpp \ src/dbusinterface.cpp \
src/emojisearchworker.cpp \ src/emojisearchworker.cpp \
src/fernschreiberutils.cpp \ src/fernschreiberutils.cpp \
src/mceinterface.cpp \
src/notificationmanager.cpp \ src/notificationmanager.cpp \
src/processlauncher.cpp \ src/processlauncher.cpp \
src/stickermanager.cpp \ src/stickermanager.cpp \
@ -64,6 +65,7 @@ DISTFILES += qml/harbour-fernschreiber.qml \
qml/components/chatInformationPage/ChatInformationTextItem.qml \ qml/components/chatInformationPage/ChatInformationTextItem.qml \
qml/components/chatInformationPage/EditGroupChatPermissionsColumn.qml \ qml/components/chatInformationPage/EditGroupChatPermissionsColumn.qml \
qml/components/chatInformationPage/EditSuperGroupSlowModeColumn.qml \ qml/components/chatInformationPage/EditSuperGroupSlowModeColumn.qml \
qml/js/debug.js \
qml/js/functions.js \ qml/js/functions.js \
qml/pages/ChatInformationPage.qml \ qml/pages/ChatInformationPage.qml \
qml/pages/ChatPage.qml \ qml/pages/ChatPage.qml \
@ -146,8 +148,11 @@ HEADERS += \
src/chatmodel.h \ src/chatmodel.h \
src/dbusadaptor.h \ src/dbusadaptor.h \
src/dbusinterface.h \ src/dbusinterface.h \
src/debuglog.h \
src/debuglogjs.h \
src/emojisearchworker.h \ src/emojisearchworker.h \
src/fernschreiberutils.h \ src/fernschreiberutils.h \
src/mceinterface.h \
src/notificationmanager.h \ src/notificationmanager.h \
src/processlauncher.h \ src/processlauncher.h \
src/stickermanager.h \ src/stickermanager.h \

View file

@ -20,6 +20,8 @@ import QtQuick 2.6
import Sailfish.Silica 1.0 import Sailfish.Silica 1.0
import QtMultimedia 5.6 import QtMultimedia 5.6
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import "../js/debug.js" as Debug
Item { Item {
id: audioMessageComponent id: audioMessageComponent
@ -249,39 +251,39 @@ Item {
onStatusChanged: { onStatusChanged: {
if (status == MediaPlayer.NoMedia) { if (status == MediaPlayer.NoMedia) {
console.log("No Media"); Debug.log("No Media");
audioBusyIndicator.visible = false; audioBusyIndicator.visible = false;
} }
if (status == MediaPlayer.Loading) { if (status == MediaPlayer.Loading) {
console.log("Loading"); Debug.log("Loading");
audioBusyIndicator.visible = true; audioBusyIndicator.visible = true;
} }
if (status == MediaPlayer.Loaded) { if (status == MediaPlayer.Loaded) {
console.log("Loaded"); Debug.log("Loaded");
audioBusyIndicator.visible = false; audioBusyIndicator.visible = false;
} }
if (status == MediaPlayer.Buffering) { if (status == MediaPlayer.Buffering) {
console.log("Buffering"); Debug.log("Buffering");
audioBusyIndicator.visible = true; audioBusyIndicator.visible = true;
} }
if (status == MediaPlayer.Stalled) { if (status == MediaPlayer.Stalled) {
console.log("Stalled"); Debug.log("Stalled");
audioBusyIndicator.visible = true; audioBusyIndicator.visible = true;
} }
if (status == MediaPlayer.Buffered) { if (status == MediaPlayer.Buffered) {
console.log("Buffered"); Debug.log("Buffered");
audioBusyIndicator.visible = false; audioBusyIndicator.visible = false;
} }
if (status == MediaPlayer.EndOfMedia) { if (status == MediaPlayer.EndOfMedia) {
console.log("End of Media"); Debug.log("End of Media");
audioBusyIndicator.visible = false; audioBusyIndicator.visible = false;
} }
if (status == MediaPlayer.InvalidMedia) { if (status == MediaPlayer.InvalidMedia) {
console.log("Invalid Media"); Debug.log("Invalid Media");
audioBusyIndicator.visible = false; audioBusyIndicator.visible = false;
} }
if (status == MediaPlayer.UnknownStatus) { if (status == MediaPlayer.UnknownStatus) {
console.log("Unknown Status"); Debug.log("Unknown Status");
audioBusyIndicator.visible = false; audioBusyIndicator.visible = false;
} }
} }

View file

@ -10,14 +10,13 @@ PhotoTextsListItem {
photoData: photo_small || ({}) photoData: photo_small || ({})
} }
property int ownUserId property int ownUserId
property url emojiBase: "../js/emoji/"
// chat title // chat title
primaryText.text: title ? Emoji.emojify(title + ( display.notification_settings.mute_for > 0 ? " 🔇" : "" ), Theme.fontSizeMedium, emojiBase) : qsTr("Unknown") primaryText.text: title ? Emoji.emojify(title + ( display.notification_settings.mute_for > 0 ? " 🔇" : "" ), Theme.fontSizeMedium) : qsTr("Unknown")
// last user // last user
prologSecondaryText.text: is_channel ? "" : ( last_message_sender_id ? ( last_message_sender_id !== ownUserId ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(last_message_sender_id)), primaryText.font.pixelSize) : qsTr("You") ) : qsTr("Unknown") ) prologSecondaryText.text: is_channel ? "" : ( last_message_sender_id ? ( last_message_sender_id !== ownUserId ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(last_message_sender_id)), primaryText.font.pixelSize) : qsTr("You") ) : qsTr("Unknown") )
// last message // last message
secondaryText.text: last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall, emojiBase) : qsTr("Unknown") secondaryText.text: last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall) : qsTr("Unknown")
// message date // message date
tertiaryText.text: ( last_message_date ? Functions.getDateTimeElapsed(last_message_date) : qsTr("Unknown") ) + Emoji.emojify(last_message_status, tertiaryText.font.pixelSize) tertiaryText.text: ( last_message_date ? Functions.getDateTimeElapsed(last_message_date) : qsTr("Unknown") ) + Emoji.emojify(last_message_status, tertiaryText.font.pixelSize)
unreadCount: unread_count unreadCount: unread_count

View file

@ -58,33 +58,24 @@ Row {
spacing: Theme.paddingSmall spacing: Theme.paddingSmall
width: parent.width - ( inReplyToRow.editable ? ( Theme.paddingSmall + removeInReplyToIconButton.width ) : 0 ) width: parent.width - ( inReplyToRow.editable ? ( Theme.paddingSmall + removeInReplyToIconButton.width ) : 0 )
Text { Label {
id: inReplyToUserText id: inReplyToUserText
width: parent.width width: parent.width
font.pixelSize: Theme.fontSizeExtraSmall font.pixelSize: Theme.fontSizeExtraSmall
font.weight: Font.ExtraBold font.weight: Font.ExtraBold
color: Theme.primaryColor
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
textFormat: Text.StyledText textFormat: Text.StyledText
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
} }
Text { Label {
id: inReplyToMessageText id: inReplyToMessageText
font.pixelSize: Theme.fontSizeExtraSmall font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.primaryColor
width: parent.width width: parent.width
elide: Text.ElideRight
textFormat: Text.StyledText textFormat: Text.StyledText
onTruncatedChanged: { truncationMode: TruncationMode.Fade
// There is obviously a bug in QML in truncating text with images.
// We simply remove Emojis then...
if (truncated) {
text = text.replace(/\<img [^>]+\/\>/g, "");
}
}
} }
} }

View file

@ -21,6 +21,7 @@ import Sailfish.Silica 1.0
import "../js/twemoji.js" as Emoji import "../js/twemoji.js" as Emoji
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import QtQml.Models 2.3 import QtQml.Models 2.3
import "../js/debug.js" as Debug
ListItem { ListItem {
id: messageListItem id: messageListItem
@ -136,12 +137,12 @@ ListItem {
messageBackground.isUnread = index > chatModel.getLastReadMessageIndex(); messageBackground.isUnread = index > chatModel.getLastReadMessageIndex();
} }
onLastReadSentMessageUpdated: { onLastReadSentMessageUpdated: {
console.log("[ChatModel] Messages in this chat were read, new last read: " + lastReadSentIndex + ", updating description for index " + index + ", status: " + (index <= lastReadSentIndex)); Debug.log("[ChatModel] Messages in this chat were read, new last read: ", lastReadSentIndex, ", updating description for index ", index, ", status: ", (index <= lastReadSentIndex));
messageDateText.text = getMessageStatusText(myMessage, index, lastReadSentIndex, messageDateText.useElapsed); messageDateText.text = getMessageStatusText(myMessage, index, lastReadSentIndex, messageDateText.useElapsed);
} }
onMessageUpdated: { onMessageUpdated: {
if (index === modelIndex) { if (index === modelIndex) {
console.log("[ChatModel] This message was updated, index " + index + ", updating content..."); Debug.log("[ChatModel] This message was updated, index ", index, ", updating content...");
messageDateText.text = getMessageStatusText(myMessage, index, chatView.lastReadSentIndex, messageDateText.useElapsed); messageDateText.text = getMessageStatusText(myMessage, index, chatView.lastReadSentIndex, messageDateText.useElapsed);
messageText.text = Emoji.emojify(Functions.getMessageText(myMessage, false, messageListItem.isOwnMessage), messageText.font.pixelSize); messageText.text = Emoji.emojify(Functions.getMessageText(myMessage, false, messageListItem.isOwnMessage), messageText.font.pixelSize);
} }
@ -254,7 +255,7 @@ ListItem {
anchors.centerIn: messageBackground anchors.centerIn: messageBackground
Text { Label {
id: userText id: userText
width: parent.width width: parent.width
@ -263,7 +264,7 @@ ListItem {
font.weight: Font.ExtraBold font.weight: Font.ExtraBold
color: messageListItem.textColor color: messageListItem.textColor
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
textFormat: Text.StyledText textFormat: Text.StyledText
horizontalAlignment: messageListItem.textAlign horizontalAlignment: messageListItem.textAlign
visible: precalculatedValues.showUserInfo visible: precalculatedValues.showUserInfo
@ -341,38 +342,23 @@ ListItem {
Column { Column {
spacing: Theme.paddingSmall spacing: Theme.paddingSmall
width: parent.width - forwardedThumbnail.width - Theme.paddingSmall width: parent.width - forwardedThumbnail.width - Theme.paddingSmall
Text { Label {
font.pixelSize: Theme.fontSizeExtraSmall font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.primaryColor
width: parent.width width: parent.width
font.italic: true font.italic: true
elide: Text.ElideRight truncationMode: TruncationMode.Fade
textFormat: Text.StyledText textFormat: Text.StyledText
text: qsTr("Forwarded Message") text: qsTr("Forwarded Message")
onTruncatedChanged: {
// There is obviously a bug in QML in truncating text with images.
// We simply remove Emojis then...
if (truncated) {
text = text.replace(/\<img [^>]+\/\>/g, "");
}
}
} }
Text { Label {
id: forwardedChannelText id: forwardedChannelText
font.pixelSize: Theme.fontSizeExtraSmall font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.primaryColor color: Theme.primaryColor
width: parent.width width: parent.width
font.bold: true font.bold: true
elide: Text.ElideRight truncationMode: TruncationMode.Fade
textFormat: Text.StyledText textFormat: Text.StyledText
text: Emoji.emojify(forwardedMessageInformationRow.otherChatInformation.title, font.pixelSize) text: Emoji.emojify(forwardedMessageInformationRow.otherChatInformation.title, font.pixelSize)
onTruncatedChanged: {
// There is obviously a bug in QML in truncating text with images.
// We simply remove Emojis then...
if (truncated) {
text = text.replace(/\<img [^>]+\/\>/g, "");
}
}
} }
} }
} }

View file

@ -109,7 +109,7 @@ Flickable {
width: Theme.itemSizeLarge width: Theme.itemSizeLarge
height: Theme.itemSizeLarge height: Theme.itemSizeLarge
} }
Text { Label {
id: overlayMessageUserText id: overlayMessageUserText
width: parent.width - overlayMessagePictureThumbnail.width width: parent.width - overlayMessagePictureThumbnail.width
@ -117,9 +117,8 @@ Flickable {
text: messageOverlayFlickable.isOwnMessage ? qsTr("You") : Emoji.emojify(Functions.getUserName(messageOverlayFlickable.userInformation), font.pixelSize) text: messageOverlayFlickable.isOwnMessage ? qsTr("You") : Emoji.emojify(Functions.getUserName(messageOverlayFlickable.userInformation), font.pixelSize)
font.pixelSize: Theme.fontSizeExtraLarge font.pixelSize: Theme.fontSizeExtraLarge
font.weight: Font.ExtraBold font.weight: Font.ExtraBold
color: Theme.primaryColor
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
textFormat: Text.StyledText textFormat: Text.StyledText
} }
} }
@ -163,7 +162,7 @@ Flickable {
id: webPagePreview id: webPagePreview
onImplicitHeightChanged: { onImplicitHeightChanged: {
webPagePreviewLoader.height = webPagePreview.implicitHeight; overlayWebPagePreviewLoader.height = webPagePreview.implicitHeight;
} }
webPageData: overlayMessage.content.web_page webPageData: overlayMessage.content.web_page

View file

@ -78,61 +78,41 @@ ListItem {
width: parent.width * 5 / 6 - Theme.horizontalPageMargin width: parent.width * 5 / 6 - Theme.horizontalPageMargin
spacing: Theme.paddingSmall spacing: Theme.paddingSmall
Text { Label {
id: primaryText id: primaryText
textFormat: Text.StyledText textFormat: Text.StyledText
font.pixelSize: Theme.fontSizeMedium font.pixelSize: Theme.fontSizeMedium
color: Theme.primaryColor truncationMode: TruncationMode.Fade
elide: Text.ElideRight
width: parent.width width: parent.width
onTruncatedChanged: {
// There is obviously a bug in QML in truncating text with images.
// We simply remove Emojis then...
if (truncated) {
text = text.replace(/\<img [^>]+\/\>/g, "");
}
}
} }
Row { Row {
id: additionalTextRow id: additionalTextRow
width: parent.width width: parent.width
spacing: Theme.paddingSmall spacing: Theme.paddingSmall
Text { Label {
id: prologSecondaryText id: prologSecondaryText
font.pixelSize: Theme.fontSizeExtraSmall font.pixelSize: Theme.fontSizeExtraSmall
width: Math.min(implicitWidth, parent.width)
color: Theme.highlightColor color: Theme.highlightColor
textFormat: Text.StyledText textFormat: Text.StyledText
onTruncatedChanged: { truncationMode: TruncationMode.Fade
// There is obviously a bug in QML in truncating text with images.
// We simply remove Emojis then...
if (truncated) {
text = text.replace(/\<img [^>]+\/\>/g, "");
}
}
} }
Text { Label {
id: secondaryText id: secondaryText
font.pixelSize: Theme.fontSizeExtraSmall font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.primaryColor
width: parent.width - Theme.paddingMedium - prologSecondaryText.width width: parent.width - Theme.paddingMedium - prologSecondaryText.width
elide: Text.ElideRight truncationMode: TruncationMode.Fade
textFormat: Text.StyledText textFormat: Text.StyledText
onTruncatedChanged: {
// There is obviously a bug in QML in truncating text with images.
// We simply remove Emojis then...
if (truncated) {
text = text.replace(/\<img [^>]+\/\>/g, "");
}
}
} }
} }
Text { Label {
id: tertiaryText id: tertiaryText
width: parent.width width: parent.width
font.pixelSize: Theme.fontSizeTiny font.pixelSize: Theme.fontSizeTiny
color: Theme.secondaryColor color: Theme.secondaryColor
truncationMode: TruncationMode.Fade
} }
} }
} }

View file

@ -21,6 +21,7 @@ import Sailfish.Silica 1.0
import "../components" import "../components"
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import "../js/twemoji.js" as Emoji import "../js/twemoji.js" as Emoji
import "../js/debug.js" as Debug
Item { Item {
id: pinnedMessageItem id: pinnedMessageItem
@ -31,7 +32,7 @@ Item {
onPinnedMessageChanged: { onPinnedMessageChanged: {
if (pinnedMessage) { if (pinnedMessage) {
console.log("[ChatPage] Activating pinned message"); Debug.log("[ChatPage] Activating pinned message");
var messageUserText = (pinnedMessage.sender_user_id !== chatPage.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(pinnedMessage.sender_user_id)), pinnedMessageUserText.font.pixelSize) : qsTr("You"); var messageUserText = (pinnedMessage.sender_user_id !== chatPage.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(pinnedMessage.sender_user_id)), pinnedMessageUserText.font.pixelSize) : qsTr("You");
pinnedMessageUserText.text = (messageUserText === "" ? qsTr("Pinned Message") : messageUserText ); pinnedMessageUserText.text = (messageUserText === "" ? qsTr("Pinned Message") : messageUserText );
pinnedMessageText.text = Emoji.emojify(Functions.getMessageText(pinnedMessage, true, pinnedMessage.sender_user_id === chatPage.myUserId), pinnedMessageText.font.pixelSize); pinnedMessageText.text = Emoji.emojify(Functions.getMessageText(pinnedMessage, true, pinnedMessage.sender_user_id === chatPage.myUserId), pinnedMessageText.font.pixelSize);
@ -77,7 +78,7 @@ Item {
spacing: Theme.paddingSmall spacing: Theme.paddingSmall
width: parent.width width: parent.width
Text { Label {
id: pinnedMessageUserText id: pinnedMessageUserText
width: parent.width width: parent.width
@ -85,18 +86,18 @@ Item {
font.weight: Font.ExtraBold font.weight: Font.ExtraBold
color: Theme.primaryColor color: Theme.primaryColor
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
textFormat: Text.StyledText textFormat: Text.StyledText
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
} }
Text { Label {
id: pinnedMessageText id: pinnedMessageText
font.pixelSize: Theme.fontSizeExtraSmall font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.primaryColor color: Theme.primaryColor
width: parent.width width: parent.width
elide: Text.ElideRight truncationMode: TruncationMode.Fade
maximumLineCount: 1 maximumLineCount: 1
textFormat: Text.StyledText textFormat: Text.StyledText
} }

View file

@ -106,11 +106,9 @@ Item {
id: canAnswerDelegate id: canAnswerDelegate
TextSwitch { TextSwitch {
id: optionDelegate id: optionDelegate
// TextSwitch changes the html base path:
property url emojiBase: "../js/emoji/"
width: pollMessageComponent.width width: pollMessageComponent.width
automaticCheck: false automaticCheck: false
text: Emoji.emojify(modelData.text, Theme.fontSizeMedium, emojiBase) text: Emoji.emojify(modelData.text, Theme.fontSizeMedium)
checked: pollMessageComponent.chosenIndexes.indexOf(index) > -1 checked: pollMessageComponent.chosenIndexes.indexOf(index) > -1
onClicked: { onClicked: {
pollMessageComponent.handleChoose(index); pollMessageComponent.handleChoose(index);

View file

@ -63,13 +63,12 @@ Item {
id: stickerPickerColumn id: stickerPickerColumn
spacing: Theme.paddingMedium spacing: Theme.paddingMedium
width: stickerPickerFlickable.width width: stickerPickerFlickable.width
Text { Label {
font.pixelSize: Theme.fontSizeMedium font.pixelSize: Theme.fontSizeMedium
font.bold: true font.bold: true
color: Theme.primaryColor
width: parent.width width: parent.width
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
text: qsTr("Recently used") text: qsTr("Recently used")
} }
@ -122,13 +121,12 @@ Item {
Column { Column {
spacing: Theme.paddingMedium spacing: Theme.paddingMedium
width: parent.width width: parent.width
Text { Label {
font.pixelSize: Theme.fontSizeMedium font.pixelSize: Theme.fontSizeMedium
font.bold: true font.bold: true
color: Theme.primaryColor
width: parent.width width: parent.width
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
text: modelData.title text: modelData.title
} }
@ -159,12 +157,11 @@ Item {
} }
} }
} }
Text { Label {
font.pixelSize: Theme.fontSizeHuge font.pixelSize: Theme.fontSizeHuge
color: Theme.primaryColor
anchors.fill: parent anchors.fill: parent
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
text: Emoji.emojify(modelData.emoji, font.pixelSize) text: Emoji.emojify(modelData.emoji, font.pixelSize)
visible: !modelData.thumbnail.photo.local.is_downloading_completed visible: !modelData.thumbnail.photo.local.is_downloading_completed
} }

View file

@ -20,6 +20,7 @@ import QtQuick 2.6
import Sailfish.Silica 1.0 import Sailfish.Silica 1.0
import QtMultimedia 5.6 import QtMultimedia 5.6
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import "../js/debug.js" as Debug
Item { Item {
id: videoMessageComponent id: videoMessageComponent
@ -302,39 +303,39 @@ Item {
onStatusChanged: { onStatusChanged: {
if (status == MediaPlayer.NoMedia) { if (status == MediaPlayer.NoMedia) {
console.log("No Media"); Debug.log("No Media");
videoBusyIndicator.visible = false; videoBusyIndicator.visible = false;
} }
if (status == MediaPlayer.Loading) { if (status == MediaPlayer.Loading) {
console.log("Loading"); Debug.log("Loading");
videoBusyIndicator.visible = true; videoBusyIndicator.visible = true;
} }
if (status == MediaPlayer.Loaded) { if (status == MediaPlayer.Loaded) {
console.log("Loaded"); Debug.log("Loaded");
videoBusyIndicator.visible = false; videoBusyIndicator.visible = false;
} }
if (status == MediaPlayer.Buffering) { if (status == MediaPlayer.Buffering) {
console.log("Buffering"); Debug.log("Buffering");
videoBusyIndicator.visible = true; videoBusyIndicator.visible = true;
} }
if (status == MediaPlayer.Stalled) { if (status == MediaPlayer.Stalled) {
console.log("Stalled"); Debug.log("Stalled");
videoBusyIndicator.visible = true; videoBusyIndicator.visible = true;
} }
if (status == MediaPlayer.Buffered) { if (status == MediaPlayer.Buffered) {
console.log("Buffered"); Debug.log("Buffered");
videoBusyIndicator.visible = false; videoBusyIndicator.visible = false;
} }
if (status == MediaPlayer.EndOfMedia) { if (status == MediaPlayer.EndOfMedia) {
console.log("End of Media"); Debug.log("End of Media");
videoBusyIndicator.visible = false; videoBusyIndicator.visible = false;
} }
if (status == MediaPlayer.InvalidMedia) { if (status == MediaPlayer.InvalidMedia) {
console.log("Invalid Media"); Debug.log("Invalid Media");
videoBusyIndicator.visible = false; videoBusyIndicator.visible = false;
} }
if (status == MediaPlayer.UnknownStatus) { if (status == MediaPlayer.UnknownStatus) {
console.log("Unknown Status"); Debug.log("Unknown Status");
videoBusyIndicator.visible = false; videoBusyIndicator.visible = false;
} }
} }

View file

@ -70,7 +70,7 @@ Column {
} }
} }
Text { Label {
id: siteNameText id: siteNameText
width: parent.width width: parent.width
@ -78,35 +78,33 @@ Column {
font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall
font.bold: true font.bold: true
color: Theme.secondaryHighlightColor color: Theme.secondaryHighlightColor
elide: Text.ElideRight truncationMode: TruncationMode.Fade
maximumLineCount: 1 maximumLineCount: 1
textFormat: Text.StyledText textFormat: Text.StyledText
visible: (text !== "") visible: (text !== "")
} }
Text { Label {
id: titleText id: titleText
width: parent.width width: parent.width
text: webPageData.title ? Emoji.emojify(webPageData.title, font.pixelSize) : "" text: webPageData.title ? Emoji.emojify(webPageData.title, font.pixelSize) : ""
font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall
font.bold: true font.bold: true
color: Theme.primaryColor truncationMode: TruncationMode.Fade
elide: Text.ElideRight
wrapMode: Text.Wrap wrapMode: Text.Wrap
maximumLineCount: 2 maximumLineCount: 2
textFormat: Text.StyledText textFormat: Text.StyledText
visible: (text !== "") visible: (text !== "")
} }
Text { Label {
id: descriptionText id: descriptionText
width: parent.width width: parent.width
text: webPageData.description ? Emoji.emojify(webPageData.description, font.pixelSize) : "" text: webPageData.description ? Emoji.emojify(webPageData.description, font.pixelSize) : ""
font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall
color: Theme.primaryColor truncationMode: TruncationMode.Fade
elide: Text.ElideRight
wrapMode: Text.Wrap wrapMode: Text.Wrap
maximumLineCount: 3 maximumLineCount: 3
textFormat: Text.StyledText textFormat: Text.StyledText
@ -146,7 +144,7 @@ Column {
} }
} }
Text { Label {
id: noPreviewAvailableText id: noPreviewAvailableText
width: parent.width width: parent.width
@ -154,7 +152,7 @@ Column {
font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeExtraSmall : Theme.fontSizeTiny font.pixelSize: webPagePreviewColumn.largerFontSize ? Theme.fontSizeExtraSmall : Theme.fontSizeTiny
font.italic: true font.italic: true
color: Theme.secondaryColor color: Theme.secondaryColor
elide: Text.ElideRight truncationMode: TruncationMode.Fade
wrapMode: Text.Wrap wrapMode: Text.Wrap
maximumLineCount: 1 maximumLineCount: 1
textFormat: Text.StyledText textFormat: Text.StyledText

View file

@ -21,6 +21,7 @@ import Sailfish.Silica 1.0
import "../" import "../"
import "../../js/twemoji.js" as Emoji import "../../js/twemoji.js" as Emoji
import "../../js/functions.js" as Functions import "../../js/functions.js" as Functions
import "../../js/debug.js" as Debug
SilicaFlickable { SilicaFlickable {
@ -59,7 +60,7 @@ SilicaFlickable {
chatInformationPage.isChannel = chatInformationPage.groupInformation.is_channel; chatInformationPage.isChannel = chatInformationPage.groupInformation.is_channel;
break; break;
} }
console.log("is set up", chatInformationPage.isPrivateChat, chatInformationPage.isBasicGroup, chatInformationPage.isSuperGroup, chatInformationPage.chatPartnerGroupId) Debug.log("is set up", chatInformationPage.isPrivateChat, chatInformationPage.isBasicGroup, chatInformationPage.isSuperGroup, chatInformationPage.chatPartnerGroupId)
if(!chatInformationPage.isPrivateChat) { if(!chatInformationPage.isPrivateChat) {
updateGroupStatusText(); updateGroupStatusText();
} }
@ -123,13 +124,13 @@ SilicaFlickable {
} }
} }
onSupergroupFullInfoReceived: { onSupergroupFullInfoReceived: {
console.log("onSupergroupFullInfoReceived", chatInformationPage.isSuperGroup, chatInformationPage.chatPartnerGroupId, groupId) Debug.log("onSupergroupFullInfoReceived", chatInformationPage.isSuperGroup, chatInformationPage.chatPartnerGroupId, groupId)
if(chatInformationPage.isSuperGroup && chatInformationPage.chatPartnerGroupId === groupId) { if(chatInformationPage.isSuperGroup && chatInformationPage.chatPartnerGroupId === groupId) {
chatInformationPage.groupFullInformation = groupFullInfo; chatInformationPage.groupFullInformation = groupFullInfo;
} }
} }
onSupergroupFullInfoUpdated: { onSupergroupFullInfoUpdated: {
console.log("onSupergroupFullInfoUpdated", chatInformationPage.isSuperGroup, chatInformationPage.chatPartnerGroupId, groupId) Debug.log("onSupergroupFullInfoUpdated", chatInformationPage.isSuperGroup, chatInformationPage.chatPartnerGroupId, groupId)
if(chatInformationPage.isSuperGroup && chatInformationPage.chatPartnerGroupId === groupId) { if(chatInformationPage.isSuperGroup && chatInformationPage.chatPartnerGroupId === groupId) {
chatInformationPage.groupFullInformation = groupFullInfo; chatInformationPage.groupFullInformation = groupFullInfo;
} }
@ -281,14 +282,12 @@ SilicaFlickable {
asynchronous: true asynchronous: true
anchors.fill: chatPictureThumbnail anchors.fill: chatPictureThumbnail
source: chatInformationPage.isPrivateChat source: chatInformationPage.isPrivateChat
? "../components/chatInformationPage/ChatInformationProfilePictureList.qml" ? "ChatInformationProfilePictureList.qml"
: "../components/chatInformationPage/ChatInformationProfilePicture.qml" : "ChatInformationProfilePicture.qml"
} }
} }
// PageHeader changes the html base path:
property url emojiBase: "../js/emoji/"
leftMargin: imageContainer.getEased((imageContainer.minDimension + Theme.paddingMedium), 0, imageContainer.tweenFactor) + Theme.horizontalPageMargin leftMargin: imageContainer.getEased((imageContainer.minDimension + Theme.paddingMedium), 0, imageContainer.tweenFactor) + Theme.horizontalPageMargin
title: chatInformationPage.chatInformation.title !== "" ? Emoji.emojify(chatInformationPage.chatInformation.title, Theme.fontSizeLarge, emojiBase) : qsTr("Unknown") title: chatInformationPage.chatInformation.title !== "" ? Emoji.emojify(chatInformationPage.chatInformation.title, Theme.fontSizeLarge) : qsTr("Unknown")
description: chatInformationPage.isPrivateChat ? ("@"+(chatInformationPage.privateChatUserInformation.username || chatInformationPage.chatPartnerGroupId)) : "" description: chatInformationPage.isPrivateChat ? ("@"+(chatInformationPage.privateChatUserInformation.username || chatInformationPage.chatPartnerGroupId)) : ""
} }

View file

@ -77,19 +77,18 @@ ChatInformationTabItemBase {
width: parent.width width: parent.width
// chat title // chat title
primaryText.text: Emoji.emojify(Functions.getUserName(user), primaryText.font.pixelSize, "../js/emoji/") primaryText.text: Emoji.emojify(Functions.getUserName(user), primaryText.font.pixelSize)
// last user // last user
prologSecondaryText.text: "@"+(user.username !== "" ? user.username : user_id) + (user_id === chatInformationPage.myUserId ? " " + qsTr("You") : "") prologSecondaryText.text: "@"+(user.username !== "" ? user.username : user_id) + (user_id === chatInformationPage.myUserId ? " " + qsTr("You") : "")
secondaryText { secondaryText {
horizontalAlignment: Text.AlignRight horizontalAlignment: Text.AlignRight
property string statusText: Functions.getChatMemberStatusText(model.status["@type"]) property string statusText: Functions.getChatMemberStatusText(model.status["@type"])
property string customText: model.status.custom_title ? Emoji.emojify(model.status.custom_title, secondaryText.font.pixelSize, "../js/emoji/") : "" property string customText: model.status.custom_title ? Emoji.emojify(model.status.custom_title, secondaryText.font.pixelSize) : ""
text: (statusText !== "" && customText !== "") ? statusText + ", " + customText : statusText + customText text: (statusText !== "" && customText !== "") ? statusText + ", " + customText : statusText + customText
} }
tertiaryText { tertiaryText {
maximumLineCount: 1 maximumLineCount: 1
text: user.type["@type"] === "userTypeBot" ? (Emoji.emojify("🤖 "+bot_info.description, tertiaryText.font.pixelSize, "../js/emoji/")) : Functions.getChatPartnerStatusText(user.status["@type"], user.status.was_online); text: user.type["@type"] === "userTypeBot" ? (Emoji.emojify("🤖 "+bot_info.description, tertiaryText.font.pixelSize)) : Functions.getChatPartnerStatusText(user.status["@type"], user.status.was_online);
elide: Text.ElideRight
} }
onClicked: { onClicked: {
@ -160,7 +159,7 @@ ChatInformationTabItemBase {
onChatChanged: { onChatChanged: {
if (changedChatId === chat_id) { if (changedChatId === chat_id) {
// Force update of some list item elements (currently only last message text seems to create problems). dataChanged() doesn't seem to trigger them all :( // Force update of some list item elements (currently only last message text seems to create problems). dataChanged() doesn't seem to trigger them all :(
secondaryText.text = last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall, "../../js/emoji/") : qsTr("Unknown") secondaryText.text = last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall) : qsTr("Unknown")
} }
} }
} }

View file

@ -61,7 +61,6 @@ Item {
width: loaded ? (headerGrid.width / tabView.count) : 0 width: loaded ? (headerGrid.width / tabView.count) : 0
opacity: loaded ? 1.0 : 0.0 opacity: loaded ? 1.0 : 0.0
Behavior on width { PropertyAnimation {duration: 200}}
Behavior on opacity { FadeAnimation {}} Behavior on opacity { FadeAnimation {}}
height: Theme.itemSizeLarge height: Theme.itemSizeLarge
property int itemIndex: index property int itemIndex: index

View file

@ -50,7 +50,7 @@ Column {
font.pixelSize: Theme.fontSizeSmall font.pixelSize: Theme.fontSizeSmall
textFormat: Text.StyledText textFormat: Text.StyledText
color: Theme.primaryColor color: Theme.primaryColor
text: Emoji.emojify( Functions.replaceUrlsWithLinks(textItem.text).replace(/\n/g, "<br>"), Theme.fontSizeExtraSmall, "../../js/emoji/") text: Emoji.emojify( Functions.replaceUrlsWithLinks(textItem.text).replace(/\n/g, "<br>"), Theme.fontSizeExtraSmall)
linkColor: Theme.highlightColor linkColor: Theme.highlightColor
visible: text !== "" visible: text !== ""
onLinkActivated: { onLinkActivated: {

47
qml/js/debug.js Normal file
View file

@ -0,0 +1,47 @@
/*
Copyright (C) 2020 Sebastian J. Wolf and other contributors
This file is part of Fernschreiber.
Fernschreiber is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Fernschreiber is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
*/
.pragma library
.import WerkWolf.Fernschreiber 1.0 as Fernschreiber
var enabled = Fernschreiber.DebugLog.enabled;
var log = enabled ? console.log : function(){};
var assert = enabled ? console.assert : function(){};
var time = enabled ? console.time : function(){};
var timeEnd = enabled ? console.timeEnd : function(){};
var trace = enabled ? console.trace : function(){};
var count = enabled ? console.count : function(){};
var profile = enabled ? console.profile : function(){};
var exception = enabled ? console.exception : function(){};
Fernschreiber.DebugLog.enabledChanged.connect(function() {
enabled = Fernschreiber.DebugLog.enabled;
if(enabled) {
log = console.log;
assert = console.assert;
time = console.time;
timeEnd = console.timeEnd;
trace = console.trace;
count = console.count;
profile = console.profile;
exception = console.exception;
} else {
log = assert = time = timeEnd = trace = count = profile = exception = function(){};
}
});

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M35.059 18c0 3.304-7.642 11-17.067 11C8.566 29 .925 22.249.925 18c0-3.313 7.642-11 17.067-11s17.067 7.686 17.067 11z"/><path fill="#F5F8FA" d="M33.817 18c0 2.904-7.087 9.667-15.826 9.667-8.74 0-15.825-5.935-15.825-9.667 0-2.912 7.085-9.666 15.825-9.666C26.73 8.333 33.817 15.088 33.817 18z"/><circle fill="#55ACEE" cx="18" cy="18" r="8.458"/><circle fill="#292F33" cx="18" cy="18" r="4.708"/><circle fill="#F5F8FA" cx="21" cy="15" r="2"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M35.059 18c0 3.304-7.642 11-17.067 11C8.566 29 .925 22.249.925 18c0-3.314 34.134-3.314 34.134 0z"/><path fill="#292F33" d="M35.059 18H.925c0-3.313 7.642-11 17.067-11s17.067 7.686 17.067 11z"/><path fill="#F5F8FA" d="M33.817 18c0 2.904-7.087 9.667-15.826 9.667-8.74 0-15.825-5.935-15.825-9.667 0-2.912 7.085-9.666 15.825-9.666C26.73 8.333 33.817 15.088 33.817 18z"/><circle fill="#8B5E3C" cx="18" cy="18" r="8.458"/><circle fill="#292F33" cx="18" cy="18" r="4.708"/><circle fill="#F5F8FA" cx="14.983" cy="15" r="2"/></svg>

Before

Width:  |  Height:  |  Size: 528 B

After

Width:  |  Height:  |  Size: 605 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E0E7EC" d="M36 32c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V9c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v23z"/><path fill="#DD2F45" d="M34 0h-3.277c.172.295.277.634.277 1 0 1.104-.896 2-2 2s-2-.896-2-2c0-.366.105-.705.277-1H8.723C8.895.295 9 .634 9 1c0 1.104-.896 2-2 2s-2-.896-2-2c0-.366.105-.705.277-1H2C.896 0 0 .896 0 2v11h36V2c0-1.104-.896-2-2-2z"/><path fill="#66757F" d="M23.688 19h-.5c-1.085 0-1.538-.731-1.538-1.5 0-.792.565-1.5 1.538-1.5h2.015c.972 0 1.515.701 1.515 1.605V30.47c0 1.13-.558 1.763-1.53 1.763s-1.5-.633-1.5-1.763V19z"/><g fill="#F3AAB9"><circle cx="33" cy="10" r="1"/><circle cx="33" cy="7" r="1"/><circle cx="30" cy="10" r="1"/><circle cx="30" cy="7" r="1"/><circle cx="27" cy="10" r="1"/><circle cx="27" cy="7" r="1"/></g><path d="M2.468 4.94c0-.437.346-.783.783-.783h.173c.335 0 .569.173.711.406l1.891 3.08 1.9-3.089c.162-.264.386-.396.701-.396h.172c.437 0 .783.346.783.783v5.65c0 .437-.346.783-.783.783-.427 0-.772-.356-.772-.783V7.044L6.655 9.158c-.162.243-.365.396-.65.396s-.488-.152-.65-.396L4.003 7.074v3.537c0 .427-.346.762-.772.762s-.762-.335-.762-.762V4.94zm7.923 5.366l2.479-5.6c.173-.386.488-.62.915-.62h.091c.427 0 .732.234.905.62l2.479 5.6c.051.111.081.213.081.315 0 .417-.325.752-.742.752-.366 0-.61-.213-.752-.539l-.477-1.118h-3.13l-.498 1.169c-.132.305-.396.488-.722.488-.407 0-.722-.325-.722-.732.001-.112.042-.224.093-.335zm4.4-1.972l-.985-2.348-.986 2.348h1.971zm3.277-3.353c0-.437.346-.783.783-.783h2.47c.904 0 1.605.254 2.072.722.396.396.61.955.61 1.626v.021c0 1.118-.559 1.809-1.423 2.165l1.087 1.321c.153.193.255.356.255.6 0 .437-.366.722-.742.722-.355 0-.59-.173-.772-.407l-1.524-1.931h-1.25v1.555c0 .437-.346.783-.782.783-.437 0-.783-.346-.783-.783V4.981zm3.151 2.673c.762 0 1.199-.407 1.199-1.006v-.021c0-.67-.468-1.016-1.23-1.016h-1.555v2.043h1.586z" fill="#FFF"/><path fill="#66757F" d="M8.799 28.809l4.542-3.721c1.986-1.62 2.762-2.511 2.762-3.835 0-1.346-.89-2.077-2.145-2.077-1.004 0-1.712.434-2.602 1.392-.228.251-.639.503-1.187.503-.89 0-1.598-.708-1.598-1.598 0-.388.16-.799.411-1.096 1.278-1.484 2.785-2.351 5.204-2.351 3.31 0 5.501 1.94 5.501 4.93v.046c0 2.67-1.369 3.994-4.2 6.185l-2.602 2.009h5.569c.845 0 1.53.685 1.53 1.529 0 .844-.685 1.507-1.53 1.507H9.781c-1.096 0-1.895-.616-1.895-1.666 0-.685.32-1.278.913-1.757z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E0E7EC" d="M36 32c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V9c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v23z"/><path d="M23.657 19.12H17.87c-1.22 0-1.673-.791-1.673-1.56 0-.791.429-1.56 1.673-1.56h8.184c1.154 0 1.628 1.04 1.628 1.628 0 .452-.249.927-.52 1.492l-5.607 11.395c-.633 1.266-.882 1.717-1.899 1.717-1.244 0-1.877-.949-1.877-1.605 0-.271.068-.474.226-.791l5.652-10.716zM10.889 19h-.5c-1.085 0-1.538-.731-1.538-1.5 0-.792.565-1.5 1.538-1.5h2.015c.972 0 1.515.701 1.515 1.605V30.47c0 1.13-.558 1.763-1.53 1.763s-1.5-.633-1.5-1.763V19z" fill="#66757F"/><path fill="#DD2F45" d="M34 0h-3.277c.172.295.277.634.277 1 0 1.104-.896 2-2 2s-2-.896-2-2c0-.366.105-.705.277-1H8.723C8.895.295 9 .634 9 1c0 1.104-.896 2-2 2s-2-.896-2-2c0-.366.105-.705.277-1H2C.896 0 0 .896 0 2v11h36V2c0-1.104-.896-2-2-2z"/><path d="M13.182 4.604c0-.5.32-.78.75-.78.429 0 .749.28.749.78v5.017h1.779c.51 0 .73.38.72.72-.02.33-.28.659-.72.659h-2.498c-.49 0-.78-.319-.78-.819V4.604zm-6.91 0c0-.5.32-.78.75-.78s.75.28.75.78v3.488c0 .92.589 1.649 1.539 1.649.909 0 1.529-.769 1.529-1.649V4.604c0-.5.319-.78.749-.78s.75.28.75.78v3.568c0 1.679-1.38 2.949-3.028 2.949-1.669 0-3.039-1.25-3.039-2.949V4.604zM5.49 9.001c0 1.679-1.069 2.119-1.979 2.119-.689 0-1.839-.27-1.839-1.14 0-.269.23-.609.56-.609.4 0 .75.37 1.199.37.56 0 .56-.52.56-.84V4.604c0-.5.32-.78.749-.78.431 0 .75.28.75.78v4.397z" fill="#F5F8FA"/><path d="M32 10c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m0-3c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m-3 3c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m0-3c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m-3 3c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m0-3c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m-3 0c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m0 3c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1" fill="#F4ABBA"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M35 32c0 2.209-1.791 4-4 4H5c-2.209 0-4-1.791-4-4V8c0-2.209 1.791-4 4-4h26c2.209 0 4 1.791 4 4v24z"/><path fill="#E1E8ED" d="M33 32c0 1.104-.896 2-2 2H5c-1.104 0-2-.896-2-2V12c0-1.104.896-2 2-2h26c1.104 0 2 .896 2 2v20z"/><path fill="#DD2E44" d="M33 16H3V8c0-1.104.896-2 2-2h26c1.104 0 2 .896 2 2v8z"/><path d="M11 7c0 .552-.448 1-1 1s-1-.448-1-1V1c0-.552.448-1 1-1s1 .448 1 1v6zm16 0c0 .552-.447 1-1 1-.553 0-1-.448-1-1V1c0-.552.447-1 1-1 .553 0 1 .448 1 1v6z" fill="#99AAB5"/><path d="M8.299 9.292c0-.393.311-.704.704-.704h.155c.301 0 .512.155.639.365l1.701 2.77 1.709-2.779c.146-.238.347-.357.631-.357h.155c.393 0 .704.311.704.704v5.082c0 .393-.311.704-.704.704-.384 0-.694-.32-.694-.704v-3.19l-1.234 1.901c-.146.219-.329.356-.585.356-.256 0-.439-.137-.585-.356L9.679 11.21v3.181c0 .384-.311.686-.695.686s-.686-.302-.686-.686V9.292zm7.126 4.826l2.23-5.037c.155-.347.439-.558.823-.558h.082c.384 0 .658.21.814.558l2.23 5.037c.046.1.073.192.073.283 0 .375-.293.676-.667.676-.329 0-.549-.192-.676-.484l-.43-1.006h-2.816l-.448 1.051c-.119.274-.357.439-.649.439-.366 0-.649-.293-.649-.658 0-.1.037-.2.083-.301zm3.957-1.773l-.886-2.112-.887 2.112h1.773zm2.948-3.016c0-.393.311-.704.704-.704h2.221c.813 0 1.444.229 1.864.649.357.357.549.859.549 1.463v.018c0 1.005-.502 1.627-1.28 1.947l.978 1.188c.138.174.229.32.229.539 0 .393-.329.649-.668.649-.32 0-.531-.155-.695-.366l-1.371-1.737h-1.124v1.398c0 .393-.311.704-.704.704-.393 0-.704-.311-.704-.704V9.329zm2.834 2.404c.685 0 1.079-.366 1.079-.905v-.018c0-.603-.421-.914-1.107-.914h-1.398v1.838h1.426z" fill="#FFF"/><path d="M23.477 20.376h-.45c-.976 0-1.383-.658-1.383-1.349 0-.712.509-1.349 1.383-1.349h1.813c.874 0 1.362.631 1.362 1.444v11.572c0 1.016-.502 1.586-1.376 1.586-.874 0-1.349-.569-1.349-1.586V20.376zm-13.391 8.823l4.086-3.347c1.786-1.457 2.484-2.258 2.484-3.449 0-1.211-.8-1.868-1.93-1.868-.903 0-1.54.391-2.341 1.252-.206.226-.575.452-1.068.452-.801 0-1.437-.637-1.437-1.437 0-.349.144-.719.37-.986 1.149-1.335 2.505-2.115 4.681-2.115 2.977 0 4.948 1.745 4.948 4.435v.041c0 2.402-1.232 3.593-3.777 5.563l-2.341 1.807h5.01c.76 0 1.376.616 1.376 1.376s-.616 1.355-1.376 1.355h-7.802c-.986 0-1.704-.554-1.704-1.499 0-.616.287-1.149.821-1.58z" fill="#66757F"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M35 32c0 2.209-1.791 4-4 4H5c-2.209 0-4-1.791-4-4V8c0-2.209 1.791-4 4-4h26c2.209 0 4 1.791 4 4v24z"/><path fill="#E1E8ED" d="M33 32c0 1.104-.896 2-2 2H5c-1.104 0-2-.896-2-2V12c0-1.104.896-2 2-2h26c1.104 0 2 .896 2 2v20z"/><path d="M23.115 20.484H17.91c-1.098 0-1.504-.712-1.504-1.403 0-.712.386-1.403 1.504-1.403h7.362c1.038 0 1.464.935 1.464 1.464 0 .407-.224.834-.468 1.342l-5.043 10.25c-.569 1.139-.793 1.545-1.708 1.545-1.119 0-1.688-.854-1.688-1.444 0-.244.061-.427.204-.712l5.082-9.639zm-11.485-.108h-.45c-.976 0-1.383-.658-1.383-1.349 0-.712.509-1.349 1.383-1.349h1.813c.874 0 1.362.631 1.362 1.444v11.572c0 1.016-.502 1.586-1.376 1.586s-1.349-.569-1.349-1.586V20.376z" fill="#66757F"/><path fill="#DD2E44" d="M33 16H3V8c0-1.104.896-2 2-2h26c1.104 0 2 .896 2 2v8z"/><path d="M15.26 9.604c0-.5.3-.78.702-.78.402 0 .701.28.701.78v4.017h1.665c.477 0 .682.38.672.72-.018.33-.261.659-.672.659H15.99c-.458 0-.73-.319-.73-.819V9.604zm-6.465 0c0-.5.299-.78.702-.78.402 0 .701.28.701.78v2.488c0 .92.552 1.649 1.44 1.649.85 0 1.43-.769 1.43-1.649V9.604c0-.5.299-.78.702-.78.402 0 .701.28.701.78v2.568c0 1.679-1.291 2.949-2.833 2.949-1.561 0-2.843-1.25-2.843-2.949V9.604zm-.731 3.397c0 1.679-1 2.119-1.851 2.119-.645 0-1.721-.27-1.721-1.14 0-.269.216-.609.524-.609.374 0 .702.37 1.122.37.524 0 .524-.52.524-.84V9.604c0-.5.298-.78.7-.78.403 0 .702.28.702.78v3.397z" fill="#F5F8FA"/><path d="M30 14c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m-3 0c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m-3 0c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m0-3c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m3 0c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1m3 0c0 .552.447 1 1 1s1-.448 1-1-.447-1-1-1-1 .448-1 1" fill="#F4ABBA"/><path d="M11 7c0 .552-.448 1-1 1s-1-.448-1-1V1c0-.552.448-1 1-1s1 .448 1 1v6zm16 0c0 .552-.447 1-1 1s-1-.448-1-1V1c0-.552.447-1 1-1s1 .448 1 1v6z" fill="#99AAB5"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M1.061 19.062c-.583-.584-.583-1.539 0-2.122L16.94 1.061c.583-.583 1.539-.583 2.122 0L34.94 16.94c.583.583.583 1.538 0 2.121L19.062 34.939c-.583.583-1.539.583-2.122 0L1.061 19.062z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M1.061 19.062c-.583-.584-.583-1.539 0-2.122L16.94 1.061c.583-.583 1.539-.583 2.122 0L34.94 16.94c.583.583.583 1.538 0 2.121L19.062 34.939c-.583.583-1.539.583-2.122 0L1.061 19.062z"/></svg>

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 272 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M7.707 18.708c-.389-.389-.389-1.025 0-1.414l9.585-9.586c.389-.389 1.025-.389 1.414 0l9.587 9.587c.389.389.389 1.025 0 1.414l-9.587 9.585c-.389.389-1.025.389-1.414 0l-9.585-9.586z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M7.707 18.708c-.389-.389-.389-1.025 0-1.414l9.585-9.586c.389-.389 1.025-.389 1.414 0l9.587 9.587c.389.389.389 1.025 0 1.414l-9.587 9.585c-.389.389-1.025.389-1.414 0l-9.585-9.586z"/></svg>

Before

Width:  |  Height:  |  Size: 271 B

After

Width:  |  Height:  |  Size: 271 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#FFAC33" cx="18" cy="18" r="18"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#F4900C" cx="18" cy="18" r="18"/></svg>

Before

Width:  |  Height:  |  Size: 113 B

After

Width:  |  Height:  |  Size: 113 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M36 32c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V4c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v28z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M36 32c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V4c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v28z"/></svg>

Before

Width:  |  Height:  |  Size: 191 B

After

Width:  |  Height:  |  Size: 191 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F7DECE" d="M20.591.985c-2.139-.842-5.474.244-5.861 2.743-.385 2.482.321 6.374 2.501 6.138 2.286-.247 4.63-.744 5.556-3.097.927-2.352-.056-4.942-2.196-5.784z"/><path fill="#F7DECE" d="M22.18 7.376c3.112-3.657-4.386-3.3-4.386-3.3-1.419.052-.442 2.416-1.11 3.707-.458.894 1.47 1.367 1.47 1.367s.885-.013.932 1.06v.01c.011.273-.018.598-.145 1.032-.635 2.149 2.252 3.467 2.885 1.313.251-.852.153-1.602.026-2.294l-.012-.061c-.191-1.028-.429-1.93.34-2.834z"/><path fill="#292F33" d="M23.035 1.848C21.611.181 19.652-.511 16.296.786c-2.931 1.133-1.988 3.463-1.306 3.065 1.882-1.097 3.131-.16 4.089 1.371.279-.752 1.507-1.214 1.755-.114.279 1.236-.869 1.775-.716 2.113.051.113-.058-.102 0 0 .734 1.289 1.929 1.694 1.929 1.694s.453.177 1.226-1.345c.773-1.522 1.177-4.067-.238-5.722z"/><path fill="#292F33" d="M22.264 3.601c2.904.626 1.712 5.155 1.997 6.821.35 2.051 2.364 2.124 2.364 2.124s-.332-1.429-.155-2.923c.246-2.072 1.597-3.745.171-5.768-1.821-2.584-6.182-.643-4.377-.254zm-2.012 28.637c-.937.204-1.397.837-1.522 1.423s.419 1.633.963 1.842 5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.51 31.844c-.521.24-.552 1.313.159 2.024.846.846 2.409 1.519 3.34 1.769s2.548-.27 2.539-.923c-.009-.701-1.545-1.829-2.238-1.859-.693-.031-1.505-.042-1.868-.464-.362-.421-1.391-.796-1.932-.547z"/><path fill="#4289C1" d="M25.336 26.113c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061-1.587-.041-2.272.113-3.998.076-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.873-.285 7.813-2.441 8.383-.57z"/><path fill="#2A6797" d="M11.014 32.461c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.925-.491 1.424-.447z"/><path fill="#9268CA" d="M25.28 24.097c0 1.946.508 2.792.592 3.638.047.47-1.553-.275-2.603-.41-2.727-.351-6.408-.309-6.408-.309-.557-2.685.576-4.818-.306-8.419-1.138-4.646 3.231-9.23 5.127-8.621 2.478.797 3.937 3.064 3.936 7.395 0 2.998-.338 4.78-.338 6.726z"/><path fill="#F7DECE" d="M19.3 15.532c-.341 2.345-.225 6.209-.58 6.395-2.051 1.072-4.163 3.421-5.517 3.961-.981.392-1.967.635-2.378 1.031-.659.634-1.453 1.184-1.497 1.8-.045.625.681.819 1.908.241.901-.424 1.624-.403 2.419-1.032 1.132-.896 6.19-1.666 7.84-4.348.557-.905.927-3.403 1.588-7.744-1.11-.401-3.783-.304-3.783-.304z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F7DECE" d="M19.652 1.065c-1.764-.694-4.514.202-4.834 2.263-.317 2.047.265 5.257 2.063 5.063 1.885-.204 3.819-.613 4.582-2.554.764-1.942-.047-4.078-1.811-4.772z"/><path fill="#F7DECE" d="M20.963 6.335c2.567-3.016-3.617-2.722-3.617-2.722-1.17.042-.365 1.993-.916 3.057-.378.737 1.212 1.128 1.212 1.128s.73-.011.769.875v.008c.009.225-.015.493-.12.851-.524 1.772 1.857 2.859 2.38 1.083.207-.703.127-1.321.022-1.892l-.009-.051c-.159-.847-.356-1.591.279-2.337z"/><path fill="#292F33" d="M21.668 1.776C20.493.401 18.877-.17 16.11.9c-2.417.934-1.64 2.856-1.077 2.528 1.552-.905 2.582-.132 3.372 1.131.23-.62 1.242-1.001 1.447-.094.23 1.02-.717 1.464-.59 1.742.042.093-.048-.084 0 0 .606 1.063 1.591 1.397 1.591 1.397s.373.147 1.01-1.109c.638-1.255.971-3.354-.195-4.719z"/><path fill="#292F33" d="M21.032 3.222c2.395.517 1.412 4.251 1.647 5.625.289 1.692 1.95 1.752 1.95 1.752s-.275-1.178-.129-2.41c.203-1.709 1.317-3.088.141-4.757-1.501-2.131-5.098-.531-3.609-.21z"/><path fill="#9268CA" d="M23.519 20.125c0 1.605.25 2.331.32 3.029.039.388-1.112-.255-1.978-.367-2.249-.289-5.165-1.089-5.165-1.089-.46-2.215.356-3.139-.372-6.109-.939-3.832 2.664-7.612 4.228-7.11 2.044.657 3.247 2.527 3.246 6.099-.001 2.473-.279 3.943-.279 5.547z"/><path fill="#292F33" d="M25.941 32.817l1.063-1.378c.354-.459 1.051-.443 1.383.032.363.518 1.508 1.7 3.206 2.314.264.096.725.291-.165 1.083 0 0-1.049.797-5.632-.453M8.486 36h5.01c.241 0 .437-.195.437-.437v-.413c0-.453-.138-.895-.396-1.267l-.384-.553h-1.935l-1.892.523c-.77.213-1.296.923-1.276 1.722.006.236.2.425.436.425z"/><path fill="#2A6797" d="M17.334 25.673l-.311 7.139s-.156 2.997 3.036 2.939l6.85-.837s.506-1.751-.35-2.51l-4.938-.592c-.137-.016-.228-.149-.194-.283l1.581-5.127c.201-.653.548-2.062.603-2.737.034-.415-.196-.091-.185-.51l-6.403 1.84.311.678z"/><path fill="#4289C1" d="M19.207 21.365c-1.873-.051-7.335.631-7.335.631-2.68.63-2.036 4.541-2.036 4.541l.525 6.917s1.67.954 3.053 0l.93-6.917 4.07.048s6.832 1.36 5.163-5.257c0 0-3.989.047-4.37.037z"/><path fill="#F7DECE" d="M18.587 13.062c-.282 1.934-.185 5.121-.478 5.274-1.692.884-4.111 2.144-5.227 2.59-.809.323-1.622.524-1.961.85-.544.523-1.199.977-1.235 1.485-.037.516.562.675 1.574.199.743-.35 1.339-.332 1.995-.851.934-.739 5.782-.697 7.143-2.909.459-.747.764-2.806 1.31-6.387-.917-.331-3.121-.251-3.121-.251z"/></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F7DECE" d="M20.905 1.103c-2.182-.859-5.584.249-5.979 2.799-.393 2.532.328 6.502 2.552 6.262 2.332-.252 4.724-.759 5.668-3.16.944-2.399-.059-5.042-2.241-5.901z"/><path fill="#F7DECE" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#292F33" d="M23.398 1.983C21.945.282 19.863-.621 16.523.9c-1.361.62-1.971.391-2.165.663-.93 1.306.337 2.753.833 2.464 1.572-.917 2.99-.644 3.352.019s.028 1.854.321 1.862c.792.021.664-.755.977-1.202.514-.731 1.296-.318 1.467.496.136.645 0 1.741-1.054 1.934.717 1.577 2.136 2.058 2.136 2.058s.461.181 1.25-1.371c.789-1.554 1.201-4.151-.242-5.84zm-2.732 30.242c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#77B255" d="M26.377 25.554c-.057 1.128.391 2.499-.26 2.27-2.565-.9-9.188-.988-9.188-.988-.568-2.564-.037-6.416.008-9.956.059-4.645 3.148-7.192 5.082-6.61 2.528.761 3.689 3.387 4.016 7.511s.398 6.646.342 7.773z"/><path fill="#F7DECE" d="M19.382 16.204c-.442 2.329-.227 6.078-.59 6.249-2.095.984-3.883 3.239-5.259 3.722-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.091-.449-4.185-.772-4.185-.772z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F7DECE" d="M18.973 1.123c-1.849-.728-4.732.211-5.067 2.372-.333 2.145.278 5.51 2.162 5.306 1.976-.213 4.003-.643 4.803-2.677.802-2.034-.048-4.273-1.898-5.001z"/><path fill="#F7DECE" d="M20.347 6.648c2.691-3.161-3.791-2.853-3.791-2.853-1.227.045-.383 2.089-.96 3.205-.396.772 1.271 1.182 1.271 1.182s.765-.011.806.917v.008c.009.236-.016.517-.126.892-.549 1.858 1.946 2.997 2.494 1.135.217-.737.133-1.385.023-1.983l-.01-.053c-.166-.889-.372-1.668.293-2.45z"/><path fill="#292F33" d="M21.086 1.869C19.855.428 18.091-.338 15.26.951c-1.153.525-1.67.331-1.834.561-.788 1.106.286 2.333.706 2.088 1.332-.777 2.534-.546 2.841.016.307.562.024 1.571.272 1.578.671.018.562-.64.828-1.019.435-.62 1.098-.269 1.243.42.115.546 0 1.475-.893 1.639.607 1.336 1.81 1.744 1.81 1.744s.391.154 1.059-1.162c.668-1.316 1.017-3.516-.206-4.947z"/><path fill="#77B255" d="M23.563 21.568c-.048.956.379 2.392-.173 2.198-2.174-.763-7.786-.837-7.786-.837-.482-2.173-.032-5.437.006-8.437.05-3.936 2.667-6.094 4.306-5.601 2.142.645 3.126 2.87 3.403 6.364.278 3.495.292 5.357.244 6.313z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#F7DECE" d="M17.683 13.919c-.374 1.973-.192 5.151-.5 5.295-1.776.833-4.337 1.001-5.502 1.41-.844.296-.825.466-1.188.786-.581.513-1.273.95-1.333 1.47-.061.528.547.718 1.607.273.779-.326 1.389-.282 2.085-.786.991-.718 5.126.558 6.62-1.653.504-.746 1.04-2.491 1.757-6.143-.924-.378-3.546-.652-3.546-.652z"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F7DECE" d="M20.905 1.103c-2.182-.859-5.459.272-5.979 2.799-.726 3.526 1.288 6.513 3.513 6.273 2.332-.252 3.763-.769 4.708-3.17.943-2.4-.06-5.043-2.242-5.902z"/><path fill="#F7DECE" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#292F33" d="M23.65 1.859C22.573.402 18.961-.884 16.668.96c-1.588-.275-2.196 1.234-2.061 2.103.108.694 1.813.873 2.241 2.19.297-.33.376-1.007.312-1.369.543.523.306 1.896 2.442 2.793 2.064.867 1.7 2.69 1.7 2.69s1.087-.514 1.844-1.39c1.443-1.67 1.691-4.512.504-6.118zm-2.984 30.366c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#FA743E" d="M26.117 27.825c-2.565-.9-9.188-.988-9.188-.988.257-2.055.218-5.676-.002-9.362-.233-3.906 3.768-7.514 5.092-7.204 2.571.602 4.342 3.386 4.016 7.511-.469 5.926.733 10.271.082 10.043z"/><path fill="#F7DECE" d="M19.799 16.252c-.442 2.329-.599 6.406-.962 6.577-2.095.984-3.927 2.864-5.303 3.346-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.092-.449-3.769-.724-3.769-.724z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F7DECE" d="M19.321 1.07c-1.81-.712-4.528.226-4.96 2.322-.602 2.925 1.069 5.402 2.914 5.203 1.934-.209 3.121-.638 3.905-2.629.783-1.992-.049-4.184-1.859-4.896z"/><path fill="#F7DECE" d="M20.665 6.478c2.634-3.094-3.711-2.792-3.711-2.792-1.201.044-.374 2.044-.939 3.137-.388.756 1.244 1.157 1.244 1.157s.749-.011.789.897v.008c.009.231-.015.506-.123.873-.538 1.819 1.905 2.934 2.442 1.111.212-.721.13-1.355.022-1.941l-.01-.052c-.163-.87-.365-1.633.286-2.398z"/><path fill="#292F33" d="M21.598 1.697c-.893-1.208-3.89-2.275-5.792-.746-1.317-.228-1.822 1.024-1.71 1.745.089.575 1.504.724 1.859 1.817.246-.274.312-.835.259-1.135.45.433.254 1.573 2.025 2.317 1.712.719 1.41 2.232 1.41 2.232s.902-.426 1.53-1.153c1.198-1.388 1.403-3.745.419-5.077z"/><path fill="#FA743E" d="M23.663 22.44c-.135.623-7.64 1.303-7.64 1.303.213-1.705.181-6.037-.002-9.094-.193-3.24 3.126-6.232 4.223-5.976 2.132.499 3.601 2.809 3.331 6.23-.388 4.917.151 7.245.088 7.537z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#F7DECE" d="M18.404 13.635c-.366 1.931-.497 5.314-.798 5.455-1.738.816-3.258 1.323-4.399 1.723-.827.29-1.652.456-2.008.77-.569.502-1.246.93-1.305 1.439-.059.517.535.703 1.573.268.762-.32 1.36-.276 2.041-.77.97-.703 4.838-.108 6.3-2.272.494-.73 1.018-2.438 1.72-6.013-.904-.372-3.124-.6-3.124-.6z"/></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F3D2A2" d="M20.591.985c-2.139-.842-5.474.244-5.861 2.743-.385 2.482.321 6.374 2.501 6.138 2.286-.247 4.63-.744 5.556-3.097.927-2.352-.056-4.942-2.196-5.784z"/><path fill="#F3D2A2" d="M22.18 7.376c3.112-3.657-4.386-3.3-4.386-3.3-1.419.052-.442 2.416-1.11 3.707-.458.894 1.47 1.367 1.47 1.367s.885-.013.932 1.06v.01c.011.273-.018.598-.145 1.032-.635 2.149 2.252 3.467 2.885 1.313.251-.852.153-1.602.026-2.294l-.012-.061c-.191-1.028-.429-1.93.34-2.834z"/><path fill="#FFE51E" d="M23.035 1.848C21.611.181 19.652-.511 16.296.786c-2.931 1.133-1.988 3.463-1.306 3.065 1.882-1.097 3.131-.16 4.089 1.371.279-.752 1.507-1.214 1.755-.114.279 1.236-.869 1.775-.716 2.113.051.113-.058-.102 0 0 .734 1.289 1.929 1.694 1.929 1.694s.453.177 1.226-1.345c.773-1.522 1.177-4.067-.238-5.722z"/><path fill="#FFE51E" d="M22.264 3.601c2.904.626 1.712 5.155 1.997 6.821.35 2.051 2.364 2.124 2.364 2.124s-.332-1.429-.155-2.923c.246-2.072 1.597-3.745.171-5.768-1.821-2.584-6.182-.643-4.377-.254z"/><path fill="#292F33" d="M20.252 32.238c-.937.204-1.397.837-1.522 1.423s.419 1.633.963 1.842 5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.51 31.844c-.521.24-.552 1.313.159 2.024.846.846 2.409 1.519 3.34 1.769s2.548-.27 2.539-.923c-.009-.701-1.545-1.829-2.238-1.859-.693-.031-1.505-.042-1.868-.464-.362-.421-1.391-.796-1.932-.547z"/><path fill="#4289C1" d="M25.336 26.113c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061-1.587-.041-2.272.113-3.998.076-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.873-.285 7.813-2.441 8.383-.57z"/><path fill="#2A6797" d="M11.014 32.461c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.925-.491 1.424-.447z"/><path fill="#9268CA" d="M25.28 24.097c0 1.946.508 2.792.592 3.638.047.47-1.553-.275-2.603-.41-2.727-.351-6.408-.309-6.408-.309-.557-2.685.576-4.818-.306-8.419-1.138-4.646 3.231-9.23 5.127-8.621 2.478.797 3.937 3.064 3.936 7.395 0 2.998-.338 4.78-.338 6.726z"/><path fill="#F3D2A2" d="M19.3 15.532c-.341 2.345-.225 6.209-.58 6.395-2.051 1.072-4.163 3.421-5.517 3.961-.981.392-1.967.635-2.378 1.031-.659.634-1.453 1.184-1.497 1.8-.045.625.681.819 1.908.241.901-.424 1.624-.403 2.419-1.032 1.132-.896 6.19-1.666 7.84-4.348.557-.905.927-3.403 1.588-7.744-1.11-.401-3.783-.304-3.783-.304z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F3D2A2" d="M19.652 1.065c-1.764-.694-4.514.202-4.834 2.263-.317 2.047.265 5.257 2.063 5.063 1.885-.204 3.819-.613 4.582-2.554.764-1.942-.047-4.078-1.811-4.772z"/><path fill="#F3D2A2" d="M20.963 6.335c2.567-3.016-3.617-2.722-3.617-2.722-1.17.042-.365 1.993-.916 3.057-.378.737 1.212 1.128 1.212 1.128s.73-.011.769.875v.008c.009.225-.015.493-.12.851-.524 1.772 1.857 2.859 2.38 1.083.207-.703.127-1.321.022-1.892l-.009-.051c-.159-.847-.356-1.591.279-2.337z"/><path fill="#FFE51E" d="M21.668 1.776C20.493.401 18.877-.17 16.11.9c-2.417.934-1.64 2.856-1.077 2.528 1.552-.905 2.582-.132 3.372 1.131.23-.62 1.242-1.001 1.447-.094.23 1.02-.717 1.464-.59 1.742.042.093-.048-.084 0 0 .606 1.063 1.591 1.397 1.591 1.397s.373.147 1.01-1.109c.638-1.255.971-3.354-.195-4.719z"/><path fill="#FFE51E" d="M21.032 3.222c2.395.517 1.412 4.251 1.647 5.625.289 1.692 1.95 1.752 1.95 1.752s-.275-1.178-.129-2.41c.203-1.709 1.317-3.088.141-4.757-1.501-2.131-5.098-.531-3.609-.21z"/><path fill="#9268CA" d="M23.519 20.125c0 1.605.25 2.331.32 3.029.039.388-1.112-.255-1.978-.367-2.249-.289-5.165-1.089-5.165-1.089-.46-2.215.356-3.139-.372-6.109-.939-3.832 2.664-7.612 4.228-7.11 2.044.657 3.247 2.527 3.246 6.099-.001 2.473-.279 3.943-.279 5.547z"/><path fill="#292F33" d="M25.941 32.817l1.063-1.378c.354-.459 1.051-.443 1.383.032.363.518 1.508 1.7 3.206 2.314.264.096.725.291-.165 1.083 0 0-1.049.797-5.632-.453M8.486 36h5.01c.241 0 .437-.195.437-.437v-.413c0-.453-.138-.895-.396-1.267l-.384-.553h-1.935l-1.892.523c-.77.213-1.296.923-1.276 1.722.006.236.2.425.436.425z"/><path fill="#2A6797" d="M17.334 25.673l-.311 7.139s-.156 2.997 3.036 2.939l6.85-.837s.506-1.751-.35-2.51l-4.938-.592c-.137-.016-.228-.149-.194-.283l1.581-5.127c.201-.653.548-2.062.603-2.737.034-.415-.196-.091-.185-.51l-6.403 1.84.311.678z"/><path fill="#4289C1" d="M19.207 21.365c-1.873-.051-7.335.631-7.335.631-2.68.63-2.036 4.541-2.036 4.541l.525 6.917s1.67.954 3.053 0l.93-6.917 4.07.048s6.832 1.36 5.163-5.257c0 0-3.989.047-4.37.037z"/><path fill="#F3D2A2" d="M18.587 13.062c-.282 1.934-.185 5.121-.478 5.274-1.692.884-4.111 2.144-5.227 2.59-.809.323-1.622.524-1.961.85-.544.523-1.199.977-1.235 1.485-.037.516.562.675 1.574.199.743-.35 1.339-.332 1.995-.851.934-.739 5.782-.697 7.143-2.909.459-.747.764-2.806 1.31-6.387-.917-.331-3.121-.251-3.121-.251z"/></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F3D2A2" d="M20.905 1.103c-2.182-.859-5.584.249-5.979 2.799-.393 2.532.328 6.502 2.552 6.262 2.332-.252 4.724-.759 5.668-3.16.944-2.399-.059-5.042-2.241-5.901z"/><path fill="#F3D2A2" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#FFE51E" d="M23.398 1.983C21.945.282 19.863-.621 16.523.9c-1.361.62-1.971.391-2.165.663-.93 1.306.337 2.753.833 2.464 1.572-.917 2.99-.644 3.352.019s.028 1.854.321 1.862c.792.021.664-.755.977-1.202.514-.731 1.296-.318 1.467.496.136.645 0 1.741-1.054 1.934.717 1.577 2.136 2.058 2.136 2.058s.461.181 1.25-1.371c.789-1.554 1.201-4.151-.242-5.84z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#77B255" d="M26.377 25.554c-.057 1.128.391 2.499-.26 2.27-2.565-.9-9.188-.988-9.188-.988-.568-2.564-.037-6.416.008-9.956.059-4.645 3.148-7.192 5.082-6.61 2.528.761 3.689 3.387 4.016 7.511s.398 6.646.342 7.773z"/><path fill="#F3D2A2" d="M19.382 16.204c-.442 2.329-.227 6.078-.59 6.249-2.095.984-3.883 3.239-5.259 3.722-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.091-.449-4.185-.772-4.185-.772z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F3D2A2" d="M18.973 1.123c-1.849-.728-4.732.211-5.067 2.372-.333 2.145.278 5.51 2.162 5.306 1.976-.213 4.003-.643 4.803-2.677.802-2.034-.048-4.273-1.898-5.001z"/><path fill="#F3D2A2" d="M20.347 6.648c2.691-3.161-3.791-2.853-3.791-2.853-1.227.045-.383 2.089-.96 3.205-.396.772 1.271 1.182 1.271 1.182s.765-.011.806.917v.008c.009.236-.016.517-.126.892-.549 1.858 1.946 2.997 2.494 1.135.217-.737.133-1.385.023-1.983l-.01-.053c-.166-.889-.372-1.668.293-2.45z"/><path fill="#FFE51E" d="M21.086 1.869C19.855.428 18.091-.338 15.26.951c-1.153.525-1.67.331-1.834.561-.788 1.106.286 2.333.706 2.088 1.332-.777 2.534-.546 2.841.016.307.562.024 1.571.272 1.578.671.018.562-.64.828-1.019.435-.62 1.098-.269 1.243.42.115.546 0 1.475-.893 1.639.607 1.336 1.81 1.744 1.81 1.744s.391.154 1.059-1.162c.668-1.316 1.017-3.516-.206-4.947z"/><path fill="#77B255" d="M23.563 21.568c-.048.956.379 2.392-.173 2.198-2.174-.763-7.786-.837-7.786-.837-.482-2.173-.032-5.437.006-8.437.05-3.936 2.667-6.094 4.306-5.601 2.142.645 3.126 2.87 3.403 6.364.278 3.495.292 5.357.244 6.313z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#F3D2A2" d="M17.683 13.919c-.374 1.973-.192 5.151-.5 5.295-1.776.833-4.337 1.001-5.502 1.41-.844.296-.825.466-1.188.786-.581.513-1.273.95-1.333 1.47-.061.528.547.718 1.607.273.779-.326 1.389-.282 2.085-.786.991-.718 5.126.558 6.62-1.653.504-.746 1.04-2.491 1.757-6.143-.924-.378-3.546-.652-3.546-.652z"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F3D2A2" d="M20.905 1.103c-2.182-.859-5.459.272-5.979 2.799-.726 3.526 1.288 6.513 3.513 6.273 2.332-.252 3.763-.769 4.708-3.17.943-2.4-.06-5.043-2.242-5.902z"/><path fill="#F3D2A2" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#FFE51E" d="M23.65 1.859C22.573.402 18.961-.884 16.668.96c-1.588-.275-2.196 1.234-2.061 2.103.108.694 1.813.873 2.241 2.19.297-.33.376-1.007.312-1.369.543.523.306 1.896 2.442 2.793 2.064.867 1.7 2.69 1.7 2.69s1.087-.514 1.844-1.39c1.443-1.67 1.691-4.512.504-6.118z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#FA743E" d="M26.117 27.825c-2.565-.9-9.188-.988-9.188-.988.257-2.055.218-5.676-.002-9.362-.233-3.906 3.768-7.514 5.092-7.204 2.571.602 4.342 3.386 4.016 7.511-.469 5.926.733 10.271.082 10.043z"/><path fill="#F3D2A2" d="M19.799 16.252c-.442 2.329-.599 6.406-.962 6.577-2.095.984-3.927 2.864-5.303 3.346-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.092-.449-3.769-.724-3.769-.724z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F3D2A2" d="M19.321 1.07c-1.81-.712-4.528.226-4.96 2.322-.602 2.925 1.069 5.402 2.914 5.203 1.934-.209 3.121-.638 3.905-2.629.783-1.992-.049-4.184-1.859-4.896z"/><path fill="#F3D2A2" d="M20.665 6.478c2.634-3.094-3.711-2.792-3.711-2.792-1.201.044-.374 2.044-.939 3.137-.388.756 1.244 1.157 1.244 1.157s.749-.011.789.897v.008c.009.231-.015.506-.123.873-.538 1.819 1.905 2.934 2.442 1.111.212-.721.13-1.355.022-1.941l-.01-.052c-.163-.87-.365-1.633.286-2.398z"/><path fill="#FFE51E" d="M21.598 1.697c-.893-1.208-3.89-2.275-5.792-.746-1.317-.228-1.822 1.024-1.71 1.745.089.575 1.504.724 1.859 1.817.246-.274.312-.835.259-1.135.45.433.254 1.573 2.025 2.317 1.712.719 1.41 2.232 1.41 2.232s.902-.426 1.53-1.153c1.198-1.388 1.403-3.745.419-5.077z"/><path fill="#FA743E" d="M23.663 22.44c-.135.623-7.64 1.303-7.64 1.303.213-1.705.181-6.037-.002-9.094-.193-3.24 3.126-6.232 4.223-5.976 2.132.499 3.601 2.809 3.331 6.23-.388 4.917.151 7.245.088 7.537z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#F3D2A2" d="M18.404 13.635c-.366 1.931-.497 5.314-.798 5.455-1.738.816-3.258 1.323-4.399 1.723-.827.29-1.652.456-2.008.77-.569.502-1.246.93-1.305 1.439-.059.517.535.703 1.573.268.762-.32 1.36-.276 2.041-.77.97-.703 4.838-.108 6.3-2.272.494-.73 1.018-2.438 1.72-6.013-.904-.372-3.124-.6-3.124-.6z"/></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D4AB88" d="M20.591.985c-2.139-.842-5.474.244-5.861 2.743-.385 2.482.321 6.374 2.501 6.138 2.286-.247 4.63-.744 5.556-3.097.927-2.352-.056-4.942-2.196-5.784z"/><path fill="#D4AB88" d="M22.18 7.376c3.112-3.657-4.386-3.3-4.386-3.3-1.419.052-.442 2.416-1.11 3.707-.458.894 1.47 1.367 1.47 1.367s.885-.013.932 1.06v.01c.011.273-.018.598-.145 1.032-.635 2.149 2.252 3.467 2.885 1.313.251-.852.153-1.602.026-2.294l-.012-.061c-.191-1.028-.429-1.93.34-2.834z"/><path fill="#963B22" d="M23.035 1.848C21.611.181 19.652-.511 16.296.786c-2.931 1.133-1.988 3.463-1.306 3.065 1.882-1.097 3.131-.16 4.089 1.371.279-.752 1.507-1.214 1.755-.114.279 1.236-.869 1.775-.716 2.113.051.113-.058-.102 0 0 .734 1.289 1.929 1.694 1.929 1.694s.453.177 1.226-1.345c.773-1.522 1.177-4.067-.238-5.722z"/><path fill="#963B22" d="M22.264 3.601c2.904.626 1.712 5.155 1.997 6.821.35 2.051 2.364 2.124 2.364 2.124s-.332-1.429-.155-2.923c.246-2.072 1.597-3.745.171-5.768-1.821-2.584-6.182-.643-4.377-.254z"/><path fill="#292F33" d="M20.252 32.238c-.937.204-1.397.837-1.522 1.423s.419 1.633.963 1.842 5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.51 31.844c-.521.24-.552 1.313.159 2.024.846.846 2.409 1.519 3.34 1.769s2.548-.27 2.539-.923c-.009-.701-1.545-1.829-2.238-1.859-.693-.031-1.505-.042-1.868-.464-.362-.421-1.391-.796-1.932-.547z"/><path fill="#4289C1" d="M25.336 26.113c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061-1.587-.041-2.272.113-3.998.076-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.873-.285 7.813-2.441 8.383-.57z"/><path fill="#2A6797" d="M11.014 32.461c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.925-.491 1.424-.447z"/><path fill="#9268CA" d="M25.28 24.097c0 1.946.508 2.792.592 3.638.047.47-1.553-.275-2.603-.41-2.727-.351-6.408-.309-6.408-.309-.557-2.685.576-4.818-.306-8.419-1.138-4.646 3.231-9.23 5.127-8.621 2.478.797 3.937 3.064 3.936 7.395 0 2.998-.338 4.78-.338 6.726z"/><path fill="#D4AB88" d="M19.3 15.532c-.341 2.345-.225 6.209-.58 6.395-2.051 1.072-4.163 3.421-5.517 3.961-.981.392-1.967.635-2.378 1.031-.659.634-1.453 1.184-1.497 1.8-.045.625.681.819 1.908.241.901-.424 1.624-.403 2.419-1.032 1.132-.896 6.19-1.666 7.84-4.348.557-.905.927-3.403 1.588-7.744-1.11-.401-3.783-.304-3.783-.304z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D4AB88" d="M19.652 1.065c-1.764-.694-4.514.202-4.834 2.263-.317 2.047.265 5.257 2.063 5.063 1.885-.204 3.819-.613 4.582-2.554.764-1.942-.047-4.078-1.811-4.772z"/><path fill="#D4AB88" d="M20.963 6.335c2.567-3.016-3.617-2.722-3.617-2.722-1.17.042-.365 1.993-.916 3.057-.378.737 1.212 1.128 1.212 1.128s.73-.011.769.875v.008c.009.225-.015.493-.12.851-.524 1.772 1.857 2.859 2.38 1.083.207-.703.127-1.321.022-1.892l-.009-.051c-.159-.847-.356-1.591.279-2.337z"/><path fill="#963B22" d="M21.668 1.776C20.493.401 18.877-.17 16.11.9c-2.417.934-1.64 2.856-1.077 2.528 1.552-.905 2.582-.132 3.372 1.131.23-.62 1.242-1.001 1.447-.094.23 1.02-.717 1.464-.59 1.742.042.093-.048-.084 0 0 .606 1.063 1.591 1.397 1.591 1.397s.373.147 1.01-1.109c.638-1.255.971-3.354-.195-4.719z"/><path fill="#963B22" d="M21.032 3.222c2.395.517 1.412 4.251 1.647 5.625.289 1.692 1.95 1.752 1.95 1.752s-.275-1.178-.129-2.41c.203-1.709 1.317-3.088.141-4.757-1.501-2.131-5.098-.531-3.609-.21z"/><path fill="#9268CA" d="M23.519 20.125c0 1.605.25 2.331.32 3.029.039.388-1.112-.255-1.978-.367-2.249-.289-5.165-1.089-5.165-1.089-.46-2.215.356-3.139-.372-6.109-.939-3.832 2.664-7.612 4.228-7.11 2.044.657 3.247 2.527 3.246 6.099-.001 2.473-.279 3.943-.279 5.547z"/><path fill="#292F33" d="M25.941 32.817l1.063-1.378c.354-.459 1.051-.443 1.383.032.363.518 1.508 1.7 3.206 2.314.264.096.725.291-.165 1.083 0 0-1.049.797-5.632-.453M8.486 36h5.01c.241 0 .437-.195.437-.437v-.413c0-.453-.138-.895-.396-1.267l-.384-.553h-1.935l-1.892.523c-.77.213-1.296.923-1.276 1.722.006.236.2.425.436.425z"/><path fill="#2A6797" d="M17.334 25.673l-.311 7.139s-.156 2.997 3.036 2.939l6.85-.837s.506-1.751-.35-2.51l-4.938-.592c-.137-.016-.228-.149-.194-.283l1.581-5.127c.201-.653.548-2.062.603-2.737.034-.415-.196-.091-.185-.51l-6.403 1.84.311.678z"/><path fill="#4289C1" d="M19.207 21.365c-1.873-.051-7.335.631-7.335.631-2.68.63-2.036 4.541-2.036 4.541l.525 6.917s1.67.954 3.053 0l.93-6.917 4.07.048s6.832 1.36 5.163-5.257c0 0-3.989.047-4.37.037z"/><path fill="#D4AB88" d="M18.587 13.062c-.282 1.934-.185 5.121-.478 5.274-1.692.884-4.111 2.144-5.227 2.59-.809.323-1.622.524-1.961.85-.544.523-1.199.977-1.235 1.485-.037.516.562.675 1.574.199.743-.35 1.339-.332 1.995-.851.934-.739 5.782-.697 7.143-2.909.459-.747.764-2.806 1.31-6.387-.917-.331-3.121-.251-3.121-.251z"/></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D4AB88" d="M20.905 1.103c-2.182-.859-5.584.249-5.979 2.799-.393 2.532.328 6.502 2.552 6.262 2.332-.252 4.724-.759 5.668-3.16.944-2.399-.059-5.042-2.241-5.901z"/><path fill="#D4AB88" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#963B22" d="M23.398 1.983C21.945.282 19.863-.621 16.523.9c-1.361.62-1.971.391-2.165.663-.93 1.306.337 2.753.833 2.464 1.572-.917 2.99-.644 3.352.019s.028 1.854.321 1.862c.792.021.664-.755.977-1.202.514-.731 1.296-.318 1.467.496.136.645 0 1.741-1.054 1.934.717 1.577 2.136 2.058 2.136 2.058s.461.181 1.25-1.371c.789-1.554 1.201-4.151-.242-5.84z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#77B255" d="M26.377 25.554c-.057 1.128.391 2.499-.26 2.27-2.565-.9-9.188-.988-9.188-.988-.568-2.564-.037-6.416.008-9.956.059-4.645 3.148-7.192 5.082-6.61 2.528.761 3.689 3.387 4.016 7.511s.398 6.646.342 7.773z"/><path fill="#D4AB88" d="M19.382 16.204c-.442 2.329-.227 6.078-.59 6.249-2.095.984-3.883 3.239-5.259 3.722-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.091-.449-4.185-.772-4.185-.772z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D4AB88" d="M18.973 1.123c-1.849-.728-4.732.211-5.067 2.372-.333 2.145.278 5.51 2.162 5.306 1.976-.213 4.003-.643 4.803-2.677.802-2.034-.048-4.273-1.898-5.001z"/><path fill="#D4AB88" d="M20.347 6.648c2.691-3.161-3.791-2.853-3.791-2.853-1.227.045-.383 2.089-.96 3.205-.396.772 1.271 1.182 1.271 1.182s.765-.011.806.917v.008c.009.236-.016.517-.126.892-.549 1.858 1.946 2.997 2.494 1.135.217-.737.133-1.385.023-1.983l-.01-.053c-.166-.889-.372-1.668.293-2.45z"/><path fill="#963B22" d="M21.086 1.869C19.855.428 18.091-.338 15.26.951c-1.153.525-1.67.331-1.834.561-.788 1.106.286 2.333.706 2.088 1.332-.777 2.534-.546 2.841.016.307.562.024 1.571.272 1.578.671.018.562-.64.828-1.019.435-.62 1.098-.269 1.243.42.115.546 0 1.475-.893 1.639.607 1.336 1.81 1.744 1.81 1.744s.391.154 1.059-1.162c.668-1.316 1.017-3.516-.206-4.947z"/><path fill="#77B255" d="M23.563 21.568c-.048.956.379 2.392-.173 2.198-2.174-.763-7.786-.837-7.786-.837-.482-2.173-.032-5.437.006-8.437.05-3.936 2.667-6.094 4.306-5.601 2.142.645 3.126 2.87 3.403 6.364.278 3.495.292 5.357.244 6.313z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#D4AB88" d="M17.683 13.919c-.374 1.973-.192 5.151-.5 5.295-1.776.833-4.337 1.001-5.502 1.41-.844.296-.825.466-1.188.786-.581.513-1.273.95-1.333 1.47-.061.528.547.718 1.607.273.779-.326 1.389-.282 2.085-.786.991-.718 5.126.558 6.62-1.653.504-.746 1.04-2.491 1.757-6.143-.924-.378-3.546-.652-3.546-.652z"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D4AB88" d="M20.905 1.103c-2.182-.859-5.459.272-5.979 2.799-.726 3.526 1.288 6.513 3.513 6.273 2.332-.252 3.763-.769 4.708-3.17.943-2.4-.06-5.043-2.242-5.902z"/><path fill="#D4AB88" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#963B22" d="M23.65 1.859C22.573.402 18.961-.884 16.668.96c-1.588-.275-2.196 1.234-2.061 2.103.108.694 1.813.873 2.241 2.19.297-.33.376-1.007.312-1.369.543.523.306 1.896 2.442 2.793 2.064.867 1.7 2.69 1.7 2.69s1.087-.514 1.844-1.39c1.443-1.67 1.691-4.512.504-6.118z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#FA743E" d="M26.117 27.825c-2.565-.9-9.188-.988-9.188-.988.257-2.055.218-5.676-.002-9.362-.233-3.906 3.768-7.514 5.092-7.204 2.571.602 4.342 3.386 4.016 7.511-.469 5.926.733 10.271.082 10.043z"/><path fill="#D4AB88" d="M19.799 16.252c-.442 2.329-.599 6.406-.962 6.577-2.095.984-3.927 2.864-5.303 3.346-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.092-.449-3.769-.724-3.769-.724z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D4AB88" d="M19.321 1.07c-1.81-.712-4.528.226-4.96 2.322-.602 2.925 1.069 5.402 2.914 5.203 1.934-.209 3.121-.638 3.905-2.629.783-1.992-.049-4.184-1.859-4.896z"/><path fill="#D4AB88" d="M20.665 6.478c2.634-3.094-3.711-2.792-3.711-2.792-1.201.044-.374 2.044-.939 3.137-.388.756 1.244 1.157 1.244 1.157s.749-.011.789.897v.008c.009.231-.015.506-.123.873-.538 1.819 1.905 2.934 2.442 1.111.212-.721.13-1.355.022-1.941l-.01-.052c-.163-.87-.365-1.633.286-2.398z"/><path fill="#963B22" d="M21.598 1.697c-.893-1.208-3.89-2.275-5.792-.746-1.317-.228-1.822 1.024-1.71 1.745.089.575 1.504.724 1.859 1.817.246-.274.312-.835.259-1.135.45.433.254 1.573 2.025 2.317 1.712.719 1.41 2.232 1.41 2.232s.902-.426 1.53-1.153c1.198-1.388 1.403-3.745.419-5.077z"/><path fill="#FA743E" d="M23.663 22.44c-.135.623-7.64 1.303-7.64 1.303.213-1.705.181-6.037-.002-9.094-.193-3.24 3.126-6.232 4.223-5.976 2.132.499 3.601 2.809 3.331 6.23-.388 4.917.151 7.245.088 7.537z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#D4AB88" d="M18.404 13.635c-.366 1.931-.497 5.314-.798 5.455-1.738.816-3.258 1.323-4.399 1.723-.827.29-1.652.456-2.008.77-.569.502-1.246.93-1.305 1.439-.059.517.535.703 1.573.268.762-.32 1.36-.276 2.041-.77.97-.703 4.838-.108 6.3-2.272.494-.73 1.018-2.438 1.72-6.013-.904-.372-3.124-.6-3.124-.6z"/></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AF7E57" d="M20.591.985c-2.139-.842-5.474.244-5.861 2.743-.385 2.482.321 6.374 2.501 6.138 2.286-.247 4.63-.744 5.556-3.097.927-2.352-.056-4.942-2.196-5.784z"/><path fill="#AF7E57" d="M22.18 7.376c3.112-3.657-4.386-3.3-4.386-3.3-1.419.052-.442 2.416-1.11 3.707-.458.894 1.47 1.367 1.47 1.367s.885-.013.932 1.06v.01c.011.273-.018.598-.145 1.032-.635 2.149 2.252 3.467 2.885 1.313.251-.852.153-1.602.026-2.294l-.012-.061c-.191-1.028-.429-1.93.34-2.834z"/><path fill="#60352A" d="M23.035 1.848C21.611.181 19.652-.511 16.296.786c-2.931 1.133-1.988 3.463-1.306 3.065 1.882-1.097 3.131-.16 4.089 1.371.279-.752 1.507-1.214 1.755-.114.279 1.236-.869 1.775-.716 2.113.051.113-.058-.102 0 0 .734 1.289 1.929 1.694 1.929 1.694s.453.177 1.226-1.345c.773-1.522 1.177-4.067-.238-5.722z"/><path fill="#60352A" d="M22.264 3.601c2.904.626 1.712 5.155 1.997 6.821.35 2.051 2.364 2.124 2.364 2.124s-.332-1.429-.155-2.923c.246-2.072 1.597-3.745.171-5.768-1.821-2.584-6.182-.643-4.377-.254z"/><path fill="#292F33" d="M20.252 32.238c-.937.204-1.397.837-1.522 1.423s.419 1.633.963 1.842 5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.51 31.844c-.521.24-.552 1.313.159 2.024.846.846 2.409 1.519 3.34 1.769s2.548-.27 2.539-.923c-.009-.701-1.545-1.829-2.238-1.859-.693-.031-1.505-.042-1.868-.464-.362-.421-1.391-.796-1.932-.547z"/><path fill="#4289C1" d="M25.336 26.113c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061-1.587-.041-2.272.113-3.998.076-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.873-.285 7.813-2.441 8.383-.57z"/><path fill="#2A6797" d="M11.014 32.461c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.925-.491 1.424-.447z"/><path fill="#9268CA" d="M25.28 24.097c0 1.946.508 2.792.592 3.638.047.47-1.553-.275-2.603-.41-2.727-.351-6.408-.309-6.408-.309-.557-2.685.576-4.818-.306-8.419-1.138-4.646 3.231-9.23 5.127-8.621 2.478.797 3.937 3.064 3.936 7.395 0 2.998-.338 4.78-.338 6.726z"/><path fill="#AF7E57" d="M19.3 15.532c-.341 2.345-.225 6.209-.58 6.395-2.051 1.072-4.163 3.421-5.517 3.961-.981.392-1.967.635-2.378 1.031-.659.634-1.453 1.184-1.497 1.8-.045.625.681.819 1.908.241.901-.424 1.624-.403 2.419-1.032 1.132-.896 6.19-1.666 7.84-4.348.557-.905.927-3.403 1.588-7.744-1.11-.401-3.783-.304-3.783-.304z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AF7E57" d="M19.652 1.065c-1.764-.694-4.514.202-4.834 2.263-.317 2.047.265 5.257 2.063 5.063 1.885-.204 3.819-.613 4.582-2.554.764-1.942-.047-4.078-1.811-4.772z"/><path fill="#AF7E57" d="M20.963 6.335c2.567-3.016-3.617-2.722-3.617-2.722-1.17.042-.365 1.993-.916 3.057-.378.737 1.212 1.128 1.212 1.128s.73-.011.769.875v.008c.009.225-.015.493-.12.851-.524 1.772 1.857 2.859 2.38 1.083.207-.703.127-1.321.022-1.892l-.009-.051c-.159-.847-.356-1.591.279-2.337z"/><path fill="#60352A" d="M21.668 1.776C20.493.401 18.877-.17 16.11.9c-2.417.934-1.64 2.856-1.077 2.528 1.552-.905 2.582-.132 3.372 1.131.23-.62 1.242-1.001 1.447-.094.23 1.02-.717 1.464-.59 1.742.042.093-.048-.084 0 0 .606 1.063 1.591 1.397 1.591 1.397s.373.147 1.01-1.109c.638-1.255.971-3.354-.195-4.719z"/><path fill="#60352A" d="M21.032 3.222c2.395.517 1.412 4.251 1.647 5.625.289 1.692 1.95 1.752 1.95 1.752s-.275-1.178-.129-2.41c.203-1.709 1.317-3.088.141-4.757-1.501-2.131-5.098-.531-3.609-.21z"/><path fill="#9268CA" d="M23.519 20.125c0 1.605.25 2.331.32 3.029.039.388-1.112-.255-1.978-.367-2.249-.289-5.165-1.089-5.165-1.089-.46-2.215.356-3.139-.372-6.109-.939-3.832 2.664-7.612 4.228-7.11 2.044.657 3.247 2.527 3.246 6.099-.001 2.473-.279 3.943-.279 5.547z"/><path fill="#292F33" d="M25.941 32.817l1.063-1.378c.354-.459 1.051-.443 1.383.032.363.518 1.508 1.7 3.206 2.314.264.096.725.291-.165 1.083 0 0-1.049.797-5.632-.453M8.486 36h5.01c.241 0 .437-.195.437-.437v-.413c0-.453-.138-.895-.396-1.267l-.384-.553h-1.935l-1.892.523c-.77.213-1.296.923-1.276 1.722.006.236.2.425.436.425z"/><path fill="#2A6797" d="M17.334 25.673l-.311 7.139s-.156 2.997 3.036 2.939l6.85-.837s.506-1.751-.35-2.51l-4.938-.592c-.137-.016-.228-.149-.194-.283l1.581-5.127c.201-.653.548-2.062.603-2.737.034-.415-.196-.091-.185-.51l-6.403 1.84.311.678z"/><path fill="#4289C1" d="M19.207 21.365c-1.873-.051-7.335.631-7.335.631-2.68.63-2.036 4.541-2.036 4.541l.525 6.917s1.67.954 3.053 0l.93-6.917 4.07.048s6.832 1.36 5.163-5.257c0 0-3.989.047-4.37.037z"/><path fill="#AF7E57" d="M18.587 13.062c-.282 1.934-.185 5.121-.478 5.274-1.692.884-4.111 2.144-5.227 2.59-.809.323-1.622.524-1.961.85-.544.523-1.199.977-1.235 1.485-.037.516.562.675 1.574.199.743-.35 1.339-.332 1.995-.851.934-.739 5.782-.697 7.143-2.909.459-.747.764-2.806 1.31-6.387-.917-.331-3.121-.251-3.121-.251z"/></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AF7E57" d="M20.905 1.103c-2.182-.859-5.584.249-5.979 2.799-.393 2.532.328 6.502 2.552 6.262 2.332-.252 4.724-.759 5.668-3.16.944-2.399-.059-5.042-2.241-5.901z"/><path fill="#AF7E57" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#60352A" d="M23.398 1.983C21.945.282 19.863-.621 16.523.9c-1.361.62-1.971.391-2.165.663-.93 1.306.337 2.753.833 2.464 1.572-.917 2.99-.644 3.352.019s.028 1.854.321 1.862c.792.021.664-.755.977-1.202.514-.731 1.296-.318 1.467.496.136.645 0 1.741-1.054 1.934.717 1.577 2.136 2.058 2.136 2.058s.461.181 1.25-1.371c.789-1.554 1.201-4.151-.242-5.84z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#77B255" d="M26.377 25.554c-.057 1.128.391 2.499-.26 2.27-2.565-.9-9.188-.988-9.188-.988-.568-2.564-.037-6.416.008-9.956.059-4.645 3.148-7.192 5.082-6.61 2.528.761 3.689 3.387 4.016 7.511s.398 6.646.342 7.773z"/><path fill="#AF7E57" d="M19.382 16.204c-.442 2.329-.227 6.078-.59 6.249-2.095.984-3.883 3.239-5.259 3.722-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.091-.449-4.185-.772-4.185-.772z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AF7E57" d="M18.973 1.123c-1.849-.728-4.732.211-5.067 2.372-.333 2.145.278 5.51 2.162 5.306 1.976-.213 4.003-.643 4.803-2.677.802-2.034-.048-4.273-1.898-5.001z"/><path fill="#AF7E57" d="M20.347 6.648c2.691-3.161-3.791-2.853-3.791-2.853-1.227.045-.383 2.089-.96 3.205-.396.772 1.271 1.182 1.271 1.182s.765-.011.806.917v.008c.009.236-.016.517-.126.892-.549 1.858 1.946 2.997 2.494 1.135.217-.737.133-1.385.023-1.983l-.01-.053c-.166-.889-.372-1.668.293-2.45z"/><path fill="#60352A" d="M21.086 1.869C19.855.428 18.091-.338 15.26.951c-1.153.525-1.67.331-1.834.561-.788 1.106.286 2.333.706 2.088 1.332-.777 2.534-.546 2.841.016.307.562.024 1.571.272 1.578.671.018.562-.64.828-1.019.435-.62 1.098-.269 1.243.42.115.546 0 1.475-.893 1.639.607 1.336 1.81 1.744 1.81 1.744s.391.154 1.059-1.162c.668-1.316 1.017-3.516-.206-4.947z"/><path fill="#77B255" d="M23.563 21.568c-.048.956.379 2.392-.173 2.198-2.174-.763-7.786-.837-7.786-.837-.482-2.173-.032-5.437.006-8.437.05-3.936 2.667-6.094 4.306-5.601 2.142.645 3.126 2.87 3.403 6.364.278 3.495.292 5.357.244 6.313z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#AF7E57" d="M17.683 13.919c-.374 1.973-.192 5.151-.5 5.295-1.776.833-4.337 1.001-5.502 1.41-.844.296-.825.466-1.188.786-.581.513-1.273.95-1.333 1.47-.061.528.547.718 1.607.273.779-.326 1.389-.282 2.085-.786.991-.718 5.126.558 6.62-1.653.504-.746 1.04-2.491 1.757-6.143-.924-.378-3.546-.652-3.546-.652z"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AF7E57" d="M20.905 1.103c-2.182-.859-5.459.272-5.979 2.799-.726 3.526 1.288 6.513 3.513 6.273 2.332-.252 3.763-.769 4.708-3.17.943-2.4-.06-5.043-2.242-5.902z"/><path fill="#AF7E57" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#60352A" d="M23.65 1.859C22.573.402 18.961-.884 16.668.96c-1.588-.275-2.196 1.234-2.061 2.103.108.694 1.813.873 2.241 2.19.297-.33.376-1.007.312-1.369.543.523.306 1.896 2.442 2.793 2.064.867 1.7 2.69 1.7 2.69s1.087-.514 1.844-1.39c1.443-1.67 1.691-4.512.504-6.118z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#FA743E" d="M26.117 27.825c-2.565-.9-9.188-.988-9.188-.988.257-2.055.218-5.676-.002-9.362-.233-3.906 3.768-7.514 5.092-7.204 2.571.602 4.342 3.386 4.016 7.511-.469 5.926.733 10.271.082 10.043z"/><path fill="#AF7E57" d="M19.799 16.252c-.442 2.329-.599 6.406-.962 6.577-2.095.984-3.927 2.864-5.303 3.346-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.092-.449-3.769-.724-3.769-.724z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AF7E57" d="M19.321 1.07c-1.81-.712-4.528.226-4.96 2.322-.602 2.925 1.069 5.402 2.914 5.203 1.934-.209 3.121-.638 3.905-2.629.783-1.992-.049-4.184-1.859-4.896z"/><path fill="#AF7E57" d="M20.665 6.478c2.634-3.094-3.711-2.792-3.711-2.792-1.201.044-.374 2.044-.939 3.137-.388.756 1.244 1.157 1.244 1.157s.749-.011.789.897v.008c.009.231-.015.506-.123.873-.538 1.819 1.905 2.934 2.442 1.111.212-.721.13-1.355.022-1.941l-.01-.052c-.163-.87-.365-1.633.286-2.398z"/><path fill="#60352A" d="M21.598 1.697c-.893-1.208-3.89-2.275-5.792-.746-1.317-.228-1.822 1.024-1.71 1.745.089.575 1.504.724 1.859 1.817.246-.274.312-.835.259-1.135.45.433.254 1.573 2.025 2.317 1.712.719 1.41 2.232 1.41 2.232s.902-.426 1.53-1.153c1.198-1.388 1.403-3.745.419-5.077z"/><path fill="#FA743E" d="M23.663 22.44c-.135.623-7.64 1.303-7.64 1.303.213-1.705.181-6.037-.002-9.094-.193-3.24 3.126-6.232 4.223-5.976 2.132.499 3.601 2.809 3.331 6.23-.388 4.917.151 7.245.088 7.537z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#AF7E57" d="M18.404 13.635c-.366 1.931-.497 5.314-.798 5.455-1.738.816-3.258 1.323-4.399 1.723-.827.29-1.652.456-2.008.77-.569.502-1.246.93-1.305 1.439-.059.517.535.703 1.573.268.762-.32 1.36-.276 2.041-.77.97-.703 4.838-.108 6.3-2.272.494-.73 1.018-2.438 1.72-6.013-.904-.372-3.124-.6-3.124-.6z"/></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#7C533E" d="M20.591.985c-2.139-.842-5.474.244-5.861 2.743-.385 2.482.321 6.374 2.501 6.138 2.286-.247 4.63-.744 5.556-3.097.927-2.352-.056-4.942-2.196-5.784z"/><path fill="#7C533E" d="M22.18 7.376c3.112-3.657-4.386-3.3-4.386-3.3-1.419.052-.442 2.416-1.11 3.707-.458.894 1.47 1.367 1.47 1.367s.885-.013.932 1.06v.01c.011.273-.018.598-.145 1.032-.635 2.149 2.252 3.467 2.885 1.313.251-.852.153-1.602.026-2.294l-.012-.061c-.191-1.028-.429-1.93.34-2.834z"/><path fill="#0B0200" d="M23.035 1.848C21.611.181 19.652-.511 16.296.786c-2.931 1.133-1.988 3.463-1.306 3.065 1.882-1.097 3.131-.16 4.089 1.371.279-.752 1.507-1.214 1.755-.114.279 1.236-.869 1.775-.716 2.113.051.113-.058-.102 0 0 .734 1.289 1.929 1.694 1.929 1.694s.453.177 1.226-1.345c.773-1.522 1.177-4.067-.238-5.722z"/><path fill="#0B0200" d="M22.264 3.601c2.904.626 1.712 5.155 1.997 6.821.35 2.051 2.364 2.124 2.364 2.124s-.332-1.429-.155-2.923c.246-2.072 1.597-3.745.171-5.768-1.821-2.584-6.182-.643-4.377-.254z"/><path fill="#292F33" d="M20.252 32.238c-.937.204-1.397.837-1.522 1.423s.419 1.633.963 1.842 5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.51 31.844c-.521.24-.552 1.313.159 2.024.846.846 2.409 1.519 3.34 1.769s2.548-.27 2.539-.923c-.009-.701-1.545-1.829-2.238-1.859-.693-.031-1.505-.042-1.868-.464-.362-.421-1.391-.796-1.932-.547z"/><path fill="#4289C1" d="M25.336 26.113c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061-1.587-.041-2.272.113-3.998.076-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.873-.285 7.813-2.441 8.383-.57z"/><path fill="#2A6797" d="M11.014 32.461c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.925-.491 1.424-.447z"/><path fill="#9268CA" d="M25.28 24.097c0 1.946.508 2.792.592 3.638.047.47-1.553-.275-2.603-.41-2.727-.351-6.408-.309-6.408-.309-.557-2.685.576-4.818-.306-8.419-1.138-4.646 3.231-9.23 5.127-8.621 2.478.797 3.937 3.064 3.936 7.395 0 2.998-.338 4.78-.338 6.726z"/><path fill="#7C533E" d="M19.3 15.532c-.341 2.345-.225 6.209-.58 6.395-2.051 1.072-4.163 3.421-5.517 3.961-.981.392-1.967.635-2.378 1.031-.659.634-1.453 1.184-1.497 1.8-.045.625.681.819 1.908.241.901-.424 1.624-.403 2.419-1.032 1.132-.896 6.19-1.666 7.84-4.348.557-.905.927-3.403 1.588-7.744-1.11-.401-3.783-.304-3.783-.304z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#7C533E" d="M19.652 1.065c-1.764-.694-4.514.202-4.834 2.263-.317 2.047.265 5.257 2.063 5.063 1.885-.204 3.819-.613 4.582-2.554.764-1.942-.047-4.078-1.811-4.772z"/><path fill="#7C533E" d="M20.963 6.335c2.567-3.016-3.617-2.722-3.617-2.722-1.17.042-.365 1.993-.916 3.057-.378.737 1.212 1.128 1.212 1.128s.73-.011.769.875v.008c.009.225-.015.493-.12.851-.524 1.772 1.857 2.859 2.38 1.083.207-.703.127-1.321.022-1.892l-.009-.051c-.159-.847-.356-1.591.279-2.337z"/><path fill="#0B0200" d="M21.668 1.776C20.493.401 18.877-.17 16.11.9c-2.417.934-1.64 2.856-1.077 2.528 1.552-.905 2.582-.132 3.372 1.131.23-.62 1.242-1.001 1.447-.094.23 1.02-.717 1.464-.59 1.742.042.093-.048-.084 0 0 .606 1.063 1.591 1.397 1.591 1.397s.373.147 1.01-1.109c.638-1.255.971-3.354-.195-4.719z"/><path fill="#0B0200" d="M21.032 3.222c2.395.517 1.412 4.251 1.647 5.625.289 1.692 1.95 1.752 1.95 1.752s-.275-1.178-.129-2.41c.203-1.709 1.317-3.088.141-4.757-1.501-2.131-5.098-.531-3.609-.21z"/><path fill="#9268CA" d="M23.519 20.125c0 1.605.25 2.331.32 3.029.039.388-1.112-.255-1.978-.367-2.249-.289-5.165-1.089-5.165-1.089-.46-2.215.356-3.139-.372-6.109-.939-3.832 2.664-7.612 4.228-7.11 2.044.657 3.247 2.527 3.246 6.099-.001 2.473-.279 3.943-.279 5.547z"/><path fill="#292F33" d="M25.941 32.817l1.063-1.378c.354-.459 1.051-.443 1.383.032.363.518 1.508 1.7 3.206 2.314.264.096.725.291-.165 1.083 0 0-1.049.797-5.632-.453M8.486 36h5.01c.241 0 .437-.195.437-.437v-.413c0-.453-.138-.895-.396-1.267l-.384-.553h-1.935l-1.892.523c-.77.213-1.296.923-1.276 1.722.006.236.2.425.436.425z"/><path fill="#2A6797" d="M17.334 25.673l-.311 7.139s-.156 2.997 3.036 2.939l6.85-.837s.506-1.751-.35-2.51l-4.938-.592c-.137-.016-.228-.149-.194-.283l1.581-5.127c.201-.653.548-2.062.603-2.737.034-.415-.196-.091-.185-.51l-6.403 1.84.311.678z"/><path fill="#4289C1" d="M19.207 21.365c-1.873-.051-7.335.631-7.335.631-2.68.63-2.036 4.541-2.036 4.541l.525 6.917s1.67.954 3.053 0l.93-6.917 4.07.048s6.832 1.36 5.163-5.257c0 0-3.989.047-4.37.037z"/><path fill="#7C533E" d="M18.587 13.062c-.282 1.934-.185 5.121-.478 5.274-1.692.884-4.111 2.144-5.227 2.59-.809.323-1.622.524-1.961.85-.544.523-1.199.977-1.235 1.485-.037.516.562.675 1.574.199.743-.35 1.339-.332 1.995-.851.934-.739 5.782-.697 7.143-2.909.459-.747.764-2.806 1.31-6.387-.917-.331-3.121-.251-3.121-.251z"/></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#7C533E" d="M20.905 1.103c-2.182-.859-5.584.249-5.979 2.799-.393 2.532.328 6.502 2.552 6.262 2.332-.252 4.724-.759 5.668-3.16.944-2.399-.059-5.042-2.241-5.901z"/><path fill="#7C533E" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#0B0200" d="M23.398 1.983C21.945.282 19.863-.621 16.523.9c-1.361.62-1.971.391-2.165.663-.93 1.306.337 2.753.833 2.464 1.572-.917 2.99-.644 3.352.019s.028 1.854.321 1.862c.792.021.664-.755.977-1.202.514-.731 1.296-.318 1.467.496.136.645 0 1.741-1.054 1.934.717 1.577 2.136 2.058 2.136 2.058s.461.181 1.25-1.371c.789-1.554 1.201-4.151-.242-5.84z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#77B255" d="M26.377 25.554c-.057 1.128.391 2.499-.26 2.27-2.565-.9-9.188-.988-9.188-.988-.568-2.564-.037-6.416.008-9.956.059-4.645 3.148-7.192 5.082-6.61 2.528.761 3.689 3.387 4.016 7.511s.398 6.646.342 7.773z"/><path fill="#7C533E" d="M19.382 16.204c-.442 2.329-.227 6.078-.59 6.249-2.095.984-3.883 3.239-5.259 3.722-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.091-.449-4.185-.772-4.185-.772z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#7C533E" d="M18.973 1.123c-1.849-.728-4.732.211-5.067 2.372-.333 2.145.278 5.51 2.162 5.306 1.976-.213 4.003-.643 4.803-2.677.802-2.034-.048-4.273-1.898-5.001z"/><path fill="#7C533E" d="M20.347 6.648c2.691-3.161-3.791-2.853-3.791-2.853-1.227.045-.383 2.089-.96 3.205-.396.772 1.271 1.182 1.271 1.182s.765-.011.806.917v.008c.009.236-.016.517-.126.892-.549 1.858 1.946 2.997 2.494 1.135.217-.737.133-1.385.023-1.983l-.01-.053c-.166-.889-.372-1.668.293-2.45z"/><path fill="#0B0200" d="M21.086 1.869C19.855.428 18.091-.338 15.26.951c-1.153.525-1.67.331-1.834.561-.788 1.106.286 2.333.706 2.088 1.332-.777 2.534-.546 2.841.016.307.562.024 1.571.272 1.578.671.018.562-.64.828-1.019.435-.62 1.098-.269 1.243.42.115.546 0 1.475-.893 1.639.607 1.336 1.81 1.744 1.81 1.744s.391.154 1.059-1.162c.668-1.316 1.017-3.516-.206-4.947z"/><path fill="#77B255" d="M23.563 21.568c-.048.956.379 2.392-.173 2.198-2.174-.763-7.786-.837-7.786-.837-.482-2.173-.032-5.437.006-8.437.05-3.936 2.667-6.094 4.306-5.601 2.142.645 3.126 2.87 3.403 6.364.278 3.495.292 5.357.244 6.313z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#7C533E" d="M17.683 13.919c-.374 1.973-.192 5.151-.5 5.295-1.776.833-4.337 1.001-5.502 1.41-.844.296-.825.466-1.188.786-.581.513-1.273.95-1.333 1.47-.061.528.547.718 1.607.273.779-.326 1.389-.282 2.085-.786.991-.718 5.126.558 6.62-1.653.504-.746 1.04-2.491 1.757-6.143-.924-.378-3.546-.652-3.546-.652z"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#7C533E" d="M20.905 1.103c-2.182-.859-5.459.272-5.979 2.799-.726 3.526 1.288 6.513 3.513 6.273 2.332-.252 3.763-.769 4.708-3.17.943-2.4-.06-5.043-2.242-5.902z"/><path fill="#7C533E" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#0B0200" d="M23.65 1.859C22.573.402 18.961-.884 16.668.96c-1.588-.275-2.196 1.234-2.061 2.103.108.694 1.813.873 2.241 2.19.297-.33.376-1.007.312-1.369.543.523.306 1.896 2.442 2.793 2.064.867 1.7 2.69 1.7 2.69s1.087-.514 1.844-1.39c1.443-1.67 1.691-4.512.504-6.118z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#FA743E" d="M26.117 27.825c-2.565-.9-9.188-.988-9.188-.988.257-2.055.218-5.676-.002-9.362-.233-3.906 3.768-7.514 5.092-7.204 2.571.602 4.342 3.386 4.016 7.511-.469 5.926.733 10.271.082 10.043z"/><path fill="#7C533E" d="M19.799 16.252c-.442 2.329-.599 6.406-.962 6.577-2.095.984-3.927 2.864-5.303 3.346-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.092-.449-3.769-.724-3.769-.724z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#7C533E" d="M19.321 1.07c-1.81-.712-4.528.226-4.96 2.322-.602 2.925 1.069 5.402 2.914 5.203 1.934-.209 3.121-.638 3.905-2.629.783-1.992-.049-4.184-1.859-4.896z"/><path fill="#7C533E" d="M20.665 6.478c2.634-3.094-3.711-2.792-3.711-2.792-1.201.044-.374 2.044-.939 3.137-.388.756 1.244 1.157 1.244 1.157s.749-.011.789.897v.008c.009.231-.015.506-.123.873-.538 1.819 1.905 2.934 2.442 1.111.212-.721.13-1.355.022-1.941l-.01-.052c-.163-.87-.365-1.633.286-2.398z"/><path fill="#0B0200" d="M21.598 1.697c-.893-1.208-3.89-2.275-5.792-.746-1.317-.228-1.822 1.024-1.71 1.745.089.575 1.504.724 1.859 1.817.246-.274.312-.835.259-1.135.45.433.254 1.573 2.025 2.317 1.712.719 1.41 2.232 1.41 2.232s.902-.426 1.53-1.153c1.198-1.388 1.403-3.745.419-5.077z"/><path fill="#FA743E" d="M23.663 22.44c-.135.623-7.64 1.303-7.64 1.303.213-1.705.181-6.037-.002-9.094-.193-3.24 3.126-6.232 4.223-5.976 2.132.499 3.601 2.809 3.331 6.23-.388 4.917.151 7.245.088 7.537z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#7C533E" d="M18.404 13.635c-.366 1.931-.497 5.314-.798 5.455-1.738.816-3.258 1.323-4.399 1.723-.827.29-1.652.456-2.008.77-.569.502-1.246.93-1.305 1.439-.059.517.535.703 1.573.268.762-.32 1.36-.276 2.041-.77.97-.703 4.838-.108 6.3-2.272.494-.73 1.018-2.438 1.72-6.013-.904-.372-3.124-.6-3.124-.6z"/></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M20.591.985c-2.139-.842-5.474.244-5.861 2.743-.385 2.482.321 6.374 2.501 6.138 2.286-.247 4.63-.744 5.556-3.097.927-2.352-.056-4.942-2.196-5.784z"/><path fill="#FFDC5D" d="M22.18 7.376c3.112-3.657-4.386-3.3-4.386-3.3-1.419.052-.442 2.416-1.11 3.707-.458.894 1.47 1.367 1.47 1.367s.885-.013.932 1.06v.01c.011.273-.018.598-.145 1.032-.635 2.149 2.252 3.467 2.885 1.313.251-.852.153-1.602.026-2.294l-.012-.061c-.191-1.028-.429-1.93.34-2.834z"/><path fill="#FFAC33" d="M23.035 1.848C21.611.181 19.652-.511 16.296.786c-2.931 1.133-1.988 3.463-1.306 3.065 1.882-1.097 3.131-.16 4.089 1.371.279-.752 1.507-1.214 1.755-.114.279 1.236-.869 1.775-.716 2.113.051.113-.058-.102 0 0 .734 1.289 1.929 1.694 1.929 1.694s.453.177 1.226-1.345c.773-1.522 1.177-4.067-.238-5.722z"/><path fill="#FFAC33" d="M22.264 3.601c2.904.626 1.712 5.155 1.997 6.821.35 2.051 2.364 2.124 2.364 2.124s-.332-1.429-.155-2.923c.246-2.072 1.597-3.745.171-5.768-1.821-2.584-6.182-.643-4.377-.254z"/><path fill="#292F33" d="M20.252 32.238c-.937.204-1.397.837-1.522 1.423s.419 1.633.963 1.842 5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.51 31.844c-.521.24-.552 1.313.159 2.024.846.846 2.409 1.519 3.34 1.769s2.548-.27 2.539-.923c-.009-.701-1.545-1.829-2.238-1.859-.693-.031-1.505-.042-1.868-.464-.362-.421-1.391-.796-1.932-.547z"/><path fill="#4289C1" d="M25.336 26.113c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061-1.587-.041-2.272.113-3.998.076-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.873-.285 7.813-2.441 8.383-.57z"/><path fill="#2A6797" d="M11.014 32.461c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.925-.491 1.424-.447z"/><path fill="#9268CA" d="M25.28 24.097c0 1.946.508 2.792.592 3.638.047.47-1.553-.275-2.603-.41-2.727-.351-6.408-.309-6.408-.309-.557-2.685.576-4.818-.306-8.419-1.138-4.646 3.231-9.23 5.127-8.621 2.478.797 3.937 3.064 3.936 7.395 0 2.998-.338 4.78-.338 6.726z"/><path fill="#FFDC5D" d="M19.3 15.532c-.341 2.345-.225 6.209-.58 6.395-2.051 1.072-4.163 3.421-5.517 3.961-.981.392-1.967.635-2.378 1.031-.659.634-1.453 1.184-1.497 1.8-.045.625.681.819 1.908.241.901-.424 1.624-.403 2.419-1.032 1.132-.896 6.19-1.666 7.84-4.348.557-.905.927-3.403 1.588-7.744-1.11-.401-3.783-.304-3.783-.304z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M19.652 1.065c-1.764-.694-4.514.202-4.834 2.263-.317 2.047.265 5.257 2.063 5.063 1.885-.204 3.819-.613 4.582-2.554.764-1.942-.047-4.078-1.811-4.772z"/><path fill="#FFDC5D" d="M20.963 6.335c2.567-3.016-3.617-2.722-3.617-2.722-1.17.042-.365 1.993-.916 3.057-.378.737 1.212 1.128 1.212 1.128s.73-.011.769.875v.008c.009.225-.015.493-.12.851-.524 1.772 1.857 2.859 2.38 1.083.207-.703.127-1.321.022-1.892l-.009-.051c-.159-.847-.356-1.591.279-2.337z"/><path fill="#FFAC33" d="M21.668 1.776C20.493.401 18.877-.17 16.11.9c-2.417.934-1.64 2.856-1.077 2.528 1.552-.905 2.582-.132 3.372 1.131.23-.62 1.242-1.001 1.447-.094.23 1.02-.717 1.464-.59 1.742.042.093-.048-.084 0 0 .606 1.063 1.591 1.397 1.591 1.397s.373.147 1.01-1.109c.638-1.255.971-3.354-.195-4.719z"/><path fill="#FFAC33" d="M21.032 3.222c2.395.517 1.412 4.251 1.647 5.625.289 1.692 1.95 1.752 1.95 1.752s-.275-1.178-.129-2.41c.203-1.709 1.317-3.088.141-4.757-1.501-2.131-5.098-.531-3.609-.21z"/><path fill="#9268CA" d="M23.519 20.125c0 1.605.25 2.331.32 3.029.039.388-1.112-.255-1.978-.367-2.249-.289-5.165-1.089-5.165-1.089-.46-2.215.356-3.139-.372-6.109-.939-3.832 2.664-7.612 4.228-7.11 2.044.657 3.247 2.527 3.246 6.099-.001 2.473-.279 3.943-.279 5.547z"/><path fill="#292F33" d="M25.941 32.817l1.063-1.378c.354-.459 1.051-.443 1.383.032.363.518 1.508 1.7 3.206 2.314.264.096.725.291-.165 1.083 0 0-1.049.797-5.632-.453M8.486 36h5.01c.241 0 .437-.195.437-.437v-.413c0-.453-.138-.895-.396-1.267l-.384-.553h-1.935l-1.892.523c-.77.213-1.296.923-1.276 1.722.006.236.2.425.436.425z"/><path fill="#2A6797" d="M17.334 25.673l-.311 7.139s-.156 2.997 3.036 2.939l6.85-.837s.506-1.751-.35-2.51l-4.938-.592c-.137-.016-.228-.149-.194-.283l1.581-5.127c.201-.653.548-2.062.603-2.737.034-.415-.196-.091-.185-.51l-6.403 1.84.311.678z"/><path fill="#4289C1" d="M19.207 21.365c-1.873-.051-7.335.631-7.335.631-2.68.63-2.036 4.541-2.036 4.541l.525 6.917s1.67.954 3.053 0l.93-6.917 4.07.048s6.832 1.36 5.163-5.257c0 0-3.989.047-4.37.037z"/><path fill="#FFDC5D" d="M18.587 13.062c-.282 1.934-.185 5.121-.478 5.274-1.692.884-4.111 2.144-5.227 2.59-.809.323-1.622.524-1.961.85-.544.523-1.199.977-1.235 1.485-.037.516.562.675 1.574.199.743-.35 1.339-.332 1.995-.851.934-.739 5.782-.697 7.143-2.909.459-.747.764-2.806 1.31-6.387-.917-.331-3.121-.251-3.121-.251z"/></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M20.905 1.103c-2.182-.859-5.584.249-5.979 2.799-.393 2.532.328 6.502 2.552 6.262 2.332-.252 4.724-.759 5.668-3.16.944-2.399-.059-5.042-2.241-5.901z"/><path fill="#FFDC5D" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#FFAC33" d="M23.398 1.983C21.945.282 19.863-.621 16.523.9c-1.361.62-1.971.391-2.165.663-.93 1.306.337 2.753.833 2.464 1.572-.917 2.99-.644 3.352.019s.028 1.854.321 1.862c.792.021.664-.755.977-1.202.514-.731 1.296-.318 1.467.496.136.645 0 1.741-1.054 1.934.717 1.577 2.136 2.058 2.136 2.058s.461.181 1.25-1.371c.789-1.554 1.201-4.151-.242-5.84z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#77B255" d="M26.377 25.554c-.057 1.128.391 2.499-.26 2.27-2.565-.9-9.188-.988-9.188-.988-.568-2.564-.037-6.416.008-9.956.059-4.645 3.148-7.192 5.082-6.61 2.528.761 3.689 3.387 4.016 7.511s.398 6.646.342 7.773z"/><path fill="#FFDC5D" d="M19.382 16.204c-.442 2.329-.227 6.078-.59 6.249-2.095.984-3.883 3.239-5.259 3.722-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.091-.449-4.185-.772-4.185-.772z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M18.973 1.123c-1.849-.728-4.732.211-5.067 2.372-.333 2.145.278 5.51 2.162 5.306 1.976-.213 4.003-.643 4.803-2.677.802-2.034-.048-4.273-1.898-5.001z"/><path fill="#FFDC5D" d="M20.347 6.648c2.691-3.161-3.791-2.853-3.791-2.853-1.227.045-.383 2.089-.96 3.205-.396.772 1.271 1.182 1.271 1.182s.765-.011.806.917v.008c.009.236-.016.517-.126.892-.549 1.858 1.946 2.997 2.494 1.135.217-.737.133-1.385.023-1.983l-.01-.053c-.166-.889-.372-1.668.293-2.45z"/><path fill="#FFAC33" d="M21.086 1.869C19.855.428 18.091-.338 15.26.951c-1.153.525-1.67.331-1.834.561-.788 1.106.286 2.333.706 2.088 1.332-.777 2.534-.546 2.841.016.307.562.024 1.571.272 1.578.671.018.562-.64.828-1.019.435-.62 1.098-.269 1.243.42.115.546 0 1.475-.893 1.639.607 1.336 1.81 1.744 1.81 1.744s.391.154 1.059-1.162c.668-1.316 1.017-3.516-.206-4.947z"/><path fill="#77B255" d="M23.563 21.568c-.048.956.379 2.392-.173 2.198-2.174-.763-7.786-.837-7.786-.837-.482-2.173-.032-5.437.006-8.437.05-3.936 2.667-6.094 4.306-5.601 2.142.645 3.126 2.87 3.403 6.364.278 3.495.292 5.357.244 6.313z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#FFDC5D" d="M17.683 13.919c-.374 1.973-.192 5.151-.5 5.295-1.776.833-4.337 1.001-5.502 1.41-.844.296-.825.466-1.188.786-.581.513-1.273.95-1.333 1.47-.061.528.547.718 1.607.273.779-.326 1.389-.282 2.085-.786.991-.718 5.126.558 6.62-1.653.504-.746 1.04-2.491 1.757-6.143-.924-.378-3.546-.652-3.546-.652z"/></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M20.905 1.103c-2.182-.859-5.459.272-5.979 2.799-.726 3.526 1.288 6.513 3.513 6.273 2.332-.252 3.763-.769 4.708-3.17.943-2.4-.06-5.043-2.242-5.902z"/><path fill="#FFDC5D" d="M22.526 7.623c3.175-3.73-4.474-3.367-4.474-3.367-1.448.053-.451 2.465-1.133 3.782-.467.912 1.499 1.395 1.499 1.395s.903-.013.951 1.082v.01c.011.279-.018.61-.148 1.053-.648 2.192 2.297 3.537 2.944 1.34.256-.869.157-1.634.027-2.34l-.012-.063c-.196-1.049-.44-1.969.346-2.892z"/><path fill="#FFAC33" d="M23.65 1.859C22.573.402 18.961-.884 16.668.96c-1.588-.275-2.196 1.234-2.061 2.103.108.694 1.813.873 2.241 2.19.297-.33.376-1.007.312-1.369.543.523.306 1.896 2.442 2.793 2.064.867 1.7 2.69 1.7 2.69s1.087-.514 1.844-1.39c1.443-1.67 1.691-4.512.504-6.118z"/><path fill="#292F33" d="M20.666 32.225c-.937.204-1.397.837-1.522 1.423-.126.586.419 1.633.963 1.842s5.354.548 6.132-.078c1.162-.934-4.804-3.354-5.573-3.187z"/><path fill="#3A4449" d="M20.924 31.831c-.521.24-.593 1.505.045 2.283.721.879 2.524 1.26 3.455 1.51s2.442-.001 2.446-1.322c.004-1.115-1.452-1.429-2.145-1.46-.693-.031-1.505-.042-1.868-.464s-1.391-.796-1.933-.547z"/><path fill="#4289C1" d="M25.75 26.1c.655 2.154.529 4.598-1.058 5.452-1.52.818-4.71.946-4.71.946s-.905.89-.351 2.014c.315.639.649.921.58 1.007-.061.076-.748.153-1.053.214-.814.163-1.755.102-3.341.061s-2.272.113-3.998.076c-1.912-.041-3.344-.507-4.298-2.08-.814-1.343-.395-3.338 1.505-4.638 1.546-1.058 6.469-2.197 8.341-2.482 1.874-.285 7.814-2.441 8.383-.57z"/><path fill="#FA743E" d="M26.117 27.825c-2.565-.9-9.188-.988-9.188-.988.257-2.055.218-5.676-.002-9.362-.233-3.906 3.768-7.514 5.092-7.204 2.571.602 4.342 3.386 4.016 7.511-.469 5.926.733 10.271.082 10.043z"/><path fill="#FFDC5D" d="M19.799 16.252c-.442 2.329-.599 6.406-.962 6.577-2.095.984-3.927 2.864-5.303 3.346-.997.349-1.992.55-2.42.928-.686.605-1.503 1.121-1.573 1.735-.072.623.645.847 1.896.323.919-.385 1.64-.333 2.461-.928 1.17-.847 5.832-1.399 7.596-4.008.595-.881 1.227-2.94 2.074-7.249-1.092-.449-3.769-.724-3.769-.724z"/><path fill="#2A6797" d="M11.429 32.448c.718.062 6.591.163 8.137.081 0 0 0 .57-1.505.651-1.505.081-4.516-.407-6.469-.244-.538.045-1.485.121-1.587-.041-.117-.185.924-.491 1.424-.447z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M19.321 1.07c-1.81-.712-4.528.226-4.96 2.322-.602 2.925 1.069 5.402 2.914 5.203 1.934-.209 3.121-.638 3.905-2.629.783-1.992-.049-4.184-1.859-4.896z"/><path fill="#FFDC5D" d="M20.665 6.478c2.634-3.094-3.711-2.792-3.711-2.792-1.201.044-.374 2.044-.939 3.137-.388.756 1.244 1.157 1.244 1.157s.749-.011.789.897v.008c.009.231-.015.506-.123.873-.538 1.819 1.905 2.934 2.442 1.111.212-.721.13-1.355.022-1.941l-.01-.052c-.163-.87-.365-1.633.286-2.398z"/><path fill="#FFAC33" d="M21.598 1.697c-.893-1.208-3.89-2.275-5.792-.746-1.317-.228-1.822 1.024-1.71 1.745.089.575 1.504.724 1.859 1.817.246-.274.312-.835.259-1.135.45.433.254 1.573 2.025 2.317 1.712.719 1.41 2.232 1.41 2.232s.902-.426 1.53-1.153c1.198-1.388 1.403-3.745.419-5.077z"/><path fill="#FA743E" d="M23.663 22.44c-.135.623-7.64 1.303-7.64 1.303.213-1.705.181-6.037-.002-9.094-.193-3.24 3.126-6.232 4.223-5.976 2.132.499 3.601 2.809 3.331 6.23-.388 4.917.151 7.245.088 7.537z"/><path fill="#292F33" d="M25.935 32.82l1.062-1.377c.354-.458 1.05-.442 1.382.032.363.518 1.507 1.698 3.203 2.312.264.096.724.291-.165 1.082 0 0-1.048.797-5.627-.453M8.498 36h5.005c.241 0 .436-.195.436-.436v-.412c0-.452-.138-.894-.396-1.266l-.383-.553h-1.933l-1.89.522c-.769.213-1.295.922-1.275 1.72.006.236.199.425.436.425z"/><path fill="#2A6797" d="M17.337 25.683l-.311 7.133s-.156 2.994 3.033 2.936l6.844-.836s.505-1.75-.35-2.508l-4.933-.591c-.137-.016-.228-.149-.194-.282l1.579-5.122c.201-.652.548-2.06.603-2.735.034-.414-.195-.091-.185-.51l-6.397 1.838.311.677z"/><path fill="#4289C1" d="M19.208 21.379c-1.871-.051-7.328.63-7.328.63-2.677.629-2.034 4.537-2.034 4.537l.524 6.91s1.668.953 3.05 0l.929-6.91 4.066.048s6.825 1.359 5.158-5.252c0 .001-3.984.048-4.365.037z"/><path fill="#FFDC5D" d="M18.404 13.635c-.366 1.931-.497 5.314-.798 5.455-1.738.816-3.258 1.323-4.399 1.723-.827.29-1.652.456-2.008.77-.569.502-1.246.93-1.305 1.439-.059.517.535.703 1.573.268.762-.32 1.36-.276 2.041-.77.97-.703 4.838-.108 6.3-2.272.494-.73 1.018-2.438 1.72-6.013-.904-.372-3.124-.6-3.124-.6z"/></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M35.885 11.833c0-5.45-4.418-9.868-9.867-9.868-3.308 0-6.227 1.633-8.018 4.129-1.791-2.496-4.71-4.129-8.017-4.129-5.45 0-9.868 4.417-9.868 9.868 0 .772.098 1.52.266 2.241C1.751 22.587 11.216 31.568 18 34.034c6.783-2.466 16.249-11.447 17.617-19.959.17-.721.268-1.469.268-2.242z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M35.885 11.833c0-5.45-4.418-9.868-9.867-9.868-3.308 0-6.227 1.633-8.018 4.129-1.791-2.496-4.71-4.129-8.017-4.129-5.45 0-9.868 4.417-9.868 9.868 0 .772.098 1.52.266 2.241C1.751 22.587 11.216 31.568 18 34.034c6.783-2.466 16.249-11.447 17.617-19.959.17-.721.268-1.469.268-2.242z"/></svg>

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 368 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M28 36H8c-1.65 0-3-1.35-3-3V5c0-1.65 1.35-3 3-3h20c1.65 0 3 1.35 3 3v28c0 1.65-1.35 3-3 3z"/><path fill="#C1694F" d="M28 34H8c-1.65 0-3-1.35-3-3V5c0-1.65 1.35-3 3-3h20c1.65 0 3 1.35 3 3v26c0 1.65-1.35 3-3 3z"/><path fill="#CCD6DD" d="M26 17H10c-1.654 0-3-1.346-3-3v-4c0-1.654 1.346-3 3-3h16c1.654 0 3 1.346 3 3v4c0 1.654-1.346 3-3 3zM10 9c-.551 0-1 .449-1 1v4c0 .551.449 1 1 1h16c.552 0 1-.449 1-1v-4c0-.551-.448-1-1-1H10z"/><path fill="#99AAB5" d="M26 17H10c-.55 0-1-.45-1-1s.45-1 1-1h16c.55 0 1 .45 1 1s-.45 1-1 1z"/><path fill="#FFF" d="M11 18c-.55 0-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1zm4 0c-.55 0-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1zm6 0c-.55 0-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1zm4 0c-.55 0-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1z"/><path fill="#E1E8ED" d="M26 9H10c-.552 0-1-.448-1-1s.448-1 1-1h16c.553 0 1 .448 1 1s-.447 1-1 1z"/><path fill="#FFF" d="M24 9H12c-.552 0-1-.448-1-1s.448-1 1-1h12c.553 0 1 .448 1 1s-.447 1-1 1z"/><path fill="#CCD6DD" d="M18 31.153c-.552 0-1-.447-1-1V3c-.012-.45-.195-1-1-1s-.988.55-1 1.012V5c0 .552-.448 1-1 1s-1-.448-1-1V3c0-1.206.799-3 3-3s3 1.794 3 3v27.153c0 .553-.448 1-1 1z"/><path fill="#99AAB5" d="M16 7h1v2h-1zm3 0h1v2h-1z"/><path fill="#F4900C" d="M18 35.651l-6-10.5v-3h12v3z"/><path fill="#FFCC4D" d="M18 32.651l-6-10.5s3-.886 6-.886 6 .886 6 .886l-6 10.5z"/><circle fill="#C1694F" cx="12.902" cy="27.098" r=".902"/><circle fill="#C1694F" cx="20.684" cy="30.684" r=".684"/><ellipse fill="#F4900C" cx="19.579" cy="25.211" rx="1.579" ry=".789"/><ellipse fill="#F4900C" cx="15.579" cy="28.211" rx="1.579" ry=".789"/><ellipse fill="#F4900C" cx="14.927" cy="23.487" rx=".927" ry=".513"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M24.833.089L0 11.655l12 17.431v.003h18.212L36 16.828z"/><path fill="#3D130C" d="M29.249 28.073H12.457l2.431-15.561h3.291z"/><path fill="#511212" d="M12.457 28.073L1.758 12.512h13.13l2.666 4.149z"/><path fill="#FFCC4D" d="M25.608 24.422l-12.364 5.522.78-1.581c.141.025.269.038.422.038.69 0 1.266-.301 1.266-.69 0-.339-.46-.615-1.048-.678l1.805-3.665c.602-.19 2.872-.405 5.918.163-.013.364.192.703.55.841.435.176.933-.025 1.125-.452.243.05.473.125.703.213l.843.289z"/><ellipse fill="#F4900C" cx="18.604" cy="24.424" rx="1.053" ry=".517"/><path fill="#F4900C" d="M15.716 27.706c0 .389-.574.697-1.27.697-.15 0-.287-.013-.423-.04l.642-1.327c.586.054 1.051.335 1.051.67zm10.097 2.238L13.244 35.09v-1.092c.627 0 1.138-.515 1.138-1.142 0-.615-.511-1.13-1.138-1.13v-1.782l12.364-5.522.077 2.033c-.153-.088-.32-.125-.511-.125-.639 0-1.151.502-1.151 1.13s.511 1.129 1.151 1.129c.217 0 .422-.063.588-.163l.051 1.518z"/><ellipse fill="#F4900C" cx="20.039" cy="27.023" rx="2.156" ry="1.058"/><path fill="#C1694F" d="M18.293 11.655H0L7.562.089h17.271z"/><g fill="#F98E00"><path d="M6.69 13.401h1.583V36H6.69z"/><path d="M7.485 12.842c-.874 0-1.582-.708-1.582-1.582V8.892c0-.409-.321-.73-.73-.73-.398 0-.73.321-.73.73v2.235c0 .83.343 1.593.885 2.147.553.542 1.317.885 2.158.885 1.093 0 2.045-.588 2.579-1.459H8.132c-.197.089-.415.142-.647.142z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -17,6 +17,10 @@
along with Fernschreiber. If not, see <http://www.gnu.org/licenses/>. along with Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
*/ */
.pragma library
.import "debug.js" as Debug
.import Sailfish.Silica 1.0 as Silica
function getUserName(userInformation) { function getUserName(userInformation) {
var firstName = typeof userInformation.first_name !== "undefined" ? userInformation.first_name : ""; var firstName = typeof userInformation.first_name !== "undefined" ? userInformation.first_name : "";
var lastName = typeof userInformation.last_name !== "undefined" ? userInformation.last_name : ""; var lastName = typeof userInformation.last_name !== "undefined" ? userInformation.last_name : "";
@ -194,7 +198,7 @@ function getShortenedCount(count) {
} }
function getDateTimeElapsed(timestamp) { function getDateTimeElapsed(timestamp) {
return Format.formatDate(new Date(timestamp * 1000), Formatter.DurationElapsed); return Silica.Format.formatDate(new Date(timestamp * 1000), Silica.Formatter.DurationElapsed);
} }
function getDateTimeTranslated(timestamp) { function getDateTimeTranslated(timestamp) {
@ -344,7 +348,7 @@ function handleLink(link) {
} else if (link.indexOf("userId://") === 0) { } else if (link.indexOf("userId://") === 0) {
tdLibWrapper.createPrivateChat(link.substring(9)); tdLibWrapper.createPrivateChat(link.substring(9));
} else if (link.indexOf("tg://") === 0) { } else if (link.indexOf("tg://") === 0) {
console.log("Special TG link: " + link); Debug.log("Special TG link: ", link);
if (link.indexOf("tg://join?invite=") === 0) { if (link.indexOf("tg://join?invite=") === 0) {
tdLibWrapper.joinChatByInviteLink(tMePrefix + "joinchat/" + link.substring(17)); tdLibWrapper.joinChatByInviteLink(tMePrefix + "joinchat/" + link.substring(17));
} else if (link.indexOf("tg://resolve?domain=") === 0) { } else if (link.indexOf("tg://resolve?domain=") === 0) {
@ -353,12 +357,12 @@ function handleLink(link) {
} else { } else {
if (link.indexOf(tMePrefix) === 0) { if (link.indexOf(tMePrefix) === 0) {
if (link.indexOf("joinchat") !== -1) { if (link.indexOf("joinchat") !== -1) {
console.log("Joining Chat: " + link); Debug.log("Joining Chat: ", link);
tdLibWrapper.joinChatByInviteLink(link); tdLibWrapper.joinChatByInviteLink(link);
// Do the necessary stuff to open the chat if successful // Do the necessary stuff to open the chat if successful
// Fail with nice error message if it doesn't work // Fail with nice error message if it doesn't work
} else { } else {
console.log("Search public chat: " + link.substring(tMePrefix.length)); Debug.log("Search public chat: ", link.substring(tMePrefix.length));
tdLibWrapper.searchPublicChat(link.substring(tMePrefix.length)); tdLibWrapper.searchPublicChat(link.substring(tMePrefix.length));
// Check responses for updateBasicGroup or updateSupergroup // Check responses for updateBasicGroup or updateSupergroup
// Fire createBasicGroupChat or createSupergroupChat // Fire createBasicGroupChat or createSupergroupChat

File diff suppressed because one or more lines are too long

View file

@ -22,6 +22,7 @@ import "../components"
import "../components/chatInformationPage" import "../components/chatInformationPage"
import "../js/twemoji.js" as Emoji import "../js/twemoji.js" as Emoji
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import "../js/debug.js" as Debug
Page { Page {
id: chatInformationPage id: chatInformationPage
@ -59,7 +60,7 @@ Page {
onStatusChanged: { onStatusChanged: {
switch(status) { switch(status) {
case PageStatus.Activating: case PageStatus.Activating:
console.log("activating Loader") Debug.log("activating Loader")
mainContentLoader.active = true mainContentLoader.active = true
break; break;
case PageStatus.Active: case PageStatus.Active:

View file

@ -23,6 +23,7 @@ import Sailfish.Pickers 1.0
import Nemo.Thumbnailer 1.0 import Nemo.Thumbnailer 1.0
import WerkWolf.Fernschreiber 1.0 import WerkWolf.Fernschreiber 1.0
import "../components" import "../components"
import "../js/debug.js" as Debug
import "../js/twemoji.js" as Emoji import "../js/twemoji.js" as Emoji
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
@ -133,7 +134,7 @@ Page {
} }
function initializePage() { function initializePage() {
console.log("[ChatPage] Initializing chat page..."); Debug.log("[ChatPage] Initializing chat page...");
chatView.currentIndex = -1; chatView.currentIndex = -1;
chatView.lastReadSentIndex = 0; chatView.lastReadSentIndex = 0;
var chatType = chatInformation.type['@type']; var chatType = chatInformation.type['@type'];
@ -154,13 +155,13 @@ Page {
updateGroupStatusText(); updateGroupStatusText();
} }
if (stickerManager.needsReload()) { if (stickerManager.needsReload()) {
console.log("[ChatPage] Stickers will be reloaded!"); Debug.log("[ChatPage] Stickers will be reloaded!");
tdLibWrapper.getRecentStickers(); tdLibWrapper.getRecentStickers();
tdLibWrapper.getInstalledStickerSets(); tdLibWrapper.getInstalledStickerSets();
stickerManager.setNeedsReload(false); stickerManager.setNeedsReload(false);
} }
if (chatInformation.pinned_message_id.toString() !== "0") { if (chatInformation.pinned_message_id.toString() !== "0") {
console.log("[ChatPage] Loading pinned message " + chatInformation.pinned_message_id); Debug.log("[ChatPage] Loading pinned message ", chatInformation.pinned_message_id);
tdLibWrapper.getMessage(chatInformation.id, chatInformation.pinned_message_id); tdLibWrapper.getMessage(chatInformation.id, chatInformation.pinned_message_id);
} }
} }
@ -292,28 +293,28 @@ Page {
|| (groupStatusType === "chatMemberStatusRestricted" && groupStatus.permissions[privilege]) || (groupStatusType === "chatMemberStatusRestricted" && groupStatus.permissions[privilege])
} }
function canPinMessages() { function canPinMessages() {
console.log("Can we pin messages?"); Debug.log("Can we pin messages?");
if (chatPage.isPrivateChat) { if (chatPage.isPrivateChat) {
console.log("Private Chat: No!"); Debug.log("Private Chat: No!");
return false; return false;
} }
if (chatPage.chatGroupInformation.status["@type"] === "chatMemberStatusCreator") { if (chatPage.chatGroupInformation.status["@type"] === "chatMemberStatusCreator") {
console.log("Creator of this chat: Yes!"); Debug.log("Creator of this chat: Yes!");
return true; return true;
} }
if (chatPage.chatInformation.permissions.can_pin_messages) { if (chatPage.chatInformation.permissions.can_pin_messages) {
console.log("All people can pin: Yes!"); Debug.log("All people can pin: Yes!");
return true; return true;
} }
if (chatPage.chatGroupInformation.status["@type"] === "chatMemberStatusAdministrator") { if (chatPage.chatGroupInformation.status["@type"] === "chatMemberStatusAdministrator") {
console.log("Admin with privileges? " + chatPage.chatGroupInformation.status.can_pin_messages); Debug.log("Admin with privileges? ", chatPage.chatGroupInformation.status.can_pin_messages);
return chatPage.chatGroupInformation.status.can_pin_messages; return chatPage.chatGroupInformation.status.can_pin_messages;
} }
if (chatPage.chatGroupInformation.status["@type"] === "chatMemberStatusRestricted") { if (chatPage.chatGroupInformation.status["@type"] === "chatMemberStatusRestricted") {
console.log("Restricted, but can pin messages? " + chatPage.chatGroupInformation.status.permissions.can_pin_messages); Debug.log("Restricted, but can pin messages? ", chatPage.chatGroupInformation.status.permissions.can_pin_messages);
return chatPage.chatGroupInformation.status.permissions.can_pin_messages; return chatPage.chatGroupInformation.status.permissions.can_pin_messages;
} }
console.log("Something else: No!"); Debug.log("Something else: No!");
return false; return false;
} }
@ -384,7 +385,7 @@ Page {
} }
} }
onChatOnlineMemberCountUpdated: { onChatOnlineMemberCountUpdated: {
console.log(isSuperGroup + "/" + isBasicGroup + "/" + chatInformation.id.toString() + "/" + chatId); Debug.log(isSuperGroup, "/", isBasicGroup, "/", chatInformation.id.toString(), "/", chatId);
if ((isSuperGroup || isBasicGroup) && chatInformation.id.toString() === chatId) { if ((isSuperGroup || isBasicGroup) && chatInformation.id.toString() === chatId) {
chatOnlineMemberCount = onlineMemberCount; chatOnlineMemberCount = onlineMemberCount;
updateGroupStatusText(); updateGroupStatusText();
@ -405,7 +406,7 @@ Page {
} }
onReceivedMessage: { onReceivedMessage: {
if (messageId === chatInformation.pinned_message_id.toString()) { if (messageId === chatInformation.pinned_message_id.toString()) {
console.log("[ChatPage] Received pinned message"); Debug.log("[ChatPage] Received pinned message");
pinnedMessageItem.pinnedMessage = message; pinnedMessageItem.pinnedMessage = message;
} }
} }
@ -414,11 +415,11 @@ Page {
Connections { Connections {
target: chatModel target: chatModel
onMessagesReceived: { onMessagesReceived: {
console.log("[ChatPage] Messages received, view has " + chatView.count + " messages, setting view to index " + modelIndex + ", own messages were read before index " + lastReadSentIndex); Debug.log("[ChatPage] Messages received, view has ", chatView.count, " messages, setting view to index ", modelIndex, ", own messages were read before index ", lastReadSentIndex);
if (totalCount === 0) { if (totalCount === 0) {
if (chatPage.iterativeInitialization) { if (chatPage.iterativeInitialization) {
chatPage.iterativeInitialization = false; chatPage.iterativeInitialization = false;
console.log("[ChatPage] actually, skipping that: No Messages in Chat."); Debug.log("[ChatPage] actually, skipping that: No Messages in Chat.");
chatView.positionViewAtEnd(); chatView.positionViewAtEnd();
chatPage.loading = false; chatPage.loading = false;
return; return;
@ -436,28 +437,28 @@ Page {
} }
if (chatView.height > chatView.contentHeight) { if (chatView.height > chatView.contentHeight) {
console.log("[ChatPage] Chat content quite small..."); Debug.log("[ChatPage] Chat content quite small...");
viewMessageTimer.queueViewMessage(chatView.count - 1); viewMessageTimer.queueViewMessage(chatView.count - 1);
} }
} }
onNewMessageReceived: { onNewMessageReceived: {
if (chatView.manuallyScrolledToBottom || message.sender_user_id === chatPage.myUserId) { if (chatView.manuallyScrolledToBottom || message.sender_user_id === chatPage.myUserId) {
console.log("[ChatPage] Own message received or was scrolled to bottom, scrolling down to see it..."); Debug.log("[ChatPage] Own message received or was scrolled to bottom, scrolling down to see it...");
chatView.scrollToIndex(chatView.count - 1); chatView.scrollToIndex(chatView.count - 1);
} }
} }
onUnreadCountUpdated: { onUnreadCountUpdated: {
console.log("[ChatPage] Unread count updated, new count: " + unreadCount); Debug.log("[ChatPage] Unread count updated, new count: ", unreadCount);
chatInformation.unread_count = unreadCount; chatInformation.unread_count = unreadCount;
chatUnreadMessagesCountBackground.visible = ( !chatPage.loading && unreadCount > 0 ); chatUnreadMessagesCountBackground.visible = ( !chatPage.loading && unreadCount > 0 );
chatUnreadMessagesCount.text = unreadCount > 99 ? "99+" : unreadCount; chatUnreadMessagesCount.text = unreadCount > 99 ? "99+" : unreadCount;
} }
onLastReadSentMessageUpdated: { onLastReadSentMessageUpdated: {
console.log("[ChatPage] Updating last read sent index, new index: " + lastReadSentIndex); Debug.log("[ChatPage] Updating last read sent index, new index: ", lastReadSentIndex);
chatView.lastReadSentIndex = lastReadSentIndex; chatView.lastReadSentIndex = lastReadSentIndex;
} }
onMessagesIncrementalUpdate: { onMessagesIncrementalUpdate: {
console.log("Incremental update received. View now has " + chatView.count + " messages, view is on index " + modelIndex + ", own messages were read before index " + lastReadSentIndex); Debug.log("Incremental update received. View now has ", chatView.count, " messages, view is on index ", modelIndex, ", own messages were read before index ", lastReadSentIndex);
chatView.lastReadSentIndex = lastReadSentIndex; chatView.lastReadSentIndex = lastReadSentIndex;
chatViewCooldownTimer.start(); chatViewCooldownTimer.start();
} }
@ -468,7 +469,7 @@ Page {
onPinnedMessageChanged: { onPinnedMessageChanged: {
chatInformation = chatModel.getChatInformation(); chatInformation = chatModel.getChatInformation();
if (chatInformation.pinned_message_id.toString() !== "0") { if (chatInformation.pinned_message_id.toString() !== "0") {
console.log("[ChatPage] Loading pinned message " + chatInformation.pinned_message_id); Debug.log("[ChatPage] Loading pinned message ", chatInformation.pinned_message_id);
tdLibWrapper.getMessage(chatInformation.id, chatInformation.pinned_message_id); tdLibWrapper.getMessage(chatInformation.id, chatInformation.pinned_message_id);
} else { } else {
pinnedMessageItem.pinnedMessage = undefined; pinnedMessageItem.pinnedMessage = undefined;
@ -603,15 +604,15 @@ Page {
Row { Row {
id: headerRow id: headerRow
width: parent.width - (3 * Theme.horizontalPageMargin) width: parent.width - (3 * Theme.horizontalPageMargin)
height: chatOverviewColumn.height + ( chatPage.isPortrait ? (2 * Theme.paddingMedium) : (2 * Theme.paddingSmall) ) height: chatOverviewItem.height + ( chatPage.isPortrait ? (2 * Theme.paddingMedium) : (2 * Theme.paddingSmall) )
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
spacing: Theme.paddingMedium spacing: Theme.paddingMedium
ProfileThumbnail { ProfileThumbnail {
id: chatPictureThumbnail id: chatPictureThumbnail
replacementStringHint: chatNameText.text replacementStringHint: chatNameText.text
width: chatOverviewColumn.height width: chatOverviewItem.height
height: chatOverviewColumn.height height: chatOverviewItem.height
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.bottomMargin: chatPage.isPortrait ? Theme.paddingMedium : Theme.paddingSmall anchors.bottomMargin: chatPage.isPortrait ? Theme.paddingMedium : Theme.paddingSmall
@ -626,34 +627,38 @@ Page {
} }
} }
Column { Item {
id: chatOverviewColumn id: chatOverviewItem
width: parent.width - chatPictureThumbnail.width - Theme.paddingMedium width: parent.width - chatPictureThumbnail.width - Theme.paddingMedium
height: chatNameText.height + chatStatusText.height
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.bottomMargin: chatPage.isPortrait ? Theme.paddingMedium : Theme.paddingSmall anchors.bottomMargin: chatPage.isPortrait ? Theme.paddingMedium : Theme.paddingSmall
Text { Label {
id: chatNameText id: chatNameText
width: Math.min(implicitWidth, parent.width)
anchors.right: parent.right
text: chatInformation.title !== "" ? Emoji.emojify(chatInformation.title, font.pixelSize) : qsTr("Unknown") text: chatInformation.title !== "" ? Emoji.emojify(chatInformation.title, font.pixelSize) : qsTr("Unknown")
textFormat: Text.StyledText textFormat: Text.StyledText
font.pixelSize: chatPage.isPortrait ? Theme.fontSizeLarge : Theme.fontSizeMedium font.pixelSize: chatPage.isPortrait ? Theme.fontSizeLarge : Theme.fontSizeMedium
font.family: Theme.fontFamilyHeading font.family: Theme.fontFamilyHeading
color: Theme.highlightColor color: Theme.highlightColor
elide: Text.ElideRight truncationMode: TruncationMode.Fade
width: parent.width
maximumLineCount: 1 maximumLineCount: 1
horizontalAlignment: Text.AlignRight
} }
Text { Label {
id: chatStatusText id: chatStatusText
width: Math.min(implicitWidth, parent.width)
anchors {
right: parent.right
bottom: parent.bottom
}
text: "" text: ""
textFormat: Text.StyledText textFormat: Text.StyledText
font.pixelSize: chatPage.isPortrait ? Theme.fontSizeExtraSmall : Theme.fontSizeTiny font.pixelSize: chatPage.isPortrait ? Theme.fontSizeExtraSmall : Theme.fontSizeTiny
font.family: Theme.fontFamilyHeading font.family: Theme.fontFamilyHeading
color: headerMouseArea.pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor color: headerMouseArea.pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor
elide: Text.ElideRight truncationMode: TruncationMode.Fade
width: parent.width
maximumLineCount: 1 maximumLineCount: 1
horizontalAlignment: Text.AlignRight
} }
} }
} }
@ -693,7 +698,7 @@ Page {
repeat: false repeat: false
running: false running: false
onTriggered: { onTriggered: {
console.log("[ChatPage] Cooldown completed..."); Debug.log("[ChatPage] Cooldown completed...");
chatView.inCooldown = false; chatView.inCooldown = false;
} }
} }
@ -743,7 +748,7 @@ Page {
} }
function handleScrollPositionChanged() { function handleScrollPositionChanged() {
console.log("Current position: " + chatView.contentY); Debug.log("Current position: ", chatView.contentY);
if (chatInformation.unread_count > 0) { if (chatInformation.unread_count > 0) {
var bottomIndex = chatView.indexAt(chatView.contentX, ( chatView.contentY + chatView.height - Theme.horizontalPageMargin )); var bottomIndex = chatView.indexAt(chatView.contentX, ( chatView.contentY + chatView.height - Theme.horizontalPageMargin ));
if (bottomIndex > -1) { if (bottomIndex > -1) {
@ -766,11 +771,11 @@ Page {
onContentYChanged: { onContentYChanged: {
if (!chatPage.loading && !chatView.inCooldown) { if (!chatPage.loading && !chatView.inCooldown) {
if (chatView.indexAt(chatView.contentX, chatView.contentY) < 10) { if (chatView.indexAt(chatView.contentX, chatView.contentY) < 10) {
console.log("[ChatPage] Trying to get older history items..."); Debug.log("[ChatPage] Trying to get older history items...");
chatView.inCooldown = true; chatView.inCooldown = true;
chatModel.triggerLoadMoreHistory(); chatModel.triggerLoadMoreHistory();
} else if (chatView.indexAt(chatView.contentX, chatView.contentY) > ( count - 10)) { } else if (chatView.indexAt(chatView.contentX, chatView.contentY) > ( count - 10)) {
console.log("[ChatPage] Trying to get newer history items..."); Debug.log("[ChatPage] Trying to get newer history items...");
chatView.inCooldown = true; chatView.inCooldown = true;
chatModel.triggerLoadMoreFuture(); chatModel.triggerLoadMoreFuture();
} }
@ -995,7 +1000,7 @@ Page {
var picker = pageStack.push("Sailfish.Pickers.ImagePickerPage"); var picker = pageStack.push("Sailfish.Pickers.ImagePickerPage");
picker.selectedContentPropertiesChanged.connect(function(){ picker.selectedContentPropertiesChanged.connect(function(){
attachmentOptionsRow.visible = false; attachmentOptionsRow.visible = false;
console.log("Selected document: " + picker.selectedContentProperties.filePath ); Debug.log("Selected document: ", picker.selectedContentProperties.filePath );
attachmentPreviewRow.fileProperties = picker.selectedContentProperties; attachmentPreviewRow.fileProperties = picker.selectedContentProperties;
attachmentPreviewRow.isPicture = true; attachmentPreviewRow.isPicture = true;
attachmentPreviewRow.visible = true; attachmentPreviewRow.visible = true;
@ -1010,7 +1015,7 @@ Page {
var picker = pageStack.push("Sailfish.Pickers.VideoPickerPage"); var picker = pageStack.push("Sailfish.Pickers.VideoPickerPage");
picker.selectedContentPropertiesChanged.connect(function(){ picker.selectedContentPropertiesChanged.connect(function(){
attachmentOptionsRow.visible = false; attachmentOptionsRow.visible = false;
console.log("Selected video: " + picker.selectedContentProperties.filePath ); Debug.log("Selected video: ", picker.selectedContentProperties.filePath );
attachmentPreviewRow.fileProperties = picker.selectedContentProperties; attachmentPreviewRow.fileProperties = picker.selectedContentProperties;
attachmentPreviewRow.isVideo = true; attachmentPreviewRow.isVideo = true;
attachmentPreviewRow.visible = true; attachmentPreviewRow.visible = true;
@ -1025,7 +1030,7 @@ Page {
var picker = pageStack.push("Sailfish.Pickers.DocumentPickerPage"); var picker = pageStack.push("Sailfish.Pickers.DocumentPickerPage");
picker.selectedContentPropertiesChanged.connect(function(){ picker.selectedContentPropertiesChanged.connect(function(){
attachmentOptionsRow.visible = false; attachmentOptionsRow.visible = false;
console.log("Selected document: " + picker.selectedContentProperties.filePath ); Debug.log("Selected document: ", picker.selectedContentProperties.filePath );
attachmentPreviewRow.fileProperties = picker.selectedContentProperties; attachmentPreviewRow.fileProperties = picker.selectedContentProperties;
attachmentPreviewRow.isDocument = true; attachmentPreviewRow.isDocument = true;
attachmentPreviewRow.visible = true; attachmentPreviewRow.visible = true;
@ -1093,14 +1098,14 @@ Page {
visible: attachmentPreviewRow.isPicture || attachmentPreviewRow.isVideo visible: attachmentPreviewRow.isPicture || attachmentPreviewRow.isVideo
} }
Text { Label {
id: attachmentPreviewText id: attachmentPreviewText
font.pixelSize: Theme.fontSizeSmall font.pixelSize: Theme.fontSizeSmall
text: typeof attachmentPreviewRow.fileProperties !== "undefined" ? attachmentPreviewRow.fileProperties.fileName || "" : ""; text: typeof attachmentPreviewRow.fileProperties !== "undefined" ? attachmentPreviewRow.fileProperties.fileName || "" : "";
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
maximumLineCount: 1 maximumLineCount: 1
elide: Text.ElideRight truncationMode: TruncationMode.Fade
color: Theme.secondaryColor color: Theme.secondaryColor
visible: attachmentPreviewRow.isDocument visible: attachmentPreviewRow.isDocument
} }

View file

@ -120,15 +120,14 @@ CoverBackground {
color: Theme.primaryColor color: Theme.primaryColor
text: Functions.getShortenedCount(coverPage.unreadMessages) text: Functions.getShortenedCount(coverPage.unreadMessages)
} }
Text { Label {
id: unreadMessagesText id: unreadMessagesText
font.pixelSize: Theme.fontSizeSmall font.pixelSize: Theme.fontSizeSmall
color: Theme.primaryColor
width: parent.width - unreadMessagesCountText.width - Theme.paddingMedium width: parent.width - unreadMessagesCountText.width - Theme.paddingMedium
wrapMode: Text.Wrap wrapMode: Text.Wrap
anchors.verticalCenter: unreadMessagesCountText.verticalCenter anchors.verticalCenter: unreadMessagesCountText.verticalCenter
maximumLineCount: 2 maximumLineCount: 2
elide: Text.ElideRight truncationMode: TruncationMode.Fade
} }
} }

View file

@ -20,6 +20,7 @@ import QtQuick 2.6
import Sailfish.Silica 1.0 import Sailfish.Silica 1.0
import "../components" import "../components"
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import "../js/debug.js" as Debug
Page { Page {
id: imagePage id: imagePage
@ -73,7 +74,7 @@ Page {
target: tdLibWrapper target: tdLibWrapper
onFileUpdated: { onFileUpdated: {
if (fileId === imagePage.pictureFileInformation.id) { if (fileId === imagePage.pictureFileInformation.id) {
console.log("File updated, completed? " + fileInformation.local.is_downloading_completed); Debug.log("File updated, completed? ", fileInformation.local.is_downloading_completed);
if (fileInformation.local.is_downloading_completed) { if (fileInformation.local.is_downloading_completed) {
imagePage.pictureFileInformation = fileInformation; imagePage.pictureFileInformation = fileInformation;
imagePage.imageUrl = fileInformation.local.path; imagePage.imageUrl = fileInformation.local.path;

View file

@ -23,6 +23,7 @@ import WerkWolf.Fernschreiber 1.0
import "../components" import "../components"
import "../js/twemoji.js" as Emoji import "../js/twemoji.js" as Emoji
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import "../js/debug.js" as Debug
Page { Page {
id: overviewPage id: overviewPage
@ -44,14 +45,14 @@ Page {
Connections { Connections {
target: dBusAdaptor target: dBusAdaptor
onPleaseOpenMessage: { onPleaseOpenMessage: {
console.log("[OverviewPage] Opening chat from external call...") Debug.log("[OverviewPage] Opening chat from external call...")
if (chatListCreated) { if (chatListCreated) {
pageStack.pop(overviewPage, PageStackAction.Immediate) pageStack.pop(overviewPage, PageStackAction.Immediate)
pageStack.push(Qt.resolvedUrl("../pages/ChatPage.qml"), { "chatInformation" : chatListModel.getById(chatId) }, PageStackAction.Immediate) pageStack.push(Qt.resolvedUrl("../pages/ChatPage.qml"), { "chatInformation" : chatListModel.getById(chatId) }, PageStackAction.Immediate)
} }
} }
onPleaseOpenUrl: { onPleaseOpenUrl: {
console.log("[OverviewPage] Opening URL requested: " + url); Debug.log("[OverviewPage] Opening URL requested: ", url);
Functions.handleLink(url); Functions.handleLink(url);
} }
} }

View file

@ -21,6 +21,7 @@ import Sailfish.Silica 1.0
import "../components" import "../components"
import "../js/functions.js" as Functions import "../js/functions.js" as Functions
import "../js/twemoji.js" as Emoji import "../js/twemoji.js" as Emoji
import "../js/debug.js" as Debug
Page { Page {
id: pollResultsPage id: pollResultsPage
@ -146,7 +147,6 @@ Page {
if(extra === optionDelegate.usersResponseIdentifierString) { if(extra === optionDelegate.usersResponseIdentifierString) {
for(var i = 0; i < userIds.length; i += 1) { for(var i = 0; i < userIds.length; i += 1) {
optionDelegate.users.append({id: userIds[i], user:tdLibWrapper.getUserInformation(userIds[i])}); optionDelegate.users.append({id: userIds[i], user:tdLibWrapper.getUserInformation(userIds[i])});
console.log("APPEND USER", JSON.stringify({id: userIds[i], user:tdLibWrapper.getUserInformation(userIds[i])}));
} }
loadUsersTimer.start(); loadUsersTimer.start();
} }

View file

@ -16,9 +16,9 @@
*/ */
#include "appsettings.h" #include "appsettings.h"
#include <QDebug>
#define LOG(x) qDebug() << "[AppSettings]" << x #define DEBUG_MODULE AppSettings
#include "debuglog.h"
namespace { namespace {
const QString KEY_SEND_BY_ENTER("sendByEnter"); const QString KEY_SEND_BY_ENTER("sendByEnter");

View file

@ -19,9 +19,9 @@
#include "chatlistmodel.h" #include "chatlistmodel.h"
#include "fernschreiberutils.h" #include "fernschreiberutils.h"
#include <QDebug>
#define LOG(x) qDebug() << "[ChatListModel]" << x #define DEBUG_MODULE ChatListModel
#include "debuglog.h"
namespace { namespace {
const QString ID("id"); const QString ID("id");

View file

@ -22,9 +22,9 @@
#include <QListIterator> #include <QListIterator>
#include <QByteArray> #include <QByteArray>
#include <QBitArray> #include <QBitArray>
#include <QDebug>
#define LOG(x) qDebug() << "[ChatModel]" << x #define DEBUG_MODULE ChatModel
#include "debuglog.h"
namespace { namespace {
const QString ID("id"); const QString ID("id");

View file

@ -19,22 +19,22 @@
#include "dbusadaptor.h" #include "dbusadaptor.h"
#include <QDebug> #define DEBUG_MODULE DBusAdaptor
#include "debuglog.h"
DBusAdaptor::DBusAdaptor(QObject *parent): QDBusAbstractAdaptor(parent) DBusAdaptor::DBusAdaptor(QObject *parent): QDBusAbstractAdaptor(parent)
{ {
} }
void DBusAdaptor::openMessage(const QString &chatId, const QString &messageId) void DBusAdaptor::openMessage(const QString &chatId, const QString &messageId)
{ {
qDebug() << "[DBusAdaptor] Open Message " << chatId << messageId; LOG("Open Message" << chatId << messageId);
emit pleaseOpenMessage(chatId, messageId); emit pleaseOpenMessage(chatId, messageId);
} }
void DBusAdaptor::openUrl(const QStringList &arguments) void DBusAdaptor::openUrl(const QStringList &arguments)
{ {
qDebug() << "[DBusAdaptor] Open Url" << arguments; LOG("Open Url" << arguments);
if (arguments.length() >= 1) { if (arguments.length() >= 1) {
emit pleaseOpenUrl(arguments.first()); emit pleaseOpenUrl(arguments.first());
} }

View file

@ -19,27 +19,29 @@
#include "dbusinterface.h" #include "dbusinterface.h"
#define DEBUG_MODULE DBusInterface
#include "debuglog.h"
DBusInterface::DBusInterface(QObject *parent) : QObject(parent) DBusInterface::DBusInterface(QObject *parent) : QObject(parent)
{ {
qDebug() << "[DBusInterface] Initializing D-BUS connectivity"; LOG("Initializing D-BUS connectivity");
this->dbusAdaptor = new DBusAdaptor(this); this->dbusAdaptor = new DBusAdaptor(this);
QDBusConnection sessionBusConnection = QDBusConnection::sessionBus(); QDBusConnection sessionBusConnection = QDBusConnection::sessionBus();
if (!sessionBusConnection.isConnected()) { if (!sessionBusConnection.isConnected()) {
qDebug() << "[DBusInterface] Error connecting to D-BUS"; WARN("Error connecting to D-BUS");
return; return;
} }
if (!sessionBusConnection.registerObject(PATH_NAME, this)) { if (!sessionBusConnection.registerObject(PATH_NAME, this)) {
qDebug() << "[DBusInterface] Error registering root object to D-BUS" << sessionBusConnection.lastError().message(); WARN("Error registering root object to D-BUS" << sessionBusConnection.lastError().message());
return; return;
} }
if (!sessionBusConnection.registerService(INTERFACE_NAME)) { if (!sessionBusConnection.registerService(INTERFACE_NAME)) {
qDebug() << "[DBusInterface] Error registering interface to D-BUS" << sessionBusConnection.lastError().message(); WARN("Error registering interface to D-BUS" << sessionBusConnection.lastError().message());
return; return;
} }
} }
DBusAdaptor *DBusInterface::getDBusAdaptor() DBusAdaptor *DBusInterface::getDBusAdaptor()

45
src/debuglog.h Normal file
View file

@ -0,0 +1,45 @@
/*
Copyright (C) 2020 Slava Monich et al.
This file is part of Fernschreiber.
Fernschreiber is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Fernschreiber is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef FERNSCHREIBER_DEBUG_LOG_H
#define FERNSCHREIBER_DEBUG_LOG_H
#include <QLoggingCategory>
#ifndef DEBUG_MODULE
# define DEBUG_MODULE Debug
#endif
#define LOG_CATEGORY__(x) x##Log
#define LOG_CATEGORY_(x) LOG_CATEGORY__(x)
#define LOG_CATEGORY LOG_CATEGORY_(DEBUG_MODULE)
static const QLoggingCategory LOG_CATEGORY("fernschreiber." QT_STRINGIFY(DEBUG_MODULE));
#define LOG(x) qCDebug(LOG_CATEGORY) << "[" QT_STRINGIFY(DEBUG_MODULE) "]" << x
#define WARN(x) qCWarning(LOG_CATEGORY) << "[" QT_STRINGIFY(DEBUG_MODULE) "]" << x
// No VERBOSE in release build
#ifndef VERBOSE
# if defined (QT_DEBUG) || defined (DEBUG)
# define VERBOSE(x) LOG(x)
# else
# define VERBOSE(x)
# endif
#endif
#endif // FERNSCHREIBER_DEBUG_LOG_H

51
src/debuglogjs.h Normal file
View file

@ -0,0 +1,51 @@
/*
Copyright (C) 2020 Sebastian J. Wolf and other contributors
This file is part of Fernschreiber.
Fernschreiber is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Fernschreiber is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DEBUGLOGJS_H
#define DEBUGLOGJS_H
#include <QObject>
#include <QQmlEngine>
#include <QLoggingCategory>
class DebugLogJS : public QObject
{
Q_OBJECT
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
public:
DebugLogJS(QObject* parent = Q_NULLPTR) : QObject(parent), category("fernschreiber.JS") {
enabled = category.isDebugEnabled();
}
static QObject* createSingleton(QQmlEngine*, QJSEngine*) { return new DebugLogJS(); }
bool isEnabled() const { return enabled; }
void setEnabled(bool value) {
if (enabled != value) {
enabled = value;
Q_EMIT enabledChanged();
}
}
Q_SIGNALS:
void enabledChanged();
private:
bool enabled;
const QLoggingCategory category;
};
#endif // DEBUGLOGJS_H

View file

@ -18,7 +18,8 @@
*/ */
#include "emojisearchworker.h" #include "emojisearchworker.h"
#define LOG(x) qDebug() << "[EmojiSearchWorker]" << x #define DEBUG_MODULE EmojiSearchWorker
#include "debuglog.h"
EmojiSearchWorker::~EmojiSearchWorker() EmojiSearchWorker::~EmojiSearchWorker()
{ {

View file

@ -24,7 +24,6 @@
#include <QSqlQuery> #include <QSqlQuery>
#include <QSqlError> #include <QSqlError>
#include <QVariantList> #include <QVariantList>
#include <QDebug>
class EmojiSearchWorker : public QThread class EmojiSearchWorker : public QThread
{ {

View file

@ -28,23 +28,35 @@
#include <QQmlContext> #include <QQmlContext>
#include <QQmlEngine> #include <QQmlEngine>
#include <QGuiApplication> #include <QGuiApplication>
#include <QLoggingCategory>
#include "appsettings.h" #include "appsettings.h"
#include "debuglogjs.h"
#include "tdlibfile.h" #include "tdlibfile.h"
#include "tdlibwrapper.h" #include "tdlibwrapper.h"
#include "chatlistmodel.h" #include "chatlistmodel.h"
#include "chatmodel.h" #include "chatmodel.h"
#include "notificationmanager.h" #include "notificationmanager.h"
#include "mceinterface.h"
#include "dbusadaptor.h" #include "dbusadaptor.h"
#include "processlauncher.h" #include "processlauncher.h"
#include "stickermanager.h" #include "stickermanager.h"
#include "tgsplugin.h" #include "tgsplugin.h"
#include "fernschreiberutils.h" #include "fernschreiberutils.h"
// The default filter can be overridden by QT_LOGGING_RULES envinronment variable, e.g.
// QT_LOGGING_RULES="fernschreiber.*=true" harbour-fernschreiber
#if defined (QT_DEBUG) || defined(DEBUG)
# define DEFAULT_LOG_FILTER "fernschreiber.*=true"
#else
# define DEFAULT_LOG_FILTER "fernschreiber.*=false"
#endif
Q_IMPORT_PLUGIN(TgsIOPlugin) Q_IMPORT_PLUGIN(TgsIOPlugin)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QLoggingCategory::setFilterRules(DEFAULT_LOG_FILTER);
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv)); QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
QScopedPointer<QQuickView> view(SailfishApp::createView()); QScopedPointer<QQuickView> view(SailfishApp::createView());
@ -52,12 +64,14 @@ int main(int argc, char *argv[])
const char *uri = "WerkWolf.Fernschreiber"; const char *uri = "WerkWolf.Fernschreiber";
qmlRegisterType<TDLibFile>(uri, 1, 0, "TDLibFile"); qmlRegisterType<TDLibFile>(uri, 1, 0, "TDLibFile");
qmlRegisterSingletonType<DebugLogJS>(uri, 1, 0, "DebugLog", DebugLogJS::createSingleton);
AppSettings *appSettings = new AppSettings(view.data()); AppSettings *appSettings = new AppSettings(view.data());
context->setContextProperty("appSettings", appSettings); context->setContextProperty("appSettings", appSettings);
qmlRegisterUncreatableType<AppSettings>(uri, 1, 0, "AppSettings", QString()); qmlRegisterUncreatableType<AppSettings>(uri, 1, 0, "AppSettings", QString());
TDLibWrapper *tdLibWrapper = new TDLibWrapper(appSettings, view.data()); MceInterface *mceInterface = new MceInterface(view.data());
TDLibWrapper *tdLibWrapper = new TDLibWrapper(appSettings, mceInterface, view.data());
context->setContextProperty("tdLibWrapper", tdLibWrapper); context->setContextProperty("tdLibWrapper", tdLibWrapper);
qmlRegisterUncreatableType<TDLibWrapper>(uri, 1, 0, "TelegramAPI", QString()); qmlRegisterUncreatableType<TDLibWrapper>(uri, 1, 0, "TelegramAPI", QString());
@ -73,7 +87,7 @@ int main(int argc, char *argv[])
ChatModel chatModel(tdLibWrapper); ChatModel chatModel(tdLibWrapper);
context->setContextProperty("chatModel", &chatModel); context->setContextProperty("chatModel", &chatModel);
NotificationManager notificationManager(tdLibWrapper, appSettings, &chatModel); NotificationManager notificationManager(tdLibWrapper, appSettings, mceInterface, &chatModel);
context->setContextProperty("notificationManager", &notificationManager); context->setContextProperty("notificationManager", &notificationManager);
ProcessLauncher processLauncher; ProcessLauncher processLauncher;

54
src/mceinterface.cpp Normal file
View file

@ -0,0 +1,54 @@
/*
Copyright (C) 2020 Slava Monich et al.
This file is part of Fernschreiber.
Fernschreiber is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Fernschreiber is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mceinterface.h"
#include <QDBusConnection>
#define DEBUG_MODULE MceInterface
#include "debuglog.h"
MceInterface::MceInterface(QObject *parent) :
QDBusInterface("com.nokia.mce", "/com/nokia/mce/request", "com.nokia.mce.request",
QDBusConnection::systemBus(), parent)
{
}
void MceInterface::ledPatternActivate(const QString &pattern)
{
LOG("Activating pattern" << pattern);
call(QStringLiteral("req_led_pattern_activate"), pattern);
}
void MceInterface::ledPatternDeactivate(const QString &pattern)
{
LOG("Deactivating pattern" << pattern);
call(QStringLiteral("req_led_pattern_deactivate"), pattern);
}
void MceInterface::displayCancelBlankingPause()
{
LOG("Enabling display blanking");
call(QStringLiteral("req_display_cancel_blanking_pause"));
}
void MceInterface::displayBlankingPause()
{
LOG("Disabling display blanking");
call(QStringLiteral("req_display_blanking_pause"));
}

37
src/mceinterface.h Normal file
View file

@ -0,0 +1,37 @@
/*
Copyright (C) 2020 Slava Monich et al.
This file is part of Fernschreiber.
Fernschreiber is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Fernschreiber is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MCE_INTERFACE_H
#define MCE_INTERFACE_H
#include <QDBusInterface>
class MceInterface : public QDBusInterface
{
public:
MceInterface(QObject *parent = Q_NULLPTR);
void ledPatternActivate(const QString &pattern);
void ledPatternDeactivate(const QString &pattern);
void displayCancelBlankingPause();
void displayBlankingPause();
};
#endif // MCE_INTERFACE_H

View file

@ -21,14 +21,14 @@
#include "fernschreiberutils.h" #include "fernschreiberutils.h"
#include "chatmodel.h" #include "chatmodel.h"
#include <sailfishapp.h> #include <sailfishapp.h>
#include <QDebug>
#include <QListIterator> #include <QListIterator>
#include <QUrl> #include <QUrl>
#include <QDateTime> #include <QDateTime>
#include <QDBusConnection> #include <QDBusConnection>
#include <QGuiApplication> #include <QGuiApplication>
#define LOG(x) qDebug() << "[NotificationManager]" << x #define DEBUG_MODULE NotificationManager
#include "debuglog.h"
namespace { namespace {
const QString _TYPE("@type"); const QString _TYPE("@type");
@ -120,14 +120,13 @@ NotificationManager::NotificationGroup::~NotificationGroup()
delete nemoNotification; delete nemoNotification;
} }
NotificationManager::NotificationManager(TDLibWrapper *tdLibWrapper, AppSettings *appSettings, ChatModel *chatModel) : NotificationManager::NotificationManager(TDLibWrapper *tdLibWrapper, AppSettings *appSettings, MceInterface *mceInterface, ChatModel *chatModel) :
mceInterface("com.nokia.mce", "/com/nokia/mce/request", "com.nokia.mce.request", QDBusConnection::systemBus()),
appIconFile(SailfishApp::pathTo("images/fernschreiber-notification.png").toLocalFile()) appIconFile(SailfishApp::pathTo("images/fernschreiber-notification.png").toLocalFile())
{ {
LOG("Initializing..."); LOG("Initializing...");
this->tdLibWrapper = tdLibWrapper; this->tdLibWrapper = tdLibWrapper;
this->appSettings = appSettings; this->appSettings = appSettings;
this->appSettings = appSettings; this->mceInterface = mceInterface;
this->chatModel = chatModel; this->chatModel = chatModel;
connect(this->tdLibWrapper, SIGNAL(activeNotificationsUpdated(QVariantList)), this, SLOT(handleUpdateActiveNotifications(QVariantList))); connect(this->tdLibWrapper, SIGNAL(activeNotificationsUpdated(QVariantList)), this, SLOT(handleUpdateActiveNotifications(QVariantList)));
@ -383,9 +382,9 @@ QString NotificationManager::getNotificationText(const QVariantMap &notification
void NotificationManager::controlLedNotification(bool enabled) void NotificationManager::controlLedNotification(bool enabled)
{ {
static const QString PATTERN("PatternCommunicationIM"); static const QString PATTERN("PatternCommunicationIM");
static const QString ACTIVATE("req_led_pattern_activate"); if (enabled) {
static const QString DEACTIVATE("req_led_pattern_deactivate"); mceInterface->ledPatternActivate(PATTERN);
} else {
LOG("Controlling notification LED" << enabled); mceInterface->ledPatternDeactivate(PATTERN);
mceInterface.call(enabled ? ACTIVATE : DEACTIVATE, PATTERN); }
} }

View file

@ -21,10 +21,10 @@
#define NOTIFICATIONMANAGER_H #define NOTIFICATIONMANAGER_H
#include <QObject> #include <QObject>
#include <QDBusInterface>
#include <nemonotifications-qt5/notification.h> #include <nemonotifications-qt5/notification.h>
#include "tdlibwrapper.h" #include "tdlibwrapper.h"
#include "appsettings.h" #include "appsettings.h"
#include "mceinterface.h"
class ChatModel; class ChatModel;
@ -36,7 +36,7 @@ class NotificationManager : public QObject
public: public:
NotificationManager(TDLibWrapper *tdLibWrapper, AppSettings *appSettings, ChatModel *chatModel); NotificationManager(TDLibWrapper *tdLibWrapper, AppSettings *appSettings, MceInterface *mceInterface, ChatModel *chatModel);
~NotificationManager() override; ~NotificationManager() override;
public slots: public slots:
@ -61,10 +61,10 @@ private:
TDLibWrapper *tdLibWrapper; TDLibWrapper *tdLibWrapper;
AppSettings *appSettings; AppSettings *appSettings;
MceInterface *mceInterface;
ChatModel *chatModel; ChatModel *chatModel;
QMap<qlonglong,ChatInfo*> chatMap; QMap<qlonglong,ChatInfo*> chatMap;
QMap<int,NotificationGroup*> notificationGroups; QMap<int,NotificationGroup*> notificationGroups;
QDBusInterface mceInterface;
QString appIconFile; QString appIconFile;
}; };

View file

@ -1,18 +1,23 @@
#include "processlauncher.h" #include "processlauncher.h"
#include <QProcess>
#include <QStandardPaths>
#define LOG(x) qDebug() << "[ProcessLauncher]" << x #define DEBUG_MODULE ProcessLauncher
#include "debuglog.h"
ProcessLauncher::ProcessLauncher(QObject *parent) : QObject(parent) ProcessLauncher::ProcessLauncher(QObject *parent) : QObject(parent)
{ {
} }
bool ProcessLauncher::launchProgram(const QString &program, const QStringList &arguments) bool ProcessLauncher::launchProgram(const QString &program, const QStringList &arguments)
{ {
QString executablePath = QStandardPaths::findExecutable(program); const QString executablePath(QStandardPaths::findExecutable(program));
if(executablePath == "") { if (executablePath.isEmpty()) {
LOG("[ProcessLauncher] Program " + program + "not found"); LOG("Program" << program << "not found");
return false; return false;
} }
QProcess *externalProcess = new QProcess(this);
return externalProcess->startDetached(program, arguments); QProcess *process = new QProcess(this);
connect(process, SIGNAL(finished(int)), process, SLOT(deleteLater()));
return process->startDetached(program, arguments);
} }

View file

@ -2,9 +2,6 @@
#define PROCESSLAUNCHER_H #define PROCESSLAUNCHER_H
#include <QObject> #include <QObject>
#include <QProcess>
#include <QStandardPaths>
#include <QDebug>
class ProcessLauncher : public QObject class ProcessLauncher : public QObject
{ {

View file

@ -18,10 +18,10 @@
*/ */
#include "stickermanager.h" #include "stickermanager.h"
#include <QDebug>
#include <QListIterator> #include <QListIterator>
#define LOG(x) qDebug() << "[StickerManager]" << x #define DEBUG_MODULE StickerManager
#include "debuglog.h"
StickerManager::StickerManager(TDLibWrapper *tdLibWrapper, QObject *parent) : QObject(parent) StickerManager::StickerManager(TDLibWrapper *tdLibWrapper, QObject *parent) : QObject(parent)
{ {

View file

@ -18,9 +18,9 @@
*/ */
#include "tdlibfile.h" #include "tdlibfile.h"
#include <QDebug>
#define LOG(x) qDebug() << "[TDLibFile]" << x #define DEBUG_MODULE TDLibFile
#include "debuglog.h"
namespace { namespace {
const QString ID("id"); const QString ID("id");

View file

@ -18,13 +18,8 @@
*/ */
#include "tdlibreceiver.h" #include "tdlibreceiver.h"
#define LOG(x) qDebug() << "[TDLibReceiver]" << x #define DEBUG_MODULE TDLibReceiver
#include "debuglog.h"
#if defined (QT_DEBUG) || defined (DEBUG)
# define VERBOSE(x) LOG(x)
#else
# define VERBOSE(x)
#endif
namespace { namespace {
const QString ID("id"); const QString ID("id");

View file

@ -19,7 +19,8 @@
#ifndef TDLIBRECEIVER_H #ifndef TDLIBRECEIVER_H
#define TDLIBRECEIVER_H #define TDLIBRECEIVER_H
#include <QDebug> #include <QHash>
#include <QVariantMap>
#include <QThread> #include <QThread>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>

View file

@ -25,19 +25,13 @@
#include <QLocale> #include <QLocale>
#include <QProcess> #include <QProcess>
#include <QSysInfo> #include <QSysInfo>
#include <QDebug>
#include <QJsonDocument> #include <QJsonDocument>
#include <QStandardPaths> #include <QStandardPaths>
#include <QDBusConnection> #include <QDBusConnection>
#include <QDBusInterface> #include <QDBusInterface>
#define LOG(x) qDebug() << "[TDLibWrapper]" << x #define DEBUG_MODULE TDLibWrapper
#include "debuglog.h"
#if defined (QT_DEBUG) || defined (DEBUG)
# define VERBOSE(x) LOG(x)
#else
# define VERBOSE(x)
#endif
namespace { namespace {
const QString STATUS("status"); const QString STATUS("status");
@ -50,10 +44,11 @@ namespace {
const QString _EXTRA("@extra"); const QString _EXTRA("@extra");
} }
TDLibWrapper::TDLibWrapper(AppSettings *appSettings, QObject *parent) : QObject(parent), joinChatRequested(false), contactsRequested(false) TDLibWrapper::TDLibWrapper(AppSettings *appSettings, MceInterface *mceInterface, QObject *parent) : QObject(parent), joinChatRequested(false), contactsRequested(false)
{ {
LOG("Initializing TD Lib..."); LOG("Initializing TD Lib...");
this->appSettings = appSettings; this->appSettings = appSettings;
this->mceInterface = mceInterface;
this->tdLibClient = td_json_client_create(); this->tdLibClient = td_json_client_create();
this->tdLibReceiver = new TDLibReceiver(this->tdLibClient, this); this->tdLibReceiver = new TDLibReceiver(this->tdLibClient, this);
@ -202,7 +197,7 @@ void TDLibWrapper::setAuthenticationPassword(const QString &authenticationPasswo
void TDLibWrapper::registerUser(const QString &firstName, const QString &lastName) void TDLibWrapper::registerUser(const QString &firstName, const QString &lastName)
{ {
qDebug() << "[TDLibWrapper] Register User " << firstName << lastName; LOG("Register User " << firstName << lastName);
QVariantMap requestObject; QVariantMap requestObject;
requestObject.insert("@type", "registerUser"); requestObject.insert("@type", "registerUser");
requestObject.insert("first_name", firstName); requestObject.insert("first_name", firstName);
@ -907,24 +902,18 @@ void TDLibWrapper::openFileOnDevice(const QString &filePath)
argumentsList.append(filePath); argumentsList.append(filePath);
bool successfullyStarted = QProcess::startDetached("xdg-open", argumentsList); bool successfullyStarted = QProcess::startDetached("xdg-open", argumentsList);
if (successfullyStarted) { if (successfullyStarted) {
qDebug() << "Successfully opened file " << filePath; LOG("Successfully opened file " << filePath);
} else { } else {
qDebug() << "Error opening file " << filePath; LOG("Error opening file " << filePath);
} }
} }
void TDLibWrapper::controlScreenSaver(bool enabled) void TDLibWrapper::controlScreenSaver(bool enabled)
{ {
LOG("Controlling device screen saver" << enabled);
QDBusConnection dbusConnection = QDBusConnection::connectToBus(QDBusConnection::SystemBus, "system");
QDBusInterface dbusInterface("com.nokia.mce", "/com/nokia/mce/request", "com.nokia.mce.request", dbusConnection);
if (enabled) { if (enabled) {
qDebug() << "Enabling screensaver"; mceInterface->displayCancelBlankingPause();
dbusInterface.call("req_display_cancel_blanking_pause");
} else { } else {
qDebug() << "Disabling screensaver"; mceInterface->displayBlankingPause();
dbusInterface.call("req_display_blanking_pause");
} }
} }
@ -1259,21 +1248,21 @@ void TDLibWrapper::setLogVerbosityLevel()
void TDLibWrapper::initializeOpenWith() void TDLibWrapper::initializeOpenWith()
{ {
LOG("Initialize open-with"); LOG("Initialize open-with");
LOG("Checking standard open URL file...");
qDebug() << "Checking standard open URL file..."; const QString applicationsLocation(QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation));
QString openUrlFilePath = QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation) + "/open-url.desktop"; const QString openUrlFilePath(applicationsLocation + "/open-url.desktop");
if (QFile::exists(openUrlFilePath)) { if (QFile::exists(openUrlFilePath)) {
qDebug() << "Standard open URL file exists, good!"; LOG("Standard open URL file exists, good!");
} else { } else {
qDebug() << "Copying standard open URL file to " << openUrlFilePath; LOG("Copying standard open URL file to " << openUrlFilePath);
QFile::copy("/usr/share/applications/open-url.desktop", openUrlFilePath); QFile::copy("/usr/share/applications/open-url.desktop", openUrlFilePath);
QProcess::startDetached("update-desktop-database " + QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation)); QProcess::startDetached("update-desktop-database " + applicationsLocation);
} }
QString desktopFilePath = QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation) + "/harbour-fernschreiber-open-url.desktop"; const QString desktopFilePath(applicationsLocation + "/harbour-fernschreiber-open-url.desktop");
QFile desktopFile(desktopFilePath); QFile desktopFile(desktopFilePath);
if (!desktopFile.exists()) { if (!desktopFile.exists()) {
qDebug() << "Creating Open-With file at " << desktopFile.fileName(); LOG("Creating Open-With file at " << desktopFile.fileName());
if (desktopFile.open(QIODevice::WriteOnly | QIODevice::Text)) { if (desktopFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream fileOut(&desktopFile); QTextStream fileOut(&desktopFile);
fileOut.setCodec("UTF-8"); fileOut.setCodec("UTF-8");
@ -1289,7 +1278,7 @@ void TDLibWrapper::initializeOpenWith()
fileOut << QString("Hidden=true;").toUtf8() << "\n"; fileOut << QString("Hidden=true;").toUtf8() << "\n";
fileOut.flush(); fileOut.flush();
desktopFile.close(); desktopFile.close();
QProcess::startDetached("update-desktop-database " + QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation)); QProcess::startDetached("update-desktop-database " + applicationsLocation);
} }
} }

View file

@ -26,12 +26,13 @@
#include "dbusinterface.h" #include "dbusinterface.h"
#include "emojisearchworker.h" #include "emojisearchworker.h"
#include "appsettings.h" #include "appsettings.h"
#include "mceinterface.h"
class TDLibWrapper : public QObject class TDLibWrapper : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit TDLibWrapper(AppSettings *appSettings, QObject *parent = nullptr); explicit TDLibWrapper(AppSettings *appSettings, MceInterface *mceInterface, QObject *parent = nullptr);
~TDLibWrapper(); ~TDLibWrapper();
enum AuthorizationState { enum AuthorizationState {
@ -255,6 +256,7 @@ private:
private: private:
void *tdLibClient; void *tdLibClient;
AppSettings *appSettings; AppSettings *appSettings;
MceInterface *mceInterface;
TDLibReceiver *tdLibReceiver; TDLibReceiver *tdLibReceiver;
DBusInterface *dbusInterface; DBusInterface *dbusInterface;
QString version; QString version;

View file

@ -18,7 +18,6 @@
#include "tgsplugin.h" #include "tgsplugin.h"
#include "rlottie.h" #include "rlottie.h"
#include <QDebug>
#include <QSize> #include <QSize>
#include <QImage> #include <QImage>
#include <QImageIOHandler> #include <QImageIOHandler>
@ -27,8 +26,9 @@
#include <zlib.h> #include <zlib.h>
#define LOG(x) qDebug() << "[TgsIOHandler]" << qPrintable(fileName) << x #define DEBUG_MODULE TgsIOHandler
#define WARN(x) qWarning() << "[TgsIOHandler]" << qPrintable(fileName) << x #include "debuglog.h"
#define LOG_(x) LOG(qPrintable(fileName) << x)
class TgsIOHandler : public QImageIOHandler class TgsIOHandler : public QImageIOHandler
{ {
@ -93,7 +93,7 @@ TgsIOHandler::~TgsIOHandler()
if (currentRender.valid()) { if (currentRender.valid()) {
currentRender.get(); currentRender.get();
} }
LOG("Done"); LOG_("Done");
} }
TgsIOHandler::ByteArray TgsIOHandler::uncompress() TgsIOHandler::ByteArray TgsIOHandler::uncompress()
@ -112,7 +112,7 @@ TgsIOHandler::ByteArray TgsIOHandler::uncompress()
unzip.next_out = (Bytef*)unzipped.data(); unzip.next_out = (Bytef*)unzipped.data();
unzip.avail_in = zipped.size(); unzip.avail_in = zipped.size();
unzip.avail_out = chunk; unzip.avail_out = chunk;
LOG("Compressed size" << zipped.size()); LOG_("Compressed size" << zipped.size());
while (unzip.avail_out > 0 && zerr == Z_OK) { while (unzip.avail_out > 0 && zerr == Z_OK) {
zerr = inflate(&unzip, Z_NO_FLUSH); zerr = inflate(&unzip, Z_NO_FLUSH);
if (zerr == Z_OK && unzip.avail_out < chunk) { if (zerr == Z_OK && unzip.avail_out < chunk) {
@ -124,7 +124,7 @@ TgsIOHandler::ByteArray TgsIOHandler::uncompress()
} }
if (zerr == Z_STREAM_END) { if (zerr == Z_STREAM_END) {
unzipped.resize(unzip.next_out - (Bytef*)unzipped.data()); unzipped.resize(unzip.next_out - (Bytef*)unzipped.data());
LOG("Uncompressed size" << unzipped.size()); LOG_("Uncompressed size" << unzipped.size());
} else { } else {
unzipped.clear(); unzipped.clear();
} }
@ -146,7 +146,7 @@ bool TgsIOHandler::load()
frameRate = animation->frameRate(); frameRate = animation->frameRate();
frameCount = (int) animation->totalFrame(); frameCount = (int) animation->totalFrame();
size = QSize(width, height); size = QSize(width, height);
LOG(size << frameCount << "frames," << frameRate << "fps"); LOG_(size << frameCount << "frames," << frameRate << "fps");
render(0); // Pre-render first frame render(0); // Pre-render first frame
} }
} }
@ -160,7 +160,7 @@ void TgsIOHandler::finishRendering()
currentRender.get(); currentRender.get();
prevImage = currentImage; prevImage = currentImage;
if (!currentFrame && !firstImage.isNull()) { if (!currentFrame && !firstImage.isNull()) {
LOG("Rendered first frame"); LOG_("Rendered first frame");
firstImage = currentImage; firstImage = currentImage;
} }
} else { } else {
@ -192,7 +192,7 @@ bool TgsIOHandler::read(QImage* out)
if (currentFrame && currentRender.valid()) { if (currentFrame && currentRender.valid()) {
std::future_status status = currentRender.wait_for(std::chrono::milliseconds(0)); std::future_status status = currentRender.wait_for(std::chrono::milliseconds(0));
if (status != std::future_status::ready) { if (status != std::future_status::ready) {
LOG("Skipping frame" << currentFrame); LOG_("Skipping frame" << currentFrame);
currentFrame = (currentFrame + 1) % frameCount; currentFrame = (currentFrame + 1) % frameCount;
*out = prevImage; *out = prevImage;
return true; return true;

View file

@ -99,84 +99,84 @@
<name>ChatInformationPageContent</name> <name>ChatInformationPageContent</name>
<message numerus="yes"> <message numerus="yes">
<source>%1 subscribers</source> <source>%1 subscribers</source>
<translation type="unfinished"> <translation>
<numerusform>%1 tilaaja</numerusform>
<numerusform>%1 tilaajaa</numerusform> <numerusform>%1 tilaajaa</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 members</source> <source>%1 members</source>
<translation type="unfinished"> <translation>
<numerusform>%1 jäsen</numerusform>
<numerusform>%1 jäsentä</numerusform> <numerusform>%1 jäsentä</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
<source>Leave Chat</source> <source>Leave Chat</source>
<translation type="unfinished">Poistu keskustelusta</translation> <translation>Poistu keskustelusta</translation>
</message> </message>
<message> <message>
<source>Join Chat</source> <source>Join Chat</source>
<translation type="unfinished">Liity keskusteluun</translation> <translation>Liity keskusteluun</translation>
</message> </message>
<message> <message>
<source>Leaving chat</source> <source>Leaving chat</source>
<translation type="unfinished">Poistutaan keskustelusta</translation> <translation>Poistutaan keskustelusta</translation>
</message> </message>
<message> <message>
<source>Unmute Chat</source> <source>Unmute Chat</source>
<translation type="unfinished">Poista keskustelun vaimennus</translation> <translation>Poista keskustelun vaimennus</translation>
</message> </message>
<message> <message>
<source>Mute Chat</source> <source>Mute Chat</source>
<translation type="unfinished">Vaimenna keskustelu</translation> <translation>Vaimenna keskustelu</translation>
</message> </message>
<message> <message>
<source>Unknown</source> <source>Unknown</source>
<translation type="unfinished">Tuntematon</translation> <translation>Tuntematon</translation>
</message> </message>
<message> <message>
<source>Chat Title</source> <source>Chat Title</source>
<comment>group title header</comment> <comment>group title header</comment>
<translation type="unfinished">Keskustelun otsikko</translation> <translation>Keskustelun otsikko</translation>
</message> </message>
<message> <message>
<source>Enter 1-128 characters</source> <source>Enter 1-128 characters</source>
<translation type="unfinished">Syötä 1-128 merkkiä</translation> <translation>Syötä 1-128 merkkiä</translation>
</message> </message>
<message> <message>
<source>There is no information text available, yet.</source> <source>There is no information text available, yet.</source>
<translation type="unfinished">Tietoa ei ole vielä saatavilla.</translation> <translation>Tietoa ei ole vielä saatavilla.</translation>
</message> </message>
<message> <message>
<source>Info</source> <source>Info</source>
<comment>group or user infotext header</comment> <comment>group or user infotext header</comment>
<translation type="unfinished">Tietoa</translation> <translation>Tietoa</translation>
</message> </message>
<message> <message>
<source>Phone Number</source> <source>Phone Number</source>
<comment>user phone number header</comment> <comment>user phone number header</comment>
<translation type="unfinished">Puhelinnumero</translation> <translation>Puhelinnumero</translation>
</message> </message>
<message> <message>
<source>Invite Link</source> <source>Invite Link</source>
<comment>header</comment> <comment>header</comment>
<translation type="unfinished">Kutsulinkki</translation> <translation>Kutsulinkki</translation>
</message> </message>
<message> <message>
<source>The Invite Link has been copied to the clipboard.</source> <source>The Invite Link has been copied to the clipboard.</source>
<translation type="unfinished">Kutsulinkki on kopioitu leikepöydälle.</translation> <translation>Kutsulinkki on kopioitu leikepöydälle.</translation>
</message> </message>
<message> <message>
<source>%1, %2</source> <source>%1, %2</source>
<comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment> <comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment>
<translation type="unfinished"></translation> <translation>%1, %2</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 online</source> <source>%1 online</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%1 paikalla</numerusform>
<numerusform></numerusform> <numerusform>%1 paikalla</numerusform>
</translation> </translation>
</message> </message>
</context> </context>
@ -217,17 +217,17 @@
<message> <message>
<source>Groups</source> <source>Groups</source>
<comment>Button: groups in common (short)</comment> <comment>Button: groups in common (short)</comment>
<translation type="unfinished">Ryhmät</translation> <translation>Ryhmät</translation>
</message> </message>
<message> <message>
<source>Members</source> <source>Members</source>
<comment>Button: Group Members</comment> <comment>Button: Group Members</comment>
<translation type="unfinished">Jäsenet</translation> <translation>Jäsenet</translation>
</message> </message>
<message> <message>
<source>Settings</source> <source>Settings</source>
<comment>Button: Chat Settings</comment> <comment>Button: Chat Settings</comment>
<translation type="unfinished">Asetukset</translation> <translation>Asetukset</translation>
</message> </message>
</context> </context>
<context> <context>
@ -273,16 +273,16 @@
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 members</source> <source>%1 members</source>
<translation type="unfinished"> <translation>
<numerusform>%1 jäsen</numerusform>
<numerusform>%1 jäsentä</numerusform> <numerusform>%1 jäsentä</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 subscribers</source> <source>%1 subscribers</source>
<translation type="unfinished"> <translation>
<numerusform>%1 tilaaja</numerusform>
<numerusform>%1 tilaajaa</numerusform> <numerusform>%1 tilaajaa</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -331,48 +331,48 @@
</message> </message>
<message> <message>
<source>Select Messages</source> <source>Select Messages</source>
<translation type="unfinished"></translation> <translation>Valitse viestejä</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%Ln Messages deleted</source> <source>%Ln Messages deleted</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln Viesti poistettu</numerusform>
<numerusform></numerusform> <numerusform>%Ln Viestiä poistettu</numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%Ln messages have been copied</source> <source>%Ln messages have been copied</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln viesti kopioitu</numerusform>
<numerusform></numerusform> <numerusform>%Ln viestiä kopioitu</numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Forward %Ln messages</source> <source>Forward %Ln messages</source>
<comment>dialog header</comment> <comment>dialog header</comment>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>Välitä %Ln viesti</numerusform>
<numerusform></numerusform> <numerusform>Välitä %Ln viestiä</numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%Ln messages selected</source> <source>%Ln messages selected</source>
<comment>number of messages selected</comment> <comment>number of messages selected</comment>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln viesti valittu</numerusform>
<numerusform></numerusform> <numerusform>%Ln viestiä valittu</numerusform>
</translation> </translation>
</message> </message>
<message> <message>
<source>%1, %2</source> <source>%1, %2</source>
<comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment> <comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment>
<translation type="unfinished"></translation> <translation>%1, %2</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 online</source> <source>%1 online</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%1 paikalla</numerusform>
<numerusform></numerusform> <numerusform>%1 paikalla</numerusform>
</translation> </translation>
</message> </message>
</context> </context>
@ -380,11 +380,11 @@
<name>ChatSelectionPage</name> <name>ChatSelectionPage</name>
<message> <message>
<source>Select Chat</source> <source>Select Chat</source>
<translation type="unfinished"></translation> <translation>Valitse keskustelu</translation>
</message> </message>
<message> <message>
<source>You don&apos;t have any chats yet.</source> <source>You don&apos;t have any chats yet.</source>
<translation type="unfinished">Sinulla ei ole vielä keskusteluja.</translation> <translation>Sinulla ei ole vielä keskusteluja.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -866,11 +866,11 @@
</message> </message>
<message> <message>
<source>Select Message</source> <source>Select Message</source>
<translation type="unfinished"></translation> <translation>Valitse viesti</translation>
</message> </message>
<message> <message>
<source>Pin Message</source> <source>Pin Message</source>
<translation type="unfinished"></translation> <translation>Kiinnitä viesti</translation>
</message> </message>
</context> </context>
<context> <context>
@ -884,11 +884,11 @@
<name>MessageOverlayFlickable</name> <name>MessageOverlayFlickable</name>
<message> <message>
<source>You</source> <source>You</source>
<translation type="unfinished">Sinä</translation> <translation>Sinä</translation>
</message> </message>
<message> <message>
<source>This message was forwarded. Original author: %1</source> <source>This message was forwarded. Original author: %1</source>
<translation type="unfinished"></translation> <translation>Välitetty viesti. Alkuperäinen lähettäjä: %1</translation>
</message> </message>
</context> </context>
<context> <context>
@ -926,9 +926,9 @@
<name>NotificationManager</name> <name>NotificationManager</name>
<message numerus="yes"> <message numerus="yes">
<source>%Ln unread messages</source> <source>%Ln unread messages</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln lukematon viesti</numerusform>
<numerusform></numerusform> <numerusform>%Ln lukematonta viestiä</numerusform>
</translation> </translation>
</message> </message>
</context> </context>
@ -983,15 +983,15 @@
<name>PinnedMessageItem</name> <name>PinnedMessageItem</name>
<message> <message>
<source>You</source> <source>You</source>
<translation type="unfinished">Sinä</translation> <translation>Sinä</translation>
</message> </message>
<message> <message>
<source>Pinned Message</source> <source>Pinned Message</source>
<translation type="unfinished"></translation> <translation>Kiinnitetty viesti</translation>
</message> </message>
<message> <message>
<source>Message unpinned</source> <source>Message unpinned</source>
<translation type="unfinished"></translation> <translation>Viestin kiinnitys poistettu</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1084,9 +1084,9 @@
<message numerus="yes"> <message numerus="yes">
<source>%Ln%</source> <source>%Ln%</source>
<comment>% of votes for option</comment> <comment>% of votes for option</comment>
<translation type="unfinished"> <translation>
<numerusform>%Ln%</numerusform>
<numerusform>%Ln%</numerusform> <numerusform>%Ln%</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -1153,9 +1153,9 @@
<message numerus="yes"> <message numerus="yes">
<source>%Ln%</source> <source>%Ln%</source>
<comment>% of votes for option</comment> <comment>% of votes for option</comment>
<translation type="unfinished"> <translation>
<numerusform>%Ln%</numerusform>
<numerusform>%Ln%</numerusform> <numerusform>%Ln%</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -1236,7 +1236,7 @@
</message> </message>
<message> <message>
<source>Notification turns on the display</source> <source>Notification turns on the display</source>
<translation type="unfinished"></translation> <translation>Ilmoitus kytkee näytön päälle</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1269,7 +1269,7 @@
<name>WebPagePreview</name> <name>WebPagePreview</name>
<message> <message>
<source>Preview not supported for this link...</source> <source>Preview not supported for this link...</source>
<translation type="unfinished"></translation> <translation>Esikatselua ei tueta tälle linkille...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1630,11 +1630,11 @@
<message> <message>
<source>sent a video note</source> <source>sent a video note</source>
<comment>myself</comment> <comment>myself</comment>
<translation type="unfinished"></translation> <translation>lähetit videoviestin</translation>
</message> </message>
<message> <message>
<source>sent a video note</source> <source>sent a video note</source>
<translation type="unfinished"></translation> <translation>lähetti videoviestin</translation>
</message> </message>
<message> <message>
<source>You are already a member of this chat.</source> <source>You are already a member of this chat.</source>

View file

@ -99,84 +99,84 @@
<name>ChatInformationPageContent</name> <name>ChatInformationPageContent</name>
<message numerus="yes"> <message numerus="yes">
<source>%1 subscribers</source> <source>%1 subscribers</source>
<translation type="unfinished"> <translation>
<numerusform>%1 abbonato</numerusform>
<numerusform>%1 abbonati</numerusform> <numerusform>%1 abbonati</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 members</source> <source>%1 members</source>
<translation type="unfinished"> <translation>
<numerusform>%1 membro</numerusform>
<numerusform>%1 membri</numerusform> <numerusform>%1 membri</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
<source>Leave Chat</source> <source>Leave Chat</source>
<translation type="unfinished">Lascia chat</translation> <translation>Lascia chat</translation>
</message> </message>
<message> <message>
<source>Join Chat</source> <source>Join Chat</source>
<translation type="unfinished">Entra nella chat</translation> <translation>Entra nella chat</translation>
</message> </message>
<message> <message>
<source>Leaving chat</source> <source>Leaving chat</source>
<translation type="unfinished">Lascia chat</translation> <translation>Lascia chat</translation>
</message> </message>
<message> <message>
<source>Unmute Chat</source> <source>Unmute Chat</source>
<translation type="unfinished">Riattiva suoni chat</translation> <translation>Riattiva suoni chat</translation>
</message> </message>
<message> <message>
<source>Mute Chat</source> <source>Mute Chat</source>
<translation type="unfinished">Silenzia chat</translation> <translation>Silenzia chat</translation>
</message> </message>
<message> <message>
<source>Unknown</source> <source>Unknown</source>
<translation type="unfinished">Sconosciuto</translation> <translation>Sconosciuto</translation>
</message> </message>
<message> <message>
<source>Chat Title</source> <source>Chat Title</source>
<comment>group title header</comment> <comment>group title header</comment>
<translation type="unfinished">Titolo chat</translation> <translation>Titolo chat</translation>
</message> </message>
<message> <message>
<source>Enter 1-128 characters</source> <source>Enter 1-128 characters</source>
<translation type="unfinished">Inserisci da 1 a 128 caratteri</translation> <translation>Inserisci da 1 a 128 caratteri</translation>
</message> </message>
<message> <message>
<source>There is no information text available, yet.</source> <source>There is no information text available, yet.</source>
<translation type="unfinished">Attualmente non è disponibile nessuna informazione.</translation> <translation>Nessuna informazione disponibile.</translation>
</message> </message>
<message> <message>
<source>Info</source> <source>Info</source>
<comment>group or user infotext header</comment> <comment>group or user infotext header</comment>
<translation type="unfinished">Info</translation> <translation>Info</translation>
</message> </message>
<message> <message>
<source>Phone Number</source> <source>Phone Number</source>
<comment>user phone number header</comment> <comment>user phone number header</comment>
<translation type="unfinished">Telefono</translation> <translation>Telefono</translation>
</message> </message>
<message> <message>
<source>Invite Link</source> <source>Invite Link</source>
<comment>header</comment> <comment>header</comment>
<translation type="unfinished">Link d&apos;invito</translation> <translation>Link d&apos;invito</translation>
</message> </message>
<message> <message>
<source>The Invite Link has been copied to the clipboard.</source> <source>The Invite Link has been copied to the clipboard.</source>
<translation type="unfinished">Il link d&apos;invito è stato copiato nella clipboard.</translation> <translation>Il link d&apos;invito è stato copiato.</translation>
</message> </message>
<message> <message>
<source>%1, %2</source> <source>%1, %2</source>
<comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment> <comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment>
<translation type="unfinished"></translation> <translation>%1, %2</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 online</source> <source>%1 online</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%1 online</numerusform>
<numerusform></numerusform> <numerusform>%1 online</numerusform>
</translation> </translation>
</message> </message>
</context> </context>
@ -217,17 +217,17 @@
<message> <message>
<source>Groups</source> <source>Groups</source>
<comment>Button: groups in common (short)</comment> <comment>Button: groups in common (short)</comment>
<translation type="unfinished">Gruppi</translation> <translation>Gruppi</translation>
</message> </message>
<message> <message>
<source>Members</source> <source>Members</source>
<comment>Button: Group Members</comment> <comment>Button: Group Members</comment>
<translation type="unfinished">Membri</translation> <translation>Membri</translation>
</message> </message>
<message> <message>
<source>Settings</source> <source>Settings</source>
<comment>Button: Chat Settings</comment> <comment>Button: Chat Settings</comment>
<translation type="unfinished">Impostazioni</translation> <translation>Impostazioni</translation>
</message> </message>
</context> </context>
<context> <context>
@ -269,20 +269,20 @@
</message> </message>
<message> <message>
<source>Your message</source> <source>Your message</source>
<translation>Tuo messaggio</translation> <translation>Scrivi un messaggio...</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 members</source> <source>%1 members</source>
<translation type="unfinished"> <translation>
<numerusform>%1 membro</numerusform>
<numerusform>%1 membri</numerusform> <numerusform>%1 membri</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 subscribers</source> <source>%1 subscribers</source>
<translation type="unfinished"> <translation>
<numerusform>%1 abbonato</numerusform>
<numerusform>%1 abbonati</numerusform> <numerusform>%1 abbonati</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -331,48 +331,48 @@
</message> </message>
<message> <message>
<source>Select Messages</source> <source>Select Messages</source>
<translation type="unfinished"></translation> <translation>Seleziona messaggi</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%Ln Messages deleted</source> <source>%Ln Messages deleted</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln messaggio cancellato</numerusform>
<numerusform></numerusform> <numerusform>%Ln messaggi cancellati</numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%Ln messages have been copied</source> <source>%Ln messages have been copied</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln messaggio copiato</numerusform>
<numerusform></numerusform> <numerusform>%Ln messaggi copiati</numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Forward %Ln messages</source> <source>Forward %Ln messages</source>
<comment>dialog header</comment> <comment>dialog header</comment>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>Inoltra %Ln messaggio</numerusform>
<numerusform></numerusform> <numerusform>Inoltra %Ln messaggi</numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%Ln messages selected</source> <source>%Ln messages selected</source>
<comment>number of messages selected</comment> <comment>number of messages selected</comment>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln messaggio selezionato</numerusform>
<numerusform></numerusform> <numerusform>%Ln messaggi selezionati</numerusform>
</translation> </translation>
</message> </message>
<message> <message>
<source>%1, %2</source> <source>%1, %2</source>
<comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment> <comment>combination of &apos;[x members], [y online]&apos;, which are separate translations</comment>
<translation type="unfinished"></translation> <translation>%1, %2</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 online</source> <source>%1 online</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%1 online</numerusform>
<numerusform></numerusform> <numerusform>%1 online</numerusform>
</translation> </translation>
</message> </message>
</context> </context>
@ -380,11 +380,11 @@
<name>ChatSelectionPage</name> <name>ChatSelectionPage</name>
<message> <message>
<source>Select Chat</source> <source>Select Chat</source>
<translation type="unfinished"></translation> <translation>Seleziona chat</translation>
</message> </message>
<message> <message>
<source>You don&apos;t have any chats yet.</source> <source>You don&apos;t have any chats yet.</source>
<translation type="unfinished">Non hai nessuna chat.</translation> <translation>Nessuna chat presente.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -865,11 +865,11 @@
</message> </message>
<message> <message>
<source>Select Message</source> <source>Select Message</source>
<translation type="unfinished"></translation> <translation>Seleziona messaggio</translation>
</message> </message>
<message> <message>
<source>Pin Message</source> <source>Pin Message</source>
<translation type="unfinished"></translation> <translation>Metti messaggio in evidenza</translation>
</message> </message>
</context> </context>
<context> <context>
@ -883,11 +883,11 @@
<name>MessageOverlayFlickable</name> <name>MessageOverlayFlickable</name>
<message> <message>
<source>You</source> <source>You</source>
<translation type="unfinished">Tu</translation> <translation>Tu</translation>
</message> </message>
<message> <message>
<source>This message was forwarded. Original author: %1</source> <source>This message was forwarded. Original author: %1</source>
<translation type="unfinished"></translation> <translation>Questo è un messaggio inoltrato. Autore originale: %1</translation>
</message> </message>
</context> </context>
<context> <context>
@ -925,9 +925,9 @@
<name>NotificationManager</name> <name>NotificationManager</name>
<message numerus="yes"> <message numerus="yes">
<source>%Ln unread messages</source> <source>%Ln unread messages</source>
<translation type="unfinished"> <translation>
<numerusform></numerusform> <numerusform>%Ln messaggio non letto</numerusform>
<numerusform></numerusform> <numerusform>%Ln messaggi non letti</numerusform>
</translation> </translation>
</message> </message>
</context> </context>
@ -982,15 +982,15 @@
<name>PinnedMessageItem</name> <name>PinnedMessageItem</name>
<message> <message>
<source>You</source> <source>You</source>
<translation type="unfinished">Tu</translation> <translation>Tu</translation>
</message> </message>
<message> <message>
<source>Pinned Message</source> <source>Pinned Message</source>
<translation type="unfinished"></translation> <translation>Messaggio in evidenza</translation>
</message> </message>
<message> <message>
<source>Message unpinned</source> <source>Message unpinned</source>
<translation type="unfinished"></translation> <translation>Messaggio non più in evidenza</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1083,9 +1083,9 @@
<message numerus="yes"> <message numerus="yes">
<source>%Ln%</source> <source>%Ln%</source>
<comment>% of votes for option</comment> <comment>% of votes for option</comment>
<translation type="unfinished"> <translation>
<numerusform>%Ln%</numerusform>
<numerusform>%Ln%</numerusform> <numerusform>%Ln%</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -1152,9 +1152,9 @@
<message numerus="yes"> <message numerus="yes">
<source>%Ln%</source> <source>%Ln%</source>
<comment>% of votes for option</comment> <comment>% of votes for option</comment>
<translation type="unfinished"> <translation>
<numerusform>%Ln%</numerusform>
<numerusform>%Ln%</numerusform> <numerusform>%Ln%</numerusform>
<numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -1235,7 +1235,7 @@
</message> </message>
<message> <message>
<source>Notification turns on the display</source> <source>Notification turns on the display</source>
<translation type="unfinished"></translation> <translation>Notifiche attivano il display</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1268,7 +1268,7 @@
<name>WebPagePreview</name> <name>WebPagePreview</name>
<message> <message>
<source>Preview not supported for this link...</source> <source>Preview not supported for this link...</source>
<translation type="unfinished"></translation> <translation>Anteprima non supportata per questo link...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1629,11 +1629,11 @@
<message> <message>
<source>sent a video note</source> <source>sent a video note</source>
<comment>myself</comment> <comment>myself</comment>
<translation type="unfinished"></translation> <translation>hai inviato un videomessaggio</translation>
</message> </message>
<message> <message>
<source>sent a video note</source> <source>sent a video note</source>
<translation type="unfinished"></translation> <translation>ha inviato un videomessaggio</translation>
</message> </message>
<message> <message>
<source>You are already a member of this chat.</source> <source>You are already a member of this chat.</source>

View file

@ -1235,7 +1235,7 @@
</message> </message>
<message> <message>
<source>Notification turns on the display</source> <source>Notification turns on the display</source>
<translation type="unfinished"></translation> <translation>Avisering tänder skärmen</translation>
</message> </message>
</context> </context>
<context> <context>

View file

@ -1216,7 +1216,7 @@
</message> </message>
<message> <message>
<source>Notification turns on the display</source> <source>Notification turns on the display</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>