From bf9b0b18f92a9fd0c26da3ca6e0cdc1f19bc58c2 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Fri, 17 Feb 2023 14:14:31 +0100 Subject: [PATCH] restructure build setup --- annotation-processor/build.gradle | 14 + .../processor/XmlElementProcessor.java | 0 annotation/build.gradle | 6 + .../android/annotation/XmlElement.java | 0 .../android/annotation/XmlPackage.java | 0 app/build.gradle | 127 + app/proguard-rules.pro | 21 + .../1.json | 0 .../android/xmpp/TransformationTest.java | 0 .../res/drawable/ic_launcher_foreground.xml | 0 .../res/mipmap-anydpi-v26/new_launcher.xml | 0 .../mipmap-anydpi-v26/new_launcher_round.xml | 0 .../mipmap-hdpi/ic_launcher_background.png | Bin .../res/mipmap-hdpi/new_launcher.png | Bin .../res/mipmap-hdpi/new_launcher_round.png | Bin .../mipmap-mdpi/ic_launcher_background.png | Bin .../res/mipmap-mdpi/new_launcher.png | Bin .../res/mipmap-mdpi/new_launcher_round.png | Bin .../mipmap-xhdpi/ic_launcher_background.png | Bin .../res/mipmap-xhdpi/new_launcher.png | Bin .../res/mipmap-xhdpi/new_launcher_round.png | Bin .../mipmap-xxhdpi/ic_launcher_background.png | Bin .../res/mipmap-xxhdpi/new_launcher.png | Bin .../res/mipmap-xxhdpi/new_launcher_round.png | Bin .../mipmap-xxxhdpi/ic_launcher_background.png | Bin .../res/mipmap-xxxhdpi/new_launcher.png | Bin .../res/mipmap-xxxhdpi/new_launcher_round.png | Bin .../conversations/res/values-ar/strings.xml | 0 .../conversations/res/values-bg/strings.xml | 0 .../res/values-bn-rIN/strings.xml | 0 .../conversations/res/values-ca/strings.xml | 0 .../res/values-da-rDK/strings.xml | 0 .../conversations/res/values-de/strings.xml | 0 .../conversations/res/values-el/strings.xml | 0 .../conversations/res/values-es/strings.xml | 0 .../conversations/res/values-eu/strings.xml | 0 .../res/values-fa-rIR/strings.xml | 0 .../conversations/res/values-fi/strings.xml | 0 .../conversations/res/values-fr/strings.xml | 0 .../conversations/res/values-gl/strings.xml | 0 .../conversations/res/values-hr/strings.xml | 0 .../conversations/res/values-hu/strings.xml | 0 .../conversations/res/values-id/strings.xml | 0 .../conversations/res/values-it/strings.xml | 0 .../conversations/res/values-ja/strings.xml | 0 .../conversations/res/values-nl/strings.xml | 0 .../conversations/res/values-pl/strings.xml | 0 .../res/values-pt-rBR/strings.xml | 0 .../conversations/res/values-pt/strings.xml | 0 .../res/values-ro-rRO/strings.xml | 0 .../conversations/res/values-ru/strings.xml | 0 .../conversations/res/values-sk/strings.xml | 0 .../conversations/res/values-sq/strings.xml | 0 .../conversations/res/values-sr/strings.xml | 0 .../conversations/res/values-sv/strings.xml | 0 .../conversations/res/values-szl/strings.xml | 0 .../res/values-tr-rTR/strings.xml | 0 .../conversations/res/values-uk/strings.xml | 0 .../conversations/res/values-vi/strings.xml | 0 .../res/values-zh-rCN/strings.xml | 0 .../res/values-zh-rTW/strings.xml | 0 .../src}/conversations/res/values/strings.xml | 0 app/src/main/AndroidManifest.xml | 92 + {src => app/src}/main/assets/logback.xml | 0 .../conversations/android/Conversations.java | 6 + .../java/im/conversations/android/IDs.java | 0 .../database/AxolotlDatabaseStore.java | 0 .../database/ConversationsDatabase.java | 0 .../android/database/Converters.java | 0 .../android/database/CredentialStore.java | 0 .../android/database/dao/AccountDao.java | 0 .../android/database/dao/AvatarDao.java | 0 .../android/database/dao/AxolotlDao.java | 0 .../android/database/dao/BlockingDao.java | 0 .../android/database/dao/BookmarkDao.java | 0 .../android/database/dao/ChatDao.java | 0 .../android/database/dao/DiscoDao.java | 0 .../android/database/dao/MessageDao.java | 0 .../android/database/dao/NickDao.java | 0 .../android/database/dao/PresenceDao.java | 0 .../android/database/dao/RosterDao.java | 0 .../database/entity/AccountEntity.java | 0 .../entity/AvatarAdditionalEntity.java | 0 .../android/database/entity/AvatarEntity.java | 0 .../entity/AxolotlDeviceListEntity.java | 0 .../entity/AxolotlDeviceListItemEntity.java | 0 .../entity/AxolotlIdentityEntity.java | 0 .../entity/AxolotlIdentityKeyPairEntity.java | 0 .../database/entity/AxolotlPreKeyEntity.java | 0 .../database/entity/AxolotlSessionEntity.java | 0 .../entity/AxolotlSignedPreKeyEntity.java | 0 .../database/entity/BlockedItemEntity.java | 0 .../database/entity/BookmarkEntity.java | 0 .../android/database/entity/ChatEntity.java | 0 .../android/database/entity/DiscoEntity.java | 0 .../database/entity/DiscoExtensionEntity.java | 0 .../entity/DiscoExtensionFieldEntity.java | 0 .../DiscoExtensionFieldValueEntity.java | 0 .../database/entity/DiscoFeatureEntity.java | 0 .../database/entity/DiscoIdentityEntity.java | 0 .../database/entity/DiscoItemEntity.java | 0 .../database/entity/MessageContentEntity.java | 0 .../database/entity/MessageEntity.java | 0 .../entity/MessageReactionEntity.java | 0 .../database/entity/MessageStateEntity.java | 0 .../database/entity/MessageVersionEntity.java | 0 .../android/database/entity/NickEntity.java | 0 .../database/entity/PresenceEntity.java | 0 .../database/entity/RosterItemEntity.java | 0 .../entity/RosterItemGroupEntity.java | 0 .../android/database/model/Account.java | 0 .../android/database/model/AvatarBase.java | 0 .../database/model/AvatarExternal.java | 0 .../database/model/AvatarThumbnail.java | 0 .../database/model/ChatIdentifier.java | 0 .../android/database/model/ChatType.java | 0 .../android/database/model/Connection.java | 0 .../android/database/model/Credential.java | 0 .../database/model/MessageContent.java | 0 .../database/model/MessageEmbedded.java | 0 .../database/model/MessageIdentifier.java | 0 .../database/model/MessageReaction.java | 0 .../android/database/model/MessageState.java | 0 .../model/MessageWithContentReactions.java | 0 .../android/database/model/Modification.java | 0 .../android/database/model/PartType.java | 0 .../android/database/model/PresenceShow.java | 0 .../android/database/model/PresenceType.java | 0 .../android/database/model/Proxy.java | 0 .../android/database/model/StateType.java | 0 .../dns/AndroidUsingExecLowPriority.java | 88 + .../dns}/AndroidUsingLinkProperties.java | 41 +- .../java/im/conversations/android/dns/IP.java | 39 + .../conversations/android/dns}/Resolver.java | 238 +- .../repository/AbstractRepository.java | 0 .../android/repository/AccountRepository.java | 0 .../android/socks}/SocksSocketFactory.java | 39 +- .../conversations/android/tls/SSLSockets.java | 0 .../android/tls/TrustManagers.java | 29 + .../android/tls/XmppDomainVerifier.java | 0 .../android/transformer/Transformation.java | 0 .../transformer/TransformationFactory.java | 0 .../android/transformer/Transformer.java | 0 .../conversations/android/ui/Activities.java | 0 .../android/ui/BindingAdapters.java | 0 .../im/conversations/android/ui/Event.java | 0 .../android/ui/NavControllers.java | 0 .../android/ui/activity/SetupActivity.java | 7 +- .../fragment/setup/AbstractSetupFragment.java | 0 .../ui/fragment/setup/HostnameFragment.java | 0 .../ui/fragment/setup/PasswordFragment.java | 4 +- .../ui/fragment/setup/SignInFragment.java | 4 +- .../android/ui/model/SetupViewModel.java | 0 .../android}/util/PendingItem.java | 2 +- .../im/conversations/android/xml/Element.java | 0 .../conversations/android/xml/Entities.java | 0 .../conversations/android/xml/Namespace.java | 0 .../im/conversations/android/xml/Tag.java | 0 .../conversations/android/xml/TagWriter.java | 0 .../android/xml/XmlElementReader.java | 0 .../conversations/android/xml/XmlReader.java | 0 .../conversations/android/xmpp/Closables.java | 0 .../android/xmpp/ConnectionException.java | 0 .../android/xmpp/ConnectionPool.java | 1 + .../android/xmpp/ConnectionState.java | 0 .../im/conversations/android/xmpp/Entity.java | 0 .../android/xmpp/EntityCapabilities.java | 0 .../android/xmpp/EntityCapabilities2.java | 0 .../android/xmpp/ExtensionFactory.java | 0 .../android/xmpp/IqErrorException.java | 0 .../conversations/android/xmpp/Managers.java | 0 .../android/xmpp/NodeConfiguration.java | 0 .../xmpp/PreconditionNotMetException.java | 0 .../android/xmpp/PubSubErrorException.java | 0 .../android/xmpp/ServiceDescription.java | 0 .../android/xmpp/Timestamps.java | 0 .../android/xmpp/XmppConnection.java | 333 +- .../android/xmpp/axolotl/AxolotlAddress.java | 0 .../android/xmpp/manager/AbstractManager.java | 0 .../android/xmpp/manager/ArchiveManager.java | 0 .../android/xmpp/manager/AvatarManager.java | 0 .../android/xmpp/manager/AxolotlManager.java | 0 .../android/xmpp/manager/BlockingManager.java | 0 .../android/xmpp/manager/BookmarkManager.java | 0 .../android/xmpp/manager/CarbonsManager.java | 0 .../xmpp/manager/ChatStateManager.java | 0 .../android/xmpp/manager/DiscoManager.java | 4 +- .../android/xmpp/manager/NickManager.java | 0 .../android/xmpp/manager/PepManager.java | 0 .../android/xmpp/manager/PresenceManager.java | 0 .../android/xmpp/manager/PubSubManager.java | 0 .../android/xmpp/manager/ReceiptManager.java | 0 .../xmpp/manager/RegistrationManager.java | 0 .../android/xmpp/manager/RosterManager.java | 0 .../android/xmpp/manager/StanzaIdManager.java | 0 .../android/xmpp/model/ByteContent.java | 0 .../android/xmpp/model/DeliveryReceipt.java | 0 .../xmpp/model/DeliveryReceiptRequest.java | 0 .../android/xmpp/model/Extension.java | 0 .../android/xmpp/model/Hash.java | 0 .../android/xmpp/model/StreamElement.java | 0 .../android/xmpp/model/avatar/Data.java | 0 .../android/xmpp/model/avatar/Info.java | 0 .../android/xmpp/model/avatar/Metadata.java | 0 .../android/xmpp/model/axolotl/Bundle.java | 0 .../android/xmpp/model/axolotl/Device.java | 0 .../xmpp/model/axolotl/DeviceList.java | 0 .../model/axolotl/ECPublicKeyContent.java | 0 .../android/xmpp/model/axolotl/Encrypted.java | 0 .../android/xmpp/model/axolotl/Header.java | 0 .../xmpp/model/axolotl/IdentityKey.java | 0 .../android/xmpp/model/axolotl/Payload.java | 0 .../android/xmpp/model/axolotl/PreKey.java | 0 .../android/xmpp/model/axolotl/PreKeys.java | 0 .../xmpp/model/axolotl/SignedPreKey.java | 0 .../model/axolotl/SignedPreKeySignature.java | 0 .../xmpp/model/axolotl/package-info.java | 0 .../xmpp/model/bind2/BindInlineFeatures.java | 19 +- .../android/xmpp/model/blocking/Block.java | 0 .../xmpp/model/blocking/Blocklist.java | 0 .../android/xmpp/model/blocking/Item.java | 0 .../android/xmpp/model/blocking/Unblock.java | 0 .../xmpp/model/blocking/package-info.java | 0 .../xmpp/model/bookmark/Conference.java | 0 .../xmpp/model/bookmark/package-info.java | 0 .../xmpp/model/capabilties/Capabilities.java | 0 .../model/capabilties/EntityCapabilities.java | 0 .../model/capabilties/LegacyCapabilities.java | 0 .../android/xmpp/model/carbons/Enable.java | 0 .../android/xmpp/model/carbons/Received.java | 0 .../android/xmpp/model/carbons/Sent.java | 0 .../xmpp/model/carbons/package-info.java | 0 .../xmpp/model/correction/Replace.java | 0 .../android/xmpp/model/csi/Active.java | 0 .../android/xmpp/model/csi/Inactive.java | 0 .../android/xmpp/model/csi/package-info.java | 0 .../android/xmpp/model/data/Data.java | 0 .../android/xmpp/model/data/Field.java | 0 .../android/xmpp/model/data/Value.java | 0 .../android/xmpp/model/data/package-info.java | 0 .../android/xmpp/model/delay/Delay.java | 0 .../xmpp/model/disco/info/Feature.java | 0 .../xmpp/model/disco/info/Identity.java | 0 .../xmpp/model/disco/info/InfoQuery.java | 0 .../xmpp/model/disco/info/package-info.java | 0 .../android/xmpp/model/disco/items/Item.java | 0 .../xmpp/model/disco/items/ItemsQuery.java | 0 .../xmpp/model/disco/items/package-info.java | 0 .../android/xmpp/model/error/Condition.java | 0 .../android/xmpp/model/error/Error.java | 0 .../android/xmpp/model/error/Text.java | 0 .../android/xmpp/model/forward/Forwarded.java | 0 .../android/xmpp/model/jabber/Body.java | 0 .../android/xmpp/model/jabber/Thread.java | 0 .../xmpp/model/jabber/package-info.java | 0 .../android/xmpp/model/mam/Result.java | 0 .../android/xmpp/model/mam/package-info.java | 0 .../android/xmpp/model/markers/Displayed.java | 0 .../android/xmpp/model/markers/Markable.java | 0 .../android/xmpp/model/markers/Received.java | 0 .../xmpp/model/markers/package-info.java | 0 .../android/xmpp/model/muc/Affiliation.java | 0 .../android/xmpp/model/muc/Role.java | 0 .../xmpp/model/muc/user/MultiUserChat.java | 0 .../xmpp/model/muc/user/package-info.java | 0 .../android/xmpp/model/nick/Nick.java | 0 .../xmpp/model/occupant/OccupantId.java | 0 .../android/xmpp/model/oob/OutOfBandData.java | 0 .../android/xmpp/model/oob/URL.java | 0 .../android/xmpp/model/oob/package-info.java | 0 .../android/xmpp/model/pars/PreAuth.java | 0 .../android/xmpp/model/ping/Ping.java | 0 .../android/xmpp/model/pubsub/Item.java | 0 .../android/xmpp/model/pubsub/Items.java | 0 .../android/xmpp/model/pubsub/PubSub.java | 0 .../android/xmpp/model/pubsub/Publish.java | 0 .../xmpp/model/pubsub/PublishOptions.java | 0 .../android/xmpp/model/pubsub/Retract.java | 0 .../xmpp/model/pubsub/error/PubSubError.java | 0 .../xmpp/model/pubsub/error/package-info.java | 0 .../xmpp/model/pubsub/event/Event.java | 0 .../xmpp/model/pubsub/event/Purge.java | 0 .../xmpp/model/pubsub/event/Retract.java | 0 .../xmpp/model/pubsub/event/package-info.java | 0 .../xmpp/model/pubsub/owner/Configure.java | 0 .../xmpp/model/pubsub/owner/PubSubOwner.java | 0 .../xmpp/model/pubsub/owner/package-info.java | 0 .../xmpp/model/pubsub/package-info.java | 0 .../xmpp/model/reactions/Reaction.java | 0 .../xmpp/model/reactions/Reactions.java | 0 .../xmpp/model/reactions/package-info.java | 0 .../android/xmpp/model/receipts/Received.java | 0 .../android/xmpp/model/receipts/Request.java | 0 .../xmpp/model/receipts/package-info.java | 0 .../xmpp/model/register/Instructions.java | 0 .../android/xmpp/model/register/Password.java | 0 .../android/xmpp/model/register/Register.java | 0 .../android/xmpp/model/register/Remove.java | 0 .../android/xmpp/model/register/Username.java | 0 .../xmpp/model/register/package-info.java | 0 .../android/xmpp/model/reply/Reply.java | 0 .../android/xmpp/model/retract/Retract.java | 0 .../android/xmpp/model/retract/Retracted.java | 0 .../xmpp/model/retract/package-info.java | 0 .../android/xmpp/model/roster/Group.java | 0 .../android/xmpp/model/roster/Item.java | 0 .../android/xmpp/model/roster/Query.java | 0 .../xmpp/model/roster/package-info.java | 0 .../android/xmpp/model/sasl2/Inline.java | 12 + .../xmpp/model/sasl2/package-info.java | 5 + .../android/xmpp/model/sm/Ack.java | 0 .../android/xmpp/model/sm/Enable.java | 0 .../android/xmpp/model/sm/Request.java | 0 .../android/xmpp/model/sm/Resume.java | 0 .../android/xmpp/model/sm/package-info.java | 0 .../android/xmpp/model/stanza/Iq.java | 0 .../android/xmpp/model/stanza/Message.java | 0 .../android/xmpp/model/stanza/Presence.java | 0 .../android/xmpp/model/stanza/Stanza.java | 0 .../xmpp/model/stanza/package-info.java | 0 .../android/xmpp/model/state/Active.java | 0 .../model/state/ChatStateNotification.java | 0 .../android/xmpp/model/state/Composing.java | 0 .../android/xmpp/model/state/Gone.java | 0 .../android/xmpp/model/state/Inactive.java | 0 .../android/xmpp/model/state/Paused.java | 0 .../xmpp/model/state/package-info.java | 0 .../android/xmpp/model/streams/Features.java | 0 .../xmpp/model/streams/package-info.java | 0 .../android/xmpp/model/unique/OriginId.java | 0 .../android/xmpp/model/unique/StanzaId.java | 0 .../xmpp/model/unique/package-info.java | 0 .../android/xmpp/model/version/Version.java | 0 .../android/xmpp/processor/BindProcessor.java | 0 .../android/xmpp/processor/IqProcessor.java | 0 .../MessageAcknowledgeProcessor.java | 0 .../xmpp/processor/MessageProcessor.java | 0 .../xmpp/processor/PresenceProcessor.java | 0 .../android/xmpp/sasl/Anonymous.java | 0 .../android/xmpp/sasl/ChannelBinding.java | 0 .../xmpp/sasl/ChannelBindingMechanism.java | 0 .../android/xmpp/sasl/DigestMd5.java | 0 .../android/xmpp/sasl/External.java | 0 .../android/xmpp/sasl/HashedToken.java | 0 .../android/xmpp/sasl/HashedTokenSha256.java | 0 .../android/xmpp/sasl/HashedTokenSha512.java | 0 .../android/xmpp/sasl/Plain.java | 0 .../android/xmpp/sasl/SaslMechanism.java | 0 .../android/xmpp/sasl/ScramMechanism.java | 0 .../android/xmpp/sasl/ScramPlusMechanism.java | 0 .../android/xmpp/sasl/ScramSha1.java | 0 .../android/xmpp/sasl/ScramSha1Plus.java | 0 .../android/xmpp/sasl/ScramSha256.java | 0 .../android/xmpp/sasl/ScramSha256Plus.java | 0 .../android/xmpp/sasl/ScramSha512.java | 0 .../android/xmpp/sasl/ScramSha512Plus.java | 0 .../android/xmpp/sasl/Tokenizer.java | 0 .../src}/main/res/anim/slide_from_left.xml | 0 .../src}/main/res/anim/slide_from_right.xml | 0 .../src}/main/res/anim/slide_to_left.xml | 0 .../src}/main/res/anim/slide_to_right.xml | 0 .../res/drawable/ic_account_circle_24dp.xml | 0 .../main/res/drawable/ic_settings_24dp.xml | 0 .../src}/main/res/layout/activity_setup.xml | 0 .../main/res/layout/fragment_password.xml | 2 +- .../src}/main/res/layout/fragment_sign_in.xml | 3 +- .../src/main/res/menu/activity_setup.xml | 0 .../main/res/navigation/setup_navigation.xml | 0 .../src}/main/res/values-ar/strings.xml | 0 .../src}/main/res/values-bg/strings.xml | 0 .../src}/main/res/values-bn-rIN/strings.xml | 0 .../src}/main/res/values-ca/strings.xml | 0 .../src}/main/res/values-cs/strings.xml | 0 .../src}/main/res/values-da-rDK/strings.xml | 0 .../src}/main/res/values-de/strings.xml | 0 .../src}/main/res/values-el/strings.xml | 0 .../src}/main/res/values-es/strings.xml | 0 .../src}/main/res/values-eu/strings.xml | 0 .../src}/main/res/values-fa-rIR/strings.xml | 0 .../src}/main/res/values-fi/strings.xml | 0 .../src}/main/res/values-fr/strings.xml | 0 .../src}/main/res/values-gl/strings.xml | 0 .../src}/main/res/values-hi-rIN/strings.xml | 0 .../src}/main/res/values-hr/strings.xml | 0 .../src}/main/res/values-hu/strings.xml | 0 .../src}/main/res/values-id/strings.xml | 0 .../src}/main/res/values-it/strings.xml | 0 .../src}/main/res/values-iw/strings.xml | 0 .../src}/main/res/values-ja/strings.xml | 0 .../src}/main/res/values-ko/strings.xml | 0 .../src}/main/res/values-land/bools.xml | 0 app/src/main/res/values-land/dimens.xml | 5 + .../src}/main/res/values-ml/strings.xml | 0 .../src}/main/res/values-nb-rNO/strings.xml | 0 app/src/main/res/values-night/themes.xml | 31 + .../src}/main/res/values-nl/strings.xml | 0 .../src}/main/res/values-pl/strings.xml | 0 .../src}/main/res/values-pt-rBR/strings.xml | 0 .../src}/main/res/values-pt/strings.xml | 0 .../src}/main/res/values-ro-rRO/strings.xml | 0 .../src}/main/res/values-ru/strings.xml | 0 .../src}/main/res/values-sk/strings.xml | 0 .../src}/main/res/values-sq-rAL/strings.xml | 0 .../src}/main/res/values-sr/strings.xml | 0 .../src}/main/res/values-sv/strings.xml | 0 .../src/main/res/values-sw600dp/device.xml | 2 +- .../src}/main/res/values-szl/strings.xml | 0 .../src}/main/res/values-tr-rTR/strings.xml | 0 .../src}/main/res/values-uk/strings.xml | 0 .../src}/main/res/values-vi/strings.xml | 0 .../src}/main/res/values-zh-rCN/strings.xml | 0 .../src}/main/res/values-zh-rTW/strings.xml | 0 app/src/main/res/values/colors.xml | 64 + app/src/main/res/values/device.xml | 4 + app/src/main/res/values/dimens.xml | 5 + {src => app/src}/main/res/values/integers.xml | 0 {src => app/src}/main/res/values/strings.xml | 0 app/src/main/res/values/themes.xml | 31 + app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + .../res/drawable/ic_launcher_foreground.xml | 0 .../res/mipmap-anydpi-v26/new_launcher.xml | 0 .../mipmap-anydpi-v26/new_launcher_round.xml | 0 .../mipmap-hdpi/ic_launcher_background.png | Bin 0 -> 1752 bytes .../quicksy/res/mipmap-hdpi/new_launcher.png | Bin .../res/mipmap-hdpi/new_launcher_round.png | Bin .../mipmap-mdpi/ic_launcher_background.png | Bin 0 -> 1162 bytes .../quicksy/res/mipmap-mdpi/new_launcher.png | Bin .../res/mipmap-mdpi/new_launcher_round.png | Bin .../mipmap-xhdpi/ic_launcher_background.png | Bin 0 -> 2499 bytes .../quicksy/res/mipmap-xhdpi/new_launcher.png | Bin .../res/mipmap-xhdpi/new_launcher_round.png | Bin .../mipmap-xxhdpi/ic_launcher_background.png | Bin 0 -> 3882 bytes .../res/mipmap-xxhdpi/new_launcher.png | Bin .../res/mipmap-xxhdpi/new_launcher_round.png | Bin .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 0 -> 5359 bytes .../res/mipmap-xxxhdpi/new_launcher.png | Bin .../res/mipmap-xxxhdpi/new_launcher_round.png | Bin .../src}/quicksy/res/values-ar/strings.xml | 0 .../src}/quicksy/res/values-bg/strings.xml | 0 .../src}/quicksy/res/values-ca/strings.xml | 0 .../quicksy/res/values-da-rDK/strings.xml | 0 .../src}/quicksy/res/values-de/strings.xml | 0 .../src}/quicksy/res/values-el/strings.xml | 0 .../src}/quicksy/res/values-es/strings.xml | 0 .../src}/quicksy/res/values-fi/strings.xml | 0 .../src}/quicksy/res/values-fr/strings.xml | 0 .../src}/quicksy/res/values-gl/strings.xml | 0 .../src}/quicksy/res/values-hr/strings.xml | 0 .../src}/quicksy/res/values-hu/strings.xml | 0 .../src}/quicksy/res/values-id/strings.xml | 0 .../src}/quicksy/res/values-it/strings.xml | 0 .../src}/quicksy/res/values-ja/strings.xml | 0 .../src}/quicksy/res/values-nl/strings.xml | 0 .../src}/quicksy/res/values-pl/strings.xml | 0 .../quicksy/res/values-pt-rBR/strings.xml | 0 .../quicksy/res/values-ro-rRO/strings.xml | 0 .../src}/quicksy/res/values-ru/strings.xml | 0 .../src}/quicksy/res/values-sk/strings.xml | 0 .../src}/quicksy/res/values-sq/strings.xml | 0 .../src}/quicksy/res/values-sv/strings.xml | 0 .../src}/quicksy/res/values-szl/strings.xml | 0 .../quicksy/res/values-tr-rTR/strings.xml | 0 .../src}/quicksy/res/values-uk/strings.xml | 0 .../src}/quicksy/res/values-vi/strings.xml | 0 .../quicksy/res/values-zh-rCN/strings.xml | 0 .../quicksy/res/values-zh-rTW/strings.xml | 0 .../src}/quicksy/res/values/strings.xml | 0 .../android/xmpp/EntityCapabilitiesTest.java | 0 .../android/xmpp/PubSubTest.java | 0 .../android/xmpp/TimestampTest.java | 0 .../android/xmpp/XmlElementReaderTest.java | 0 build.gradle | 314 +- gradle.properties | 22 +- libs/annotation-processor/build.gradle | 21 - libs/annotation/build.gradle | 8 - proguard-rules.pro | 74 - settings.gradle | 7 +- src/conversations/AndroidManifest.xml | 80 - .../entities/AccountConfiguration.java | 50 - .../services/ImportBackupService.java | 394 -- .../services/QuickConversationsService.java | 38 - .../ui/EasyOnboardingInviteActivity.java | 151 - .../ui/ImportBackupActivity.java | 251 - .../conversations/ui/MagicCreateActivity.java | 162 - .../ui/ManageAccountActivity.java | 429 -- .../conversations/ui/PickServerActivity.java | 104 - .../ui/ShareViaAccountActivity.java | 90 - .../conversations/ui/WelcomeActivity.java | 236 - .../ui/adapter/BackupFileAdapter.java | 170 - .../utils/PhoneNumberUtilWrapper.java | 11 - .../utils/ProvisioningUtils.java | 43 - .../conversations/utils/SignupUtils.java | 77 - src/conversations/new_launcher-web.png | Bin 19483 -> 0 bytes .../res/drawable-hdpi/ic_notification.png | Bin 798 -> 0 bytes .../drawable-hdpi/ic_unarchive_white_24dp.png | Bin 258 -> 0 bytes .../res/drawable-hdpi/main_logo.png | Bin 23948 -> 0 bytes .../res/drawable-hdpi/splash_logo.png | Bin 16643 -> 0 bytes .../res/drawable-mdpi/ic_notification.png | Bin 554 -> 0 bytes .../drawable-mdpi/ic_unarchive_white_24dp.png | Bin 181 -> 0 bytes .../res/drawable-mdpi/main_logo.png | Bin 15309 -> 0 bytes .../res/drawable-mdpi/splash_logo.png | Bin 10492 -> 0 bytes .../res/drawable-xhdpi/ic_notification.png | Bin 1075 -> 0 bytes .../ic_unarchive_white_24dp.png | Bin 273 -> 0 bytes .../res/drawable-xhdpi/main_logo.png | Bin 33496 -> 0 bytes .../res/drawable-xhdpi/splash_logo.png | Bin 23030 -> 0 bytes .../res/drawable-xxhdpi/ic_notification.png | Bin 1619 -> 0 bytes .../ic_unarchive_white_24dp.png | Bin 391 -> 0 bytes .../res/drawable-xxhdpi/main_logo.png | Bin 52900 -> 0 bytes .../res/drawable-xxhdpi/splash_logo.png | Bin 36548 -> 0 bytes .../res/drawable-xxxhdpi/ic_notification.png | Bin 2117 -> 0 bytes .../ic_unarchive_white_24dp.png | Bin 503 -> 0 bytes .../res/drawable-xxxhdpi/main_logo.png | Bin 74056 -> 0 bytes .../res/drawable-xxxhdpi/splash_logo.png | Bin 50538 -> 0 bytes .../res/layout/activity_easy_invite.xml | 83 - .../res/layout/activity_import_backup.xml | 45 - .../res/layout/activity_pick_server.xml | 90 - .../res/layout/activity_welcome.xml | 91 - .../res/layout/dialog_enter_password.xml | 47 - src/conversations/res/layout/magic_create.xml | 101 - .../res/menu/easy_onboarding_invite.xml | 10 - src/conversations/res/menu/manageaccounts.xml | 32 - src/conversations/res/menu/welcome_menu.xml | 22 - .../utils/InstallReferrerUtils.java | 15 - .../utils/InstallReferrerUtils.java | 70 - .../services/EmojiInitializationService.java | 14 - .../services/PushManagementService.java | 33 - src/main/AndroidManifest.xml | 361 -- .../java/eu/siacs/conversations/Config.java | 214 - .../android/AbstractPhoneContact.java | 39 - .../android/JabberIdContact.java | 76 - .../crypto/DomainHostnameVerifier.java | 11 - .../conversations/crypto/OmemoSetting.java | 84 - .../crypto/PgpDecryptionService.java | 274 - .../siacs/conversations/crypto/PgpEngine.java | 291 - .../crypto/XmppDomainVerifier.java | 196 - .../crypto/axolotl/AxolotlService.java | 1775 ------ .../axolotl/BrokenSessionException.java | 18 - .../crypto/axolotl/CryptoFailedException.java | 16 - .../crypto/axolotl/FingerprintStatus.java | 184 - .../axolotl/NoSessionsCreatedException.java | 4 - .../NotEncryptedForThisDeviceException.java | 37 - .../axolotl/OnMessageCreatedCallback.java | 5 - .../axolotl/OutdatedSenderException.java | 8 - .../crypto/axolotl/SQLiteAxolotlStore.java | 477 -- .../crypto/axolotl/XmppAxolotlMessage.java | 317 -- .../crypto/axolotl/XmppAxolotlSession.java | 186 - .../conversations/crypto/sasl/Anonymous.java | 29 - .../crypto/sasl/ChannelBinding.java | 120 - .../crypto/sasl/ChannelBindingMechanism.java | 100 - .../conversations/crypto/sasl/DigestMd5.java | 114 - .../conversations/crypto/sasl/External.java | 32 - .../crypto/sasl/HashedToken.java | 190 - .../crypto/sasl/HashedTokenSha256.java | 23 - .../crypto/sasl/HashedTokenSha512.java | 23 - .../conversations/crypto/sasl/Plain.java | 38 - .../crypto/sasl/SaslMechanism.java | 196 - .../crypto/sasl/ScramMechanism.java | 317 -- .../crypto/sasl/ScramPlusMechanism.java | 23 - .../conversations/crypto/sasl/ScramSha1.java | 37 - .../crypto/sasl/ScramSha1Plus.java | 37 - .../crypto/sasl/ScramSha256.java | 40 - .../crypto/sasl/ScramSha256Plus.java | 37 - .../crypto/sasl/ScramSha512.java | 41 - .../crypto/sasl/ScramSha512Plus.java | 37 - .../conversations/crypto/sasl/Tokenizer.java | 77 - .../entities/AbstractEntity.java | 20 - .../siacs/conversations/entities/Account.java | 886 --- .../conversations/entities/Blockable.java | 11 - .../conversations/entities/Bookmark.java | 257 - .../siacs/conversations/entities/Contact.java | 606 -- .../conversations/entities/Conversation.java | 1133 ---- .../entities/Conversational.java | 48 - .../entities/DownloadableFile.java | 94 - .../eu/siacs/conversations/entities/Edit.java | 97 - .../entities/IndividualMessage.java | 123 - .../conversations/entities/ListItem.java | 37 - .../conversations/entities/MTMDecision.java | 33 - .../siacs/conversations/entities/Message.java | 1019 ---- .../conversations/entities/MucOptions.java | 917 --- .../conversations/entities/Presence.java | 101 - .../entities/PresenceTemplate.java | 81 - .../conversations/entities/Presences.java | 175 - .../conversations/entities/RawBlockable.java | 92 - .../conversations/entities/ReadByMarker.java | 171 - .../entities/ReceiptRequest.java | 75 - .../eu/siacs/conversations/entities/Room.java | 93 - .../siacs/conversations/entities/Roster.java | 98 - .../entities/RtpSessionStatus.java | 59 - .../entities/ServiceDiscoveryResult.java | 355 -- .../entities/StubConversation.java | 73 - .../conversations/entities/Transferable.java | 30 - .../entities/TransferablePlaceholder.java | 34 - .../generator/AbstractGenerator.java | 140 - .../conversations/generator/IqGenerator.java | 572 -- .../generator/MessageGenerator.java | 268 - .../generator/PresenceGenerator.java | 100 - .../siacs/conversations/http/AesGcmURL.java | 41 - .../http/HttpConnectionManager.java | 176 - .../http/HttpDownloadConnection.java | 484 -- .../http/HttpUploadConnection.java | 214 - .../eu/siacs/conversations/http/Method.java | 51 - .../conversations/http/SlotRequester.java | 154 - .../java/eu/siacs/conversations/http/URL.java | 32 - .../http/services/MuclumbusService.java | 50 - .../conversations/parser/AbstractParser.java | 210 - .../siacs/conversations/parser/IqParser.java | 484 -- .../conversations/parser/MessageParser.java | 1104 ---- .../conversations/parser/PresenceParser.java | 394 -- .../persistance/DatabaseBackend.java | 1685 ------ .../persistance/FileBackend.java | 1698 ------ .../persistance/OnPhoneContactsMerged.java | 5 - .../persistance/UnifiedPushDatabase.java | 262 - .../services/AbstractConnectionManager.java | 172 - .../AbstractQuickConversationsService.java | 35 - .../services/AppRTCAudioManager.java | 642 --- .../services/AppRTCBluetoothManager.java | 575 -- .../services/AppRTCProximitySensor.java | 171 - .../AttachFileToConversationRunnable.java | 189 - .../conversations/services/AvatarService.java | 678 --- .../services/BarcodeProvider.java | 210 - .../services/ChannelDiscoveryService.java | 298 - .../services/ContactChooserTargetService.java | 116 - .../conversations/services/EventReceiver.java | 40 - .../services/ExportBackupService.java | 408 -- .../conversations/services/MediaPlayer.java | 16 - .../services/MemorizingTrustManager.java | 746 --- .../services/MessageArchiveService.java | 676 --- .../services/MessageSearchTask.java | 156 - .../services/NotificationService.java | 1948 ------- .../services/ShortcutService.java | 166 - .../services/UnifiedPushBroker.java | 333 -- .../services/UnifiedPushDistributor.java | 152 - .../services/XmppConnectionService.java | 5016 ----------------- .../siacs/conversations/ui/AboutActivity.java | 32 - .../conversations/ui/AboutPreference.java | 35 - .../AbstractSearchableListItemActivity.java | 135 - .../conversations/ui/ActionBarActivity.java | 36 - .../conversations/ui/BlockContactDialog.java | 62 - .../conversations/ui/BlocklistActivity.java | 113 - .../ui/ChangePasswordActivity.java | 122 - .../ui/ChannelDiscoveryActivity.java | 288 - ...hooseAccountForProfilePictureActivity.java | 88 - .../ui/ChooseContactActivity.java | 415 -- .../ui/ConferenceDetailsActivity.java | 656 --- .../ui/ContactDetailsActivity.java | 581 -- .../ui/ConversationActivity.java | 25 - .../ui/ConversationFragment.java | 3611 ------------ .../ui/ConversationsActivity.java | 721 --- .../ui/ConversationsOverviewFragment.java | 425 -- .../ui/CreatePrivateGroupChatDialog.java | 82 - .../ui/CreatePublicChannelDialog.java | 295 - .../conversations/ui/EditAccountActivity.java | 1376 ----- .../conversations/ui/EnterJidDialog.java | 279 - .../ui/JoinConferenceDialog.java | 122 - .../conversations/ui/LocationActivity.java | 292 - .../ui/MediaBrowserActivity.java | 76 - .../conversations/ui/MemorizingActivity.java | 115 - .../conversations/ui/MucUsersActivity.java | 164 - .../siacs/conversations/ui/OmemoActivity.java | 210 - ...ublishGroupChatProfilePictureActivity.java | 153 - .../ui/PublishProfilePictureActivity.java | 308 - .../conversations/ui/RecordingActivity.java | 238 - .../conversations/ui/RtpSessionActivity.java | 1494 ----- .../siacs/conversations/ui/ScanActivity.java | 322 -- .../conversations/ui/SearchActivity.java | 296 - .../conversations/ui/SettingsActivity.java | 563 -- .../conversations/ui/SettingsFragment.java | 77 - .../ui/ShareLocationActivity.java | 243 - .../conversations/ui/ShareWithActivity.java | 221 - .../conversations/ui/ShortcutActivity.java | 76 - .../ui/ShowLocationActivity.java | 246 - .../ui/StartConversationActivity.java | 1360 ----- .../conversations/ui/TimePreference.java | 98 - .../conversations/ui/TrustKeysActivity.java | 457 -- .../eu/siacs/conversations/ui/UiCallback.java | 11 - .../ui/UiInformableCallback.java | 5 - .../conversations/ui/UriHandlerActivity.java | 333 -- .../siacs/conversations/ui/XmppActivity.java | 1010 ---- .../siacs/conversations/ui/XmppFragment.java | 47 - .../ui/adapter/AccountAdapter.java | 99 - .../adapter/ChannelSearchResultAdapter.java | 109 - .../ui/adapter/ConversationAdapter.java | 317 -- .../ui/adapter/KnownHostsAdapter.java | 90 - .../ui/adapter/ListItemAdapter.java | 122 - .../ui/adapter/MediaAdapter.java | 246 - .../ui/adapter/MediaPreviewAdapter.java | 206 - .../ui/adapter/MessageAdapter.java | 929 --- .../ui/adapter/PresenceTemplateAdapter.java | 93 - .../conversations/ui/adapter/UserAdapter.java | 140 - .../ui/adapter/UserPreviewAdapter.java | 70 - .../ui/forms/FormBooleanFieldWrapper.java | 80 - .../ui/forms/FormFieldFactory.java | 30 - .../ui/forms/FormFieldWrapper.java | 94 - .../ui/forms/FormJidSingleFieldWrapper.java | 43 - .../ui/forms/FormTextFieldWrapper.java | 97 - .../conversations/ui/forms/FormWrapper.java | 72 - .../ui/interfaces/OnAvatarPublication.java | 39 - .../ui/interfaces/OnBackendConnected.java | 36 - .../ui/interfaces/OnConversationArchived.java | 37 - .../ui/interfaces/OnConversationRead.java | 36 - .../ui/interfaces/OnConversationSelected.java | 37 - .../OnConversationsListItemUpdated.java | 34 - .../ui/interfaces/OnMediaLoaded.java | 10 - .../interfaces/OnSearchResultsAvailable.java | 40 - .../conversations/ui/service/AudioPlayer.java | 456 -- .../ui/service/CameraManager.java | 322 -- .../conversations/ui/text/DividerSpan.java | 29 - .../conversations/ui/text/FixedURLSpan.java | 89 - .../conversations/ui/text/QuoteSpan.java | 59 - .../conversations/ui/util/ActionBarUtil.java | 88 - .../conversations/ui/util/ActivityResult.java | 50 - .../conversations/ui/util/Attachment.java | 202 - .../ui/util/AvatarWorkerTask.java | 125 - .../conversations/ui/util/ChangeWatcher.java | 50 - .../ui/util/ConversationMenuConfigurator.java | 127 - .../conversations/ui/util/DateSeparator.java | 49 - .../ui/util/DelayedHintHelper.java | 49 - .../util/EditMessageActionModeCallback.java | 98 - .../conversations/ui/util/GridManager.java | 78 - .../conversations/ui/util/JidDialog.java | 24 - .../conversations/ui/util/ListViewUtils.java | 57 - .../conversations/ui/util/LocationHelper.java | 69 - .../ui/util/MainThreadExecutor.java | 37 - .../ui/util/MenuDoubleTabUtil.java | 54 - .../ui/util/MucConfiguration.java | 133 - .../ui/util/MucDetailsContextMenuHelper.java | 229 - .../conversations/ui/util/MyLinkify.java | 159 - .../ui/util/PendingActionHelper.java | 29 - .../ui/util/PresenceSelector.java | 166 - .../conversations/ui/util/QuoteHelper.java | 106 - .../conversations/ui/util/Rationals.java | 26 - .../conversations/ui/util/ScrollState.java | 72 - .../ui/util/SendButtonAction.java | 85 - .../conversations/ui/util/SendButtonTool.java | 190 - .../conversations/ui/util/SettingsUtils.java | 20 - .../conversations/ui/util/ShareUtil.java | 148 - .../ui/util/SoftKeyboardUtils.java | 71 - .../ui/util/StyledAttributes.java | 59 - .../conversations/ui/util/UriHelper.java | 30 - .../siacs/conversations/ui/util/ViewUtil.java | 60 - .../ui/widget/ClickableMovementMethod.java | 42 - .../ui/widget/DisabledActionModeCallback.java | 56 - .../conversations/ui/widget/EditMessage.java | 216 - .../widget/ImmediateAutoCompleteTextView.java | 49 - .../siacs/conversations/ui/widget/Marker.java | 52 - .../conversations/ui/widget/MyLocation.java | 53 - .../conversations/ui/widget/ScannerView.java | 157 - .../ui/widget/SquareFrameLayout.java | 25 - .../ui/widget/SurfaceViewRenderer.java | 48 - .../ui/widget/SwipeRefreshListFragment.java | 148 - .../ui/widget/TextInputEditText.java | 49 - .../ui/widget/UnreadCountCustomView.java | 77 - .../conversations/utils/AccountUtils.java | 130 - .../utils/AndroidUsingExecLowPriority.java | 92 - .../conversations/utils/AppRTCUtils.java | 55 - .../siacs/conversations/utils/AsciiArmor.java | 34 - .../conversations/utils/BackupFileHeader.java | 84 - .../conversations/utils/Cancellable.java | 34 - .../utils/CharSequenceUtils.java | 86 - .../siacs/conversations/utils/Checksum.java | 60 - .../conversations/utils/Compatibility.java | 180 - .../utils/ConversationsFileObserver.java | 138 - .../conversations/utils/CryptoHelper.java | 287 - .../conversations/utils/CursorUtils.java | 22 - .../utils/EasyOnboardingInvite.java | 93 - .../siacs/conversations/utils/Emoticons.java | 310 - .../conversations/utils/ExceptionHandler.java | 36 - .../conversations/utils/ExceptionHelper.java | 113 - .../siacs/conversations/utils/FileUtils.java | 171 - .../utils/FileWriterException.java | 14 - .../siacs/conversations/utils/FtsUtils.java | 122 - .../siacs/conversations/utils/GeoHelper.java | 148 - .../java/eu/siacs/conversations/utils/IP.java | 30 - .../conversations/utils/ImStyleParser.java | 159 - .../utils/IrregularUnicodeDetector.java | 276 - .../siacs/conversations/utils/JidHelper.java | 67 - .../conversations/utils/LanguageUtils.java | 28 - .../conversations/utils/LocationProvider.java | 75 - .../conversations/utils/MessageUtils.java | 116 - .../siacs/conversations/utils/MimeUtils.java | 637 --- .../utils/NickValidityChecker.java | 32 - .../utils/OnPhoneContactsLoadedListener.java | 9 - .../siacs/conversations/utils/Patterns.java | 513 -- .../conversations/utils/PermissionUtils.java | 94 - .../conversations/utils/PhoneHelper.java | 62 - .../conversations/utils/QuickLoader.java | 62 - .../eu/siacs/conversations/utils/Random.java | 13 - .../ReplacingSerialSingleThreadExecutor.java | 24 - .../utils/ReplacingTaskManager.java | 57 - .../siacs/conversations/utils/SSLSockets.java | 148 - .../utils/SerialSingleThreadExecutor.java | 64 - .../conversations/utils/StringUtils.java | 50 - .../conversations/utils/StylingHelper.java | 255 - .../conversations/utils/TLSSocketFactory.java | 66 - .../conversations/utils/ThemeHelper.java | 117 - .../conversations/utils/TimeFrameUtils.java | 102 - .../conversations/utils/TorServiceUtils.java | 52 - .../utils/TranscoderStrategies.java | 41 - .../siacs/conversations/utils/UIHelper.java | 614 -- .../conversations/utils/WakeLockHelper.java | 59 - .../conversations/utils/WeakReferenceSet.java | 26 - .../conversations/utils/XEP0392Helper.java | 31 - .../siacs/conversations/utils/XmlHelper.java | 31 - .../eu/siacs/conversations/utils/XmppUri.java | 264 - .../eu/siacs/conversations/xml/Element.java | 234 - .../conversations/xml/LocalizedContent.java | 59 - .../eu/siacs/conversations/xml/Namespace.java | 107 - .../java/eu/siacs/conversations/xml/Tag.java | 113 - .../eu/siacs/conversations/xml/TagWriter.java | 127 - .../conversations/xml/XmlElementReader.java | 19 - .../eu/siacs/conversations/xml/XmlReader.java | 133 - .../siacs/conversations/xmpp/InvalidJid.java | 157 - .../xmpp/IqResponseException.java | 8 - .../java/eu/siacs/conversations/xmpp/Jid.java | 145 - .../xmpp/OnAdvancedStreamFeaturesLoaded.java | 7 - .../conversations/xmpp/OnBindListener.java | 7 - .../xmpp/OnContactStatusChanged.java | 7 - .../xmpp/OnIqPacketReceived.java | 8 - .../xmpp/OnKeyStatusUpdated.java | 7 - .../xmpp/OnMessageAcknowledged.java | 7 - .../xmpp/OnMessagePacketReceived.java | 8 - .../xmpp/OnPresencePacketReceived.java | 8 - .../conversations/xmpp/OnStatusChanged.java | 7 - .../conversations/xmpp/OnUpdateBlocklist.java | 13 - .../conversations/xmpp/PacketReceived.java | 5 - .../siacs/conversations/xmpp/WrappedJid.java | 130 - .../conversations/xmpp/XmppConnection.java | 2798 --------- .../xmpp/chatstate/ChatState.java | 32 - .../siacs/conversations/xmpp/forms/Data.java | 125 - .../siacs/conversations/xmpp/forms/Field.java | 78 - .../xmpp/jingle/AbstractJingleConnection.java | 145 - .../xmpp/jingle/ContentAddition.java | 88 - .../xmpp/jingle/DirectConnectionUtils.java | 64 - .../xmpp/jingle/JingleCandidate.java | 152 - .../xmpp/jingle/JingleConnectionManager.java | 1056 ---- .../jingle/JingleFileTransferConnection.java | 1255 ----- .../xmpp/jingle/JingleInBandTransport.java | 265 - .../xmpp/jingle/JingleRtpConnection.java | 2797 --------- .../xmpp/jingle/JingleSocks5Transport.java | 305 - .../xmpp/jingle/JingleTransport.java | 15 - .../conversations/xmpp/jingle/Media.java | 35 - .../xmpp/jingle/MediaBuilder.java | 48 - .../xmpp/jingle/OmemoVerification.java | 83 - .../jingle/OmemoVerifiedRtpContentMap.java | 19 - .../OnFileTransmissionStatusChanged.java | 9 - .../xmpp/jingle/OnJinglePacketReceived.java | 9 - .../xmpp/jingle/OnPrimaryCandidateFound.java | 5 - .../xmpp/jingle/OnTransportConnected.java | 7 - .../xmpp/jingle/OngoingRtpSession.java | 10 - .../xmpp/jingle/RtpCapability.java | 95 - .../xmpp/jingle/RtpContentMap.java | 490 -- .../xmpp/jingle/RtpEndUserState.java | 20 - .../xmpp/jingle/SessionDescription.java | 417 -- .../jingle/SessionDescriptionBuilder.java | 42 - .../xmpp/jingle/ToneManager.java | 214 - .../xmpp/jingle/TrackWrapper.java | 76 - .../xmpp/jingle/VideoSourceWrapper.java | 187 - .../xmpp/jingle/WebRTCWrapper.java | 758 --- .../xmpp/jingle/stanzas/Content.java | 175 - .../stanzas/FileTransferDescription.java | 91 - .../jingle/stanzas/GenericDescription.java | 20 - .../jingle/stanzas/GenericTransportInfo.java | 20 - .../xmpp/jingle/stanzas/Group.java | 64 - .../xmpp/jingle/stanzas/IbbTransportInfo.java | 46 - .../jingle/stanzas/IceUdpTransportInfo.java | 411 -- .../xmpp/jingle/stanzas/JinglePacket.java | 166 - .../OmemoVerifiedIceUdpTransportInfo.java | 27 - .../xmpp/jingle/stanzas/Proceed.java | 31 - .../xmpp/jingle/stanzas/Propose.java | 41 - .../xmpp/jingle/stanzas/Reason.java | 68 - .../xmpp/jingle/stanzas/RtpDescription.java | 661 --- .../xmpp/jingle/stanzas/S5BTransportInfo.java | 50 - .../conversations/xmpp/mam/MamReference.java | 69 - .../siacs/conversations/xmpp/pep/Avatar.java | 102 - .../xmpp/pep/PublishOptions.java | 46 - .../AbstractAcknowledgeableStanza.java | 42 - .../xmpp/stanzas/AbstractStanza.java | 53 - .../conversations/xmpp/stanzas/IqPacket.java | 75 - .../xmpp/stanzas/MessagePacket.java | 100 - .../xmpp/stanzas/PresencePacket.java | 8 - .../xmpp/stanzas/csi/ActivePacket.java | 11 - .../xmpp/stanzas/csi/InactivePacket.java | 11 - .../xmpp/stanzas/streammgmt/AckPacket.java | 14 - .../xmpp/stanzas/streammgmt/EnablePacket.java | 14 - .../stanzas/streammgmt/RequestPacket.java | 13 - .../xmpp/stanzas/streammgmt/ResumePacket.java | 15 - .../drawable-hdpi/baseline_tour_black_48.png | Bin 369 -> 0 bytes .../drawable-hdpi/baseline_tour_white_48.png | Bin 372 -> 0 bytes .../res/drawable-hdpi/date_bubble_grey.9.png | Bin 657 -> 0 bytes .../res/drawable-hdpi/date_bubble_white.9.png | Bin 689 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 337 -> 0 bytes .../res/drawable-hdpi/ic_action_reply.png | Bin 462 -> 0 bytes .../res/drawable-hdpi/ic_add_white_24dp.png | Bin 223 -> 0 bytes .../drawable-hdpi/ic_android_black_48dp.png | Bin 519 -> 0 bytes .../drawable-hdpi/ic_android_white_48dp.png | Bin 536 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 251 -> 0 bytes .../drawable-hdpi/ic_archive_black_48dp.png | Bin 377 -> 0 bytes .../drawable-hdpi/ic_archive_white_24dp.png | Bin 247 -> 0 bytes .../drawable-hdpi/ic_archive_white_48dp.png | Bin 390 -> 0 bytes .../res/drawable-hdpi/ic_attach_camera.png | Bin 1235 -> 0 bytes .../drawable-hdpi/ic_attach_camera_white.png | Bin 636 -> 0 bytes .../res/drawable-hdpi/ic_attach_document.png | Bin 1060 -> 0 bytes .../ic_attach_document_white.png | Bin 393 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 452 -> 0 bytes .../res/drawable-hdpi/ic_attach_location.png | Bin 1280 -> 0 bytes .../ic_attach_location_white.png | Bin 665 -> 0 bytes .../res/drawable-hdpi/ic_attach_photo.png | Bin 1117 -> 0 bytes .../drawable-hdpi/ic_attach_photo_white.png | Bin 463 -> 0 bytes .../res/drawable-hdpi/ic_attach_record.png | Bin 1233 -> 0 bytes .../drawable-hdpi/ic_attach_record_white.png | Bin 614 -> 0 bytes .../res/drawable-hdpi/ic_attach_videocam.png | Bin 277 -> 0 bytes .../ic_attach_videocam_white.png | Bin 376 -> 0 bytes .../drawable-hdpi/ic_autorenew_white_24dp.png | Bin 489 -> 0 bytes .../drawable-hdpi/ic_backup_black_48dp.png | Bin 561 -> 0 bytes .../drawable-hdpi/ic_backup_white_48dp.png | Bin 589 -> 0 bytes .../res/drawable-hdpi/ic_block_white_24dp.png | Bin 606 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 420 -> 0 bytes .../res/drawable-hdpi/ic_book_black_48dp.png | Bin 278 -> 0 bytes .../res/drawable-hdpi/ic_book_white_48dp.png | Bin 283 -> 0 bytes .../res/drawable-hdpi/ic_call_black_24dp.png | Bin 326 -> 0 bytes .../drawable-hdpi/ic_call_end_white_48dp.png | Bin 553 -> 0 bytes .../drawable-hdpi/ic_call_made_black_18dp.png | Bin 159 -> 0 bytes .../drawable-hdpi/ic_call_made_white_18dp.png | Bin 174 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 179 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 180 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 180 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 191 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 159 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 169 -> 0 bytes .../res/drawable-hdpi/ic_call_white_24dp.png | Bin 340 -> 0 bytes .../res/drawable-hdpi/ic_call_white_48dp.png | Bin 597 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 364 -> 0 bytes .../drawable-hdpi/ic_cancel_black_24dp.png | Bin 397 -> 0 bytes .../drawable-hdpi/ic_cancel_white_24dp.png | Bin 510 -> 0 bytes .../res/drawable-hdpi/ic_chat_white_24dp.png | Bin 168 -> 0 bytes .../res/drawable-hdpi/ic_clear_white_48dp.png | Bin 347 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 353 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 195 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 203 -> 0 bytes .../res/drawable-hdpi/ic_crop_white_24dp.png | Bin 302 -> 0 bytes .../drawable-hdpi/ic_delete_black_24dp.png | Bin 155 -> 0 bytes .../drawable-hdpi/ic_delete_white_24dp.png | Bin 246 -> 0 bytes .../ic_description_black_48dp.png | Bin 279 -> 0 bytes .../ic_description_white_48dp.png | Bin 295 -> 0 bytes .../ic_directions_black_24dp.png | Bin 233 -> 0 bytes .../ic_directions_white_24dp.png | Bin 252 -> 0 bytes .../res/drawable-hdpi/ic_done_black_18dp.png | Bin 149 -> 0 bytes .../res/drawable-hdpi/ic_done_white_18dp.png | Bin 157 -> 0 bytes .../drawable-hdpi/ic_drafts_white_24dp.png | Bin 392 -> 0 bytes .../res/drawable-hdpi/ic_edit_black_24dp.png | Bin 202 -> 0 bytes .../res/drawable-hdpi/ic_edit_white_24dp.png | Bin 339 -> 0 bytes .../res/drawable-hdpi/ic_error_white_24dp.png | Bin 324 -> 0 bytes .../res/drawable-hdpi/ic_event_black_48dp.png | Bin 245 -> 0 bytes .../res/drawable-hdpi/ic_event_white_48dp.png | Bin 254 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 277 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 717 -> 0 bytes .../drawable-hdpi/ic_forward_white_24dp.png | Bin 139 -> 0 bytes .../drawable-hdpi/ic_gps_fixed_black_24dp.png | Bin 549 -> 0 bytes .../drawable-hdpi/ic_gps_fixed_white_24dp.png | Bin 546 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 472 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 468 -> 0 bytes .../drawable-hdpi/ic_group_add_white_24dp.png | Bin 396 -> 0 bytes .../res/drawable-hdpi/ic_group_white_24dp.png | Bin 417 -> 0 bytes .../drawable-hdpi/ic_headset_black_24dp.png | Bin 349 -> 0 bytes .../drawable-hdpi/ic_headset_black_48dp.png | Bin 586 -> 0 bytes .../drawable-hdpi/ic_headset_white_48dp.png | Bin 610 -> 0 bytes .../res/drawable-hdpi/ic_help_black_48dp.png | Bin 834 -> 0 bytes .../res/drawable-hdpi/ic_help_white_24dp.png | Bin 476 -> 0 bytes .../res/drawable-hdpi/ic_help_white_48dp.png | Bin 842 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 159 -> 0 bytes .../res/drawable-hdpi/ic_image_black_48dp.png | Bin 424 -> 0 bytes .../res/drawable-hdpi/ic_image_white_48dp.png | Bin 450 -> 0 bytes .../res/drawable-hdpi/ic_input_white_24dp.png | Bin 226 -> 0 bytes .../drawable-hdpi/ic_link_off_white_24dp.png | Bin 415 -> 0 bytes .../res/drawable-hdpi/ic_link_white_24dp.png | Bin 430 -> 0 bytes .../res/drawable-hdpi/ic_lock_black_18dp.png | Bin 275 -> 0 bytes .../drawable-hdpi/ic_lock_open_white_24dp.png | Bin 400 -> 0 bytes .../res/drawable-hdpi/ic_lock_white_18dp.png | Bin 281 -> 0 bytes .../res/drawable-hdpi/ic_lock_white_24dp.png | Bin 399 -> 0 bytes .../res/drawable-hdpi/ic_mic_black_24dp.png | Bin 344 -> 0 bytes .../res/drawable-hdpi/ic_mic_black_48dp.png | Bin 581 -> 0 bytes .../drawable-hdpi/ic_mic_off_black_24dp.png | Bin 402 -> 0 bytes .../res/drawable-hdpi/ic_mic_white_48dp.png | Bin 606 -> 0 bytes .../drawable-hdpi/ic_mode_edit_black_18dp.png | Bin 264 -> 0 bytes .../drawable-hdpi/ic_mode_edit_white_18dp.png | Bin 299 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 384 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 395 -> 0 bytes .../ic_no_results_background_black.png | Bin 3757 -> 0 bytes .../ic_no_results_background_white.png | Bin 4625 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 236 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 295 -> 0 bytes .../ic_notifications_none_white80.png | Bin 574 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 285 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 390 -> 0 bytes .../ic_notifications_off_white80.png | Bin 762 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 385 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 308 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 610 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 309 -> 0 bytes .../ic_notifications_white80.png | Bin 471 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 234 -> 0 bytes .../res/drawable-hdpi/ic_pause_black_36dp.png | Bin 123 -> 0 bytes .../res/drawable-hdpi/ic_pause_white_36dp.png | Bin 124 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 383 -> 0 bytes .../drawable-hdpi/ic_person_black_48dp.png | Bin 428 -> 0 bytes .../drawable-hdpi/ic_person_white_48dp.png | Bin 440 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 374 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 393 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 483 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 236 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 242 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 666 -> 0 bytes src/main/res/drawable-hdpi/ic_profile.png | Bin 999 -> 0 bytes .../drawable-hdpi/ic_public_white_24dp.png | Bin 504 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 461 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 192 -> 0 bytes .../drawable-hdpi/ic_refresh_black_24dp.png | Bin 391 -> 0 bytes .../drawable-hdpi/ic_refresh_white_24dp.png | Bin 387 -> 0 bytes .../drawable-hdpi/ic_replay_white_48dp.png | Bin 675 -> 0 bytes .../res/drawable-hdpi/ic_reply_white_24dp.png | Bin 253 -> 0 bytes .../res/drawable-hdpi/ic_room_black_48dp.png | Bin 683 -> 0 bytes .../res/drawable-hdpi/ic_room_white_24dp.png | Bin 494 -> 0 bytes .../res/drawable-hdpi/ic_room_white_48dp.png | Bin 675 -> 0 bytes .../res/drawable-hdpi/ic_save_black_24dp.png | Bin 240 -> 0 bytes .../res/drawable-hdpi/ic_save_white_24dp.png | Bin 247 -> 0 bytes .../ic_search_background_black.png | Bin 3220 -> 0 bytes .../ic_search_background_white.png | Bin 4077 -> 0 bytes .../drawable-hdpi/ic_search_white_24dp.png | Bin 504 -> 0 bytes .../res/drawable-hdpi/ic_send_cancel_away.png | Bin 1396 -> 0 bytes .../res/drawable-hdpi/ic_send_cancel_dnd.png | Bin 1587 -> 0 bytes .../drawable-hdpi/ic_send_cancel_offline.png | Bin 1206 -> 0 bytes .../ic_send_cancel_offline_dark.png | Bin 1163 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 1205 -> 0 bytes .../drawable-hdpi/ic_send_cancel_online.png | Bin 1550 -> 0 bytes .../drawable-hdpi/ic_send_file_offline.png | Bin 412 -> 0 bytes .../ic_send_file_offline_white.png | Bin 356 -> 0 bytes .../drawable-hdpi/ic_send_location_away.png | Bin 1159 -> 0 bytes .../drawable-hdpi/ic_send_location_dnd.png | Bin 1333 -> 0 bytes .../ic_send_location_offline.png | Bin 971 -> 0 bytes .../ic_send_location_offline_dark.png | Bin 945 -> 0 bytes .../ic_send_location_offline_white.png | Bin 1010 -> 0 bytes .../drawable-hdpi/ic_send_location_online.png | Bin 1345 -> 0 bytes .../res/drawable-hdpi/ic_send_photo_away.png | Bin 1203 -> 0 bytes .../res/drawable-hdpi/ic_send_photo_dnd.png | Bin 1383 -> 0 bytes .../drawable-hdpi/ic_send_photo_offline.png | Bin 987 -> 0 bytes .../ic_send_photo_offline_dark.png | Bin 978 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 1033 -> 0 bytes .../drawable-hdpi/ic_send_photo_online.png | Bin 1402 -> 0 bytes .../drawable-hdpi/ic_send_picture_away.png | Bin 790 -> 0 bytes .../res/drawable-hdpi/ic_send_picture_dnd.png | Bin 884 -> 0 bytes .../drawable-hdpi/ic_send_picture_offline.png | Bin 657 -> 0 bytes .../ic_send_picture_offline_dark.png | Bin 639 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 675 -> 0 bytes .../drawable-hdpi/ic_send_picture_online.png | Bin 887 -> 0 bytes .../res/drawable-hdpi/ic_send_text_away.png | Bin 982 -> 0 bytes .../res/drawable-hdpi/ic_send_text_dnd.png | Bin 1128 -> 0 bytes .../drawable-hdpi/ic_send_text_offline.png | Bin 800 -> 0 bytes .../ic_send_text_offline_dark.png | Bin 765 -> 0 bytes .../ic_send_text_offline_white.png | Bin 844 -> 0 bytes .../res/drawable-hdpi/ic_send_text_online.png | Bin 1121 -> 0 bytes .../drawable-hdpi/ic_send_videocam_away.png | Bin 487 -> 0 bytes .../drawable-hdpi/ic_send_videocam_dnd.png | Bin 540 -> 0 bytes .../ic_send_videocam_offline.png | Bin 435 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 447 -> 0 bytes .../drawable-hdpi/ic_send_videocam_online.png | Bin 540 -> 0 bytes .../res/drawable-hdpi/ic_send_voice_away.png | Bin 1017 -> 0 bytes .../res/drawable-hdpi/ic_send_voice_dnd.png | Bin 1161 -> 0 bytes .../drawable-hdpi/ic_send_voice_offline.png | Bin 844 -> 0 bytes .../ic_send_voice_offline_dark.png | Bin 824 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 878 -> 0 bytes .../drawable-hdpi/ic_send_voice_online.png | Bin 1170 -> 0 bytes .../drawable-hdpi/ic_settings_black_24dp.png | Bin 453 -> 0 bytes .../drawable-hdpi/ic_settings_white_24dp.png | Bin 460 -> 0 bytes .../res/drawable-hdpi/ic_share_white_24dp.png | Bin 506 -> 0 bytes .../res/drawable-hdpi/ic_star_black_24dp.png | Bin 369 -> 0 bytes .../res/drawable-hdpi/ic_star_white_24dp.png | Bin 370 -> 0 bytes .../drawable-hdpi/ic_stat_alert_warning.png | Bin 757 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 620 -> 0 bytes .../drawable-hdpi/ic_verified_fingerprint.png | Bin 1324 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 320 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 329 -> 0 bytes .../drawable-hdpi/ic_videocam_black_24dp.png | Bin 169 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 260 -> 0 bytes .../drawable-hdpi/ic_videocam_white_24dp.png | Bin 173 -> 0 bytes .../drawable-hdpi/ic_voicemail_white_24dp.png | Bin 478 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 407 -> 0 bytes .../drawable-hdpi/ic_volume_up_black_24dp.png | Bin 364 -> 0 bytes .../drawable-hdpi/ic_warning_white_24dp.png | Bin 421 -> 0 bytes .../drawable-hdpi/ic_warning_white_48dp.png | Bin 714 -> 0 bytes src/main/res/drawable-hdpi/ic_wear_reply.png | Bin 518 -> 0 bytes src/main/res/drawable-hdpi/marker.png | Bin 3591 -> 0 bytes .../message_bubble_received.9.png | Bin 772 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 773 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 750 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 776 -> 0 bytes .../message_bubble_received_white.9.png | Bin 779 -> 0 bytes .../drawable-hdpi/message_bubble_sent.9.png | Bin 687 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 707 -> 0 bytes src/main/res/drawable-hdpi/open_pdf_black.png | Bin 1499 -> 0 bytes src/main/res/drawable-hdpi/open_pdf_white.png | Bin 1569 -> 0 bytes src/main/res/drawable-hdpi/play_gif_black.png | Bin 761 -> 0 bytes src/main/res/drawable-hdpi/play_gif_white.png | Bin 791 -> 0 bytes .../res/drawable-hdpi/play_video_black.png | Bin 4799 -> 0 bytes .../res/drawable-hdpi/play_video_white.png | Bin 5087 -> 0 bytes .../drawable-mdpi/baseline_tour_black_48.png | Bin 273 -> 0 bytes .../drawable-mdpi/baseline_tour_white_48.png | Bin 277 -> 0 bytes .../res/drawable-mdpi/date_bubble_grey.9.png | Bin 514 -> 0 bytes .../res/drawable-mdpi/date_bubble_white.9.png | Bin 525 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 290 -> 0 bytes .../res/drawable-mdpi/ic_action_reply.png | Bin 343 -> 0 bytes .../res/drawable-mdpi/ic_add_white_24dp.png | Bin 174 -> 0 bytes .../drawable-mdpi/ic_android_black_48dp.png | Bin 343 -> 0 bytes .../drawable-mdpi/ic_android_white_48dp.png | Bin 356 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 214 -> 0 bytes .../drawable-mdpi/ic_archive_black_48dp.png | Bin 261 -> 0 bytes .../drawable-mdpi/ic_archive_white_24dp.png | Bin 181 -> 0 bytes .../drawable-mdpi/ic_archive_white_48dp.png | Bin 267 -> 0 bytes .../res/drawable-mdpi/ic_attach_camera.png | Bin 1114 -> 0 bytes .../drawable-mdpi/ic_attach_camera_white.png | Bin 453 -> 0 bytes .../res/drawable-mdpi/ic_attach_document.png | Bin 1021 -> 0 bytes .../ic_attach_document_white.png | Bin 322 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 332 -> 0 bytes .../res/drawable-mdpi/ic_attach_location.png | Bin 1146 -> 0 bytes .../ic_attach_location_white.png | Bin 486 -> 0 bytes .../res/drawable-mdpi/ic_attach_photo.png | Bin 1066 -> 0 bytes .../drawable-mdpi/ic_attach_photo_white.png | Bin 395 -> 0 bytes .../res/drawable-mdpi/ic_attach_record.png | Bin 1115 -> 0 bytes .../drawable-mdpi/ic_attach_record_white.png | Bin 451 -> 0 bytes .../res/drawable-mdpi/ic_attach_videocam.png | Bin 215 -> 0 bytes .../ic_attach_videocam_white.png | Bin 308 -> 0 bytes .../drawable-mdpi/ic_autorenew_white_24dp.png | Bin 353 -> 0 bytes .../drawable-mdpi/ic_backup_black_48dp.png | Bin 386 -> 0 bytes .../drawable-mdpi/ic_backup_white_48dp.png | Bin 405 -> 0 bytes .../res/drawable-mdpi/ic_block_white_24dp.png | Bin 428 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 283 -> 0 bytes .../res/drawable-mdpi/ic_book_black_48dp.png | Bin 201 -> 0 bytes .../res/drawable-mdpi/ic_book_white_48dp.png | Bin 197 -> 0 bytes .../res/drawable-mdpi/ic_call_black_24dp.png | Bin 244 -> 0 bytes .../drawable-mdpi/ic_call_end_white_48dp.png | Bin 389 -> 0 bytes .../drawable-mdpi/ic_call_made_black_18dp.png | Bin 132 -> 0 bytes .../drawable-mdpi/ic_call_made_white_18dp.png | Bin 135 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 141 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 134 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 136 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 147 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 133 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 140 -> 0 bytes .../res/drawable-mdpi/ic_call_white_24dp.png | Bin 246 -> 0 bytes .../res/drawable-mdpi/ic_call_white_48dp.png | Bin 420 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 240 -> 0 bytes .../drawable-mdpi/ic_cancel_black_24dp.png | Bin 291 -> 0 bytes .../drawable-mdpi/ic_cancel_white_24dp.png | Bin 393 -> 0 bytes .../res/drawable-mdpi/ic_chat_white_24dp.png | Bin 133 -> 0 bytes .../res/drawable-mdpi/ic_clear_white_48dp.png | Bin 257 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 242 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 130 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 134 -> 0 bytes .../res/drawable-mdpi/ic_crop_white_24dp.png | Bin 214 -> 0 bytes .../drawable-mdpi/ic_delete_black_24dp.png | Bin 111 -> 0 bytes .../drawable-mdpi/ic_delete_white_24dp.png | Bin 197 -> 0 bytes .../ic_description_black_48dp.png | Bin 202 -> 0 bytes .../ic_description_white_48dp.png | Bin 214 -> 0 bytes .../ic_directions_black_24dp.png | Bin 181 -> 0 bytes .../ic_directions_white_24dp.png | Bin 191 -> 0 bytes .../res/drawable-mdpi/ic_done_black_18dp.png | Bin 138 -> 0 bytes .../res/drawable-mdpi/ic_done_white_18dp.png | Bin 144 -> 0 bytes .../drawable-mdpi/ic_drafts_white_24dp.png | Bin 284 -> 0 bytes .../res/drawable-mdpi/ic_edit_black_24dp.png | Bin 160 -> 0 bytes .../res/drawable-mdpi/ic_edit_white_24dp.png | Bin 272 -> 0 bytes .../res/drawable-mdpi/ic_error_white_24dp.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/ic_event_black_48dp.png | Bin 188 -> 0 bytes .../res/drawable-mdpi/ic_event_white_48dp.png | Bin 193 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 210 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 472 -> 0 bytes .../drawable-mdpi/ic_forward_white_24dp.png | Bin 117 -> 0 bytes .../drawable-mdpi/ic_gps_fixed_black_24dp.png | Bin 341 -> 0 bytes .../drawable-mdpi/ic_gps_fixed_white_24dp.png | Bin 350 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 295 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 298 -> 0 bytes .../drawable-mdpi/ic_group_add_white_24dp.png | Bin 313 -> 0 bytes .../res/drawable-mdpi/ic_group_white_24dp.png | Bin 296 -> 0 bytes .../drawable-mdpi/ic_headset_black_24dp.png | Bin 230 -> 0 bytes .../drawable-mdpi/ic_headset_black_48dp.png | Bin 412 -> 0 bytes .../drawable-mdpi/ic_headset_white_48dp.png | Bin 433 -> 0 bytes .../res/drawable-mdpi/ic_help_black_48dp.png | Bin 579 -> 0 bytes .../res/drawable-mdpi/ic_help_white_24dp.png | Bin 304 -> 0 bytes .../res/drawable-mdpi/ic_help_white_48dp.png | Bin 585 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 135 -> 0 bytes .../res/drawable-mdpi/ic_image_black_48dp.png | Bin 295 -> 0 bytes .../res/drawable-mdpi/ic_image_white_48dp.png | Bin 304 -> 0 bytes .../res/drawable-mdpi/ic_input_white_24dp.png | Bin 148 -> 0 bytes .../drawable-mdpi/ic_link_off_white_24dp.png | Bin 273 -> 0 bytes .../res/drawable-mdpi/ic_link_white_24dp.png | Bin 297 -> 0 bytes .../res/drawable-mdpi/ic_lock_black_18dp.png | Bin 206 -> 0 bytes .../drawable-mdpi/ic_lock_open_white_24dp.png | Bin 290 -> 0 bytes .../res/drawable-mdpi/ic_lock_white_18dp.png | Bin 211 -> 0 bytes .../res/drawable-mdpi/ic_lock_white_24dp.png | Bin 296 -> 0 bytes .../res/drawable-mdpi/ic_mic_black_24dp.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/ic_mic_black_48dp.png | Bin 418 -> 0 bytes .../drawable-mdpi/ic_mic_off_black_24dp.png | Bin 271 -> 0 bytes .../res/drawable-mdpi/ic_mic_white_48dp.png | Bin 436 -> 0 bytes .../drawable-mdpi/ic_mode_edit_black_18dp.png | Bin 229 -> 0 bytes .../drawable-mdpi/ic_mode_edit_white_18dp.png | Bin 249 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 277 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 287 -> 0 bytes .../ic_no_results_background_black.png | Bin 2359 -> 0 bytes .../ic_no_results_background_white.png | Bin 3019 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 179 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 206 -> 0 bytes .../ic_notifications_none_white80.png | Bin 409 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 207 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 290 -> 0 bytes .../ic_notifications_off_white80.png | Bin 505 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 279 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 235 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 466 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 235 -> 0 bytes .../ic_notifications_white80.png | Bin 369 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 177 -> 0 bytes .../res/drawable-mdpi/ic_pause_black_36dp.png | Bin 102 -> 0 bytes .../res/drawable-mdpi/ic_pause_white_36dp.png | Bin 105 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 289 -> 0 bytes .../drawable-mdpi/ic_person_black_48dp.png | Bin 307 -> 0 bytes .../drawable-mdpi/ic_person_white_48dp.png | Bin 312 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 253 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 261 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 325 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 194 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 195 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 464 -> 0 bytes src/main/res/drawable-mdpi/ic_profile.png | Bin 622 -> 0 bytes .../drawable-mdpi/ic_public_white_24dp.png | Bin 339 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 309 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 137 -> 0 bytes .../drawable-mdpi/ic_refresh_black_24dp.png | Bin 249 -> 0 bytes .../drawable-mdpi/ic_refresh_white_24dp.png | Bin 254 -> 0 bytes .../drawable-mdpi/ic_replay_white_48dp.png | Bin 457 -> 0 bytes .../res/drawable-mdpi/ic_reply_white_24dp.png | Bin 186 -> 0 bytes .../res/drawable-mdpi/ic_room_black_48dp.png | Bin 457 -> 0 bytes .../res/drawable-mdpi/ic_room_white_24dp.png | Bin 362 -> 0 bytes .../res/drawable-mdpi/ic_room_white_48dp.png | Bin 456 -> 0 bytes .../res/drawable-mdpi/ic_save_black_24dp.png | Bin 167 -> 0 bytes .../res/drawable-mdpi/ic_save_white_24dp.png | Bin 168 -> 0 bytes .../ic_search_background_black.png | Bin 2080 -> 0 bytes .../ic_search_background_white.png | Bin 2344 -> 0 bytes .../drawable-mdpi/ic_search_white_24dp.png | Bin 346 -> 0 bytes .../res/drawable-mdpi/ic_send_cancel_away.png | Bin 901 -> 0 bytes .../res/drawable-mdpi/ic_send_cancel_dnd.png | Bin 1025 -> 0 bytes .../drawable-mdpi/ic_send_cancel_offline.png | Bin 837 -> 0 bytes .../ic_send_cancel_offline_dark.png | Bin 786 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 799 -> 0 bytes .../drawable-mdpi/ic_send_cancel_online.png | Bin 1029 -> 0 bytes .../drawable-mdpi/ic_send_file_offline.png | Bin 282 -> 0 bytes .../ic_send_file_offline_white.png | Bin 248 -> 0 bytes .../drawable-mdpi/ic_send_location_away.png | Bin 784 -> 0 bytes .../drawable-mdpi/ic_send_location_dnd.png | Bin 917 -> 0 bytes .../ic_send_location_offline.png | Bin 673 -> 0 bytes .../ic_send_location_offline_dark.png | Bin 681 -> 0 bytes .../ic_send_location_offline_white.png | Bin 699 -> 0 bytes .../drawable-mdpi/ic_send_location_online.png | Bin 928 -> 0 bytes .../res/drawable-mdpi/ic_send_photo_away.png | Bin 776 -> 0 bytes .../res/drawable-mdpi/ic_send_photo_dnd.png | Bin 915 -> 0 bytes .../drawable-mdpi/ic_send_photo_offline.png | Bin 666 -> 0 bytes .../ic_send_photo_offline_dark.png | Bin 649 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 683 -> 0 bytes .../drawable-mdpi/ic_send_photo_online.png | Bin 917 -> 0 bytes .../drawable-mdpi/ic_send_picture_away.png | Bin 512 -> 0 bytes .../res/drawable-mdpi/ic_send_picture_dnd.png | Bin 585 -> 0 bytes .../drawable-mdpi/ic_send_picture_offline.png | Bin 456 -> 0 bytes .../ic_send_picture_offline_dark.png | Bin 436 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 475 -> 0 bytes .../drawable-mdpi/ic_send_picture_online.png | Bin 594 -> 0 bytes .../res/drawable-mdpi/ic_send_text_away.png | Bin 677 -> 0 bytes .../res/drawable-mdpi/ic_send_text_dnd.png | Bin 781 -> 0 bytes .../drawable-mdpi/ic_send_text_offline.png | Bin 542 -> 0 bytes .../ic_send_text_offline_dark.png | Bin 557 -> 0 bytes .../ic_send_text_offline_white.png | Bin 583 -> 0 bytes .../res/drawable-mdpi/ic_send_text_online.png | Bin 781 -> 0 bytes .../drawable-mdpi/ic_send_videocam_away.png | Bin 365 -> 0 bytes .../drawable-mdpi/ic_send_videocam_dnd.png | Bin 397 -> 0 bytes .../ic_send_videocam_offline.png | Bin 341 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 340 -> 0 bytes .../drawable-mdpi/ic_send_videocam_online.png | Bin 403 -> 0 bytes .../res/drawable-mdpi/ic_send_voice_away.png | Bin 679 -> 0 bytes .../res/drawable-mdpi/ic_send_voice_dnd.png | Bin 795 -> 0 bytes .../drawable-mdpi/ic_send_voice_offline.png | Bin 575 -> 0 bytes .../ic_send_voice_offline_dark.png | Bin 576 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 606 -> 0 bytes .../drawable-mdpi/ic_send_voice_online.png | Bin 796 -> 0 bytes .../drawable-mdpi/ic_settings_black_24dp.png | Bin 322 -> 0 bytes .../drawable-mdpi/ic_settings_white_24dp.png | Bin 326 -> 0 bytes .../res/drawable-mdpi/ic_share_white_24dp.png | Bin 361 -> 0 bytes .../res/drawable-mdpi/ic_star_black_24dp.png | Bin 263 -> 0 bytes .../res/drawable-mdpi/ic_star_white_24dp.png | Bin 271 -> 0 bytes .../drawable-mdpi/ic_stat_alert_warning.png | Bin 425 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 392 -> 0 bytes .../drawable-mdpi/ic_verified_fingerprint.png | Bin 1022 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 238 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 241 -> 0 bytes .../drawable-mdpi/ic_videocam_black_24dp.png | Bin 127 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 193 -> 0 bytes .../drawable-mdpi/ic_videocam_white_24dp.png | Bin 131 -> 0 bytes .../drawable-mdpi/ic_voicemail_white_24dp.png | Bin 221 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 279 -> 0 bytes .../drawable-mdpi/ic_volume_up_black_24dp.png | Bin 235 -> 0 bytes .../drawable-mdpi/ic_warning_white_24dp.png | Bin 328 -> 0 bytes .../drawable-mdpi/ic_warning_white_48dp.png | Bin 364 -> 0 bytes src/main/res/drawable-mdpi/ic_wear_reply.png | Bin 429 -> 0 bytes src/main/res/drawable-mdpi/marker.png | Bin 2211 -> 0 bytes .../message_bubble_received.9.png | Bin 596 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 617 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 595 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 599 -> 0 bytes .../message_bubble_received_white.9.png | Bin 610 -> 0 bytes .../drawable-mdpi/message_bubble_sent.9.png | Bin 558 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 568 -> 0 bytes src/main/res/drawable-mdpi/open_pdf_black.png | Bin 1168 -> 0 bytes src/main/res/drawable-mdpi/open_pdf_white.png | Bin 1259 -> 0 bytes src/main/res/drawable-mdpi/play_gif_black.png | Bin 584 -> 0 bytes src/main/res/drawable-mdpi/play_gif_white.png | Bin 612 -> 0 bytes .../res/drawable-mdpi/play_video_black.png | Bin 3204 -> 0 bytes .../res/drawable-mdpi/play_video_white.png | Bin 3383 -> 0 bytes .../drawable-xhdpi/baseline_tour_black_48.png | Bin 451 -> 0 bytes .../drawable-xhdpi/baseline_tour_white_48.png | Bin 451 -> 0 bytes .../res/drawable-xhdpi/date_bubble_grey.9.png | Bin 739 -> 0 bytes .../drawable-xhdpi/date_bubble_white.9.png | Bin 769 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 431 -> 0 bytes .../res/drawable-xhdpi/ic_action_reply.png | Bin 561 -> 0 bytes .../res/drawable-xhdpi/ic_add_white_24dp.png | Bin 198 -> 0 bytes .../drawable-xhdpi/ic_android_black_48dp.png | Bin 641 -> 0 bytes .../drawable-xhdpi/ic_android_white_48dp.png | Bin 665 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 285 -> 0 bytes .../drawable-xhdpi/ic_archive_black_48dp.png | Bin 483 -> 0 bytes .../drawable-xhdpi/ic_archive_white_24dp.png | Bin 267 -> 0 bytes .../drawable-xhdpi/ic_archive_white_48dp.png | Bin 489 -> 0 bytes .../res/drawable-xhdpi/ic_attach_camera.png | Bin 1313 -> 0 bytes .../drawable-xhdpi/ic_attach_camera_white.png | Bin 757 -> 0 bytes .../res/drawable-xhdpi/ic_attach_document.png | Bin 1097 -> 0 bytes .../ic_attach_document_white.png | Bin 427 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 576 -> 0 bytes .../res/drawable-xhdpi/ic_attach_location.png | Bin 1372 -> 0 bytes .../ic_attach_location_white.png | Bin 766 -> 0 bytes .../res/drawable-xhdpi/ic_attach_photo.png | Bin 1169 -> 0 bytes .../drawable-xhdpi/ic_attach_photo_white.png | Bin 543 -> 0 bytes .../res/drawable-xhdpi/ic_attach_record.png | Bin 1310 -> 0 bytes .../drawable-xhdpi/ic_attach_record_white.png | Bin 689 -> 0 bytes .../res/drawable-xhdpi/ic_attach_videocam.png | Bin 276 -> 0 bytes .../ic_attach_videocam_white.png | Bin 378 -> 0 bytes .../ic_autorenew_white_24dp.png | Bin 604 -> 0 bytes .../drawable-xhdpi/ic_backup_black_48dp.png | Bin 733 -> 0 bytes .../drawable-xhdpi/ic_backup_white_48dp.png | Bin 770 -> 0 bytes .../drawable-xhdpi/ic_block_white_24dp.png | Bin 796 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 479 -> 0 bytes .../res/drawable-xhdpi/ic_book_black_48dp.png | Bin 340 -> 0 bytes .../res/drawable-xhdpi/ic_book_white_48dp.png | Bin 350 -> 0 bytes .../res/drawable-xhdpi/ic_call_black_24dp.png | Bin 408 -> 0 bytes .../drawable-xhdpi/ic_call_end_white_48dp.png | Bin 712 -> 0 bytes .../ic_call_made_black_18dp.png | Bin 174 -> 0 bytes .../ic_call_made_white_18dp.png | Bin 189 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 201 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 188 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 193 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 215 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 175 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 189 -> 0 bytes .../res/drawable-xhdpi/ic_call_white_24dp.png | Bin 420 -> 0 bytes .../res/drawable-xhdpi/ic_call_white_48dp.png | Bin 778 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 446 -> 0 bytes .../drawable-xhdpi/ic_cancel_black_24dp.png | Bin 517 -> 0 bytes .../drawable-xhdpi/ic_cancel_white_24dp.png | Bin 645 -> 0 bytes .../res/drawable-xhdpi/ic_chat_white_24dp.png | Bin 205 -> 0 bytes .../drawable-xhdpi/ic_clear_white_48dp.png | Bin 436 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 417 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 180 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 188 -> 0 bytes .../res/drawable-xhdpi/ic_crop_white_24dp.png | Bin 272 -> 0 bytes .../drawable-xhdpi/ic_delete_black_24dp.png | Bin 148 -> 0 bytes .../drawable-xhdpi/ic_delete_white_24dp.png | Bin 270 -> 0 bytes .../ic_description_black_48dp.png | Bin 355 -> 0 bytes .../ic_description_white_48dp.png | Bin 378 -> 0 bytes .../ic_directions_black_24dp.png | Bin 274 -> 0 bytes .../ic_directions_white_24dp.png | Bin 307 -> 0 bytes .../res/drawable-xhdpi/ic_done_black_18dp.png | Bin 177 -> 0 bytes .../res/drawable-xhdpi/ic_done_white_18dp.png | Bin 188 -> 0 bytes .../drawable-xhdpi/ic_drafts_white_24dp.png | Bin 509 -> 0 bytes .../res/drawable-xhdpi/ic_edit_black_24dp.png | Bin 222 -> 0 bytes .../res/drawable-xhdpi/ic_edit_white_24dp.png | Bin 378 -> 0 bytes .../drawable-xhdpi/ic_error_white_24dp.png | Bin 431 -> 0 bytes .../drawable-xhdpi/ic_event_black_48dp.png | Bin 316 -> 0 bytes .../drawable-xhdpi/ic_event_white_48dp.png | Bin 326 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 282 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 915 -> 0 bytes .../drawable-xhdpi/ic_forward_white_24dp.png | Bin 159 -> 0 bytes .../ic_gps_fixed_black_24dp.png | Bin 660 -> 0 bytes .../ic_gps_fixed_white_24dp.png | Bin 687 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 561 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 577 -> 0 bytes .../ic_group_add_white_24dp.png | Bin 484 -> 0 bytes .../drawable-xhdpi/ic_group_white_24dp.png | Bin 464 -> 0 bytes .../drawable-xhdpi/ic_headset_black_24dp.png | Bin 412 -> 0 bytes .../drawable-xhdpi/ic_headset_black_48dp.png | Bin 786 -> 0 bytes .../drawable-xhdpi/ic_headset_white_48dp.png | Bin 838 -> 0 bytes .../res/drawable-xhdpi/ic_help_black_48dp.png | Bin 1122 -> 0 bytes .../res/drawable-xhdpi/ic_help_white_24dp.png | Bin 585 -> 0 bytes .../res/drawable-xhdpi/ic_help_white_48dp.png | Bin 1132 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 174 -> 0 bytes .../drawable-xhdpi/ic_image_black_48dp.png | Bin 548 -> 0 bytes .../drawable-xhdpi/ic_image_white_48dp.png | Bin 570 -> 0 bytes .../drawable-xhdpi/ic_input_white_24dp.png | Bin 219 -> 0 bytes .../drawable-xhdpi/ic_link_off_white_24dp.png | Bin 472 -> 0 bytes .../res/drawable-xhdpi/ic_link_white_24dp.png | Bin 494 -> 0 bytes .../res/drawable-xhdpi/ic_lock_black_18dp.png | Bin 308 -> 0 bytes .../ic_lock_open_white_24dp.png | Bin 513 -> 0 bytes .../res/drawable-xhdpi/ic_lock_white_18dp.png | Bin 309 -> 0 bytes .../res/drawable-xhdpi/ic_lock_white_24dp.png | Bin 465 -> 0 bytes .../res/drawable-xhdpi/ic_mic_black_24dp.png | Bin 418 -> 0 bytes .../res/drawable-xhdpi/ic_mic_black_48dp.png | Bin 773 -> 0 bytes .../drawable-xhdpi/ic_mic_off_black_24dp.png | Bin 454 -> 0 bytes .../res/drawable-xhdpi/ic_mic_white_48dp.png | Bin 819 -> 0 bytes .../ic_mode_edit_black_18dp.png | Bin 291 -> 0 bytes .../ic_mode_edit_white_18dp.png | Bin 351 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 480 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 498 -> 0 bytes .../ic_no_results_background_black.png | Bin 5368 -> 0 bytes .../ic_no_results_background_white.png | Bin 6250 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 272 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 349 -> 0 bytes .../ic_notifications_none_white80.png | Bin 706 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 344 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 492 -> 0 bytes .../ic_notifications_off_white80.png | Bin 1014 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 493 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 351 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 745 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 351 -> 0 bytes .../ic_notifications_white80.png | Bin 583 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 265 -> 0 bytes .../drawable-xhdpi/ic_pause_black_36dp.png | Bin 109 -> 0 bytes .../drawable-xhdpi/ic_pause_white_36dp.png | Bin 92 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 423 -> 0 bytes .../drawable-xhdpi/ic_person_black_48dp.png | Bin 565 -> 0 bytes .../drawable-xhdpi/ic_person_white_48dp.png | Bin 577 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 477 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 483 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 601 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 265 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 283 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 883 -> 0 bytes src/main/res/drawable-xhdpi/ic_profile.png | Bin 1374 -> 0 bytes .../drawable-xhdpi/ic_public_white_24dp.png | Bin 661 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 444 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 195 -> 0 bytes .../drawable-xhdpi/ic_refresh_black_24dp.png | Bin 506 -> 0 bytes .../drawable-xhdpi/ic_refresh_white_24dp.png | Bin 509 -> 0 bytes .../drawable-xhdpi/ic_replay_white_48dp.png | Bin 908 -> 0 bytes .../drawable-xhdpi/ic_reply_white_24dp.png | Bin 306 -> 0 bytes .../res/drawable-xhdpi/ic_room_black_48dp.png | Bin 868 -> 0 bytes .../res/drawable-xhdpi/ic_room_white_24dp.png | Bin 587 -> 0 bytes .../res/drawable-xhdpi/ic_room_white_48dp.png | Bin 869 -> 0 bytes .../res/drawable-xhdpi/ic_save_black_24dp.png | Bin 264 -> 0 bytes .../res/drawable-xhdpi/ic_save_white_24dp.png | Bin 273 -> 0 bytes .../ic_search_background_black.png | Bin 4465 -> 0 bytes .../ic_search_background_white.png | Bin 5477 -> 0 bytes .../drawable-xhdpi/ic_search_white_24dp.png | Bin 591 -> 0 bytes .../drawable-xhdpi/ic_send_cancel_away.png | Bin 1724 -> 0 bytes .../res/drawable-xhdpi/ic_send_cancel_dnd.png | Bin 1958 -> 0 bytes .../drawable-xhdpi/ic_send_cancel_offline.png | Bin 1519 -> 0 bytes .../ic_send_cancel_offline_dark.png | Bin 1458 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 1494 -> 0 bytes .../drawable-xhdpi/ic_send_cancel_online.png | Bin 1972 -> 0 bytes .../drawable-xhdpi/ic_send_file_offline.png | Bin 429 -> 0 bytes .../ic_send_file_offline_white.png | Bin 380 -> 0 bytes .../drawable-xhdpi/ic_send_location_away.png | Bin 1507 -> 0 bytes .../drawable-xhdpi/ic_send_location_dnd.png | Bin 1753 -> 0 bytes .../ic_send_location_offline.png | Bin 1278 -> 0 bytes .../ic_send_location_offline_dark.png | Bin 1250 -> 0 bytes .../ic_send_location_offline_white.png | Bin 1311 -> 0 bytes .../ic_send_location_online.png | Bin 1773 -> 0 bytes .../res/drawable-xhdpi/ic_send_photo_away.png | Bin 1516 -> 0 bytes .../res/drawable-xhdpi/ic_send_photo_dnd.png | Bin 1756 -> 0 bytes .../drawable-xhdpi/ic_send_photo_offline.png | Bin 1247 -> 0 bytes .../ic_send_photo_offline_dark.png | Bin 1191 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 1290 -> 0 bytes .../drawable-xhdpi/ic_send_photo_online.png | Bin 1758 -> 0 bytes .../drawable-xhdpi/ic_send_picture_away.png | Bin 899 -> 0 bytes .../drawable-xhdpi/ic_send_picture_dnd.png | Bin 1016 -> 0 bytes .../ic_send_picture_offline.png | Bin 799 -> 0 bytes .../ic_send_picture_offline_dark.png | Bin 752 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 828 -> 0 bytes .../drawable-xhdpi/ic_send_picture_online.png | Bin 1006 -> 0 bytes .../res/drawable-xhdpi/ic_send_text_away.png | Bin 1270 -> 0 bytes .../res/drawable-xhdpi/ic_send_text_dnd.png | Bin 1430 -> 0 bytes .../drawable-xhdpi/ic_send_text_offline.png | Bin 1007 -> 0 bytes .../ic_send_text_offline_dark.png | Bin 958 -> 0 bytes .../ic_send_text_offline_white.png | Bin 1079 -> 0 bytes .../drawable-xhdpi/ic_send_text_online.png | Bin 1429 -> 0 bytes .../drawable-xhdpi/ic_send_videocam_away.png | Bin 502 -> 0 bytes .../drawable-xhdpi/ic_send_videocam_dnd.png | Bin 542 -> 0 bytes .../ic_send_videocam_offline.png | Bin 479 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 470 -> 0 bytes .../ic_send_videocam_online.png | Bin 539 -> 0 bytes .../res/drawable-xhdpi/ic_send_voice_away.png | Bin 1257 -> 0 bytes .../res/drawable-xhdpi/ic_send_voice_dnd.png | Bin 1419 -> 0 bytes .../drawable-xhdpi/ic_send_voice_offline.png | Bin 1075 -> 0 bytes .../ic_send_voice_offline_dark.png | Bin 1034 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 1109 -> 0 bytes .../drawable-xhdpi/ic_send_voice_online.png | Bin 1433 -> 0 bytes .../drawable-xhdpi/ic_settings_black_24dp.png | Bin 557 -> 0 bytes .../drawable-xhdpi/ic_settings_white_24dp.png | Bin 562 -> 0 bytes .../drawable-xhdpi/ic_share_white_24dp.png | Bin 625 -> 0 bytes .../res/drawable-xhdpi/ic_star_black_24dp.png | Bin 467 -> 0 bytes .../res/drawable-xhdpi/ic_star_white_24dp.png | Bin 475 -> 0 bytes .../drawable-xhdpi/ic_stat_alert_warning.png | Bin 1175 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 972 -> 0 bytes .../ic_verified_fingerprint.png | Bin 1551 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 390 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 407 -> 0 bytes .../drawable-xhdpi/ic_videocam_black_24dp.png | Bin 171 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 274 -> 0 bytes .../drawable-xhdpi/ic_videocam_white_24dp.png | Bin 178 -> 0 bytes .../ic_voicemail_white_24dp.png | Bin 487 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 493 -> 0 bytes .../ic_volume_up_black_24dp.png | Bin 434 -> 0 bytes .../drawable-xhdpi/ic_warning_white_24dp.png | Bin 460 -> 0 bytes .../drawable-xhdpi/ic_warning_white_48dp.png | Bin 590 -> 0 bytes src/main/res/drawable-xhdpi/ic_wear_reply.png | Bin 564 -> 0 bytes src/main/res/drawable-xhdpi/marker.png | Bin 4815 -> 0 bytes .../message_bubble_received.9.png | Bin 936 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 926 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 915 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 916 -> 0 bytes .../message_bubble_received_white.9.png | Bin 935 -> 0 bytes .../drawable-xhdpi/message_bubble_sent.9.png | Bin 857 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 842 -> 0 bytes .../res/drawable-xhdpi/open_pdf_black.png | Bin 2247 -> 0 bytes .../res/drawable-xhdpi/open_pdf_white.png | Bin 2431 -> 0 bytes .../res/drawable-xhdpi/play_gif_black.png | Bin 1052 -> 0 bytes .../res/drawable-xhdpi/play_gif_white.png | Bin 1110 -> 0 bytes .../res/drawable-xhdpi/play_video_black.png | Bin 6572 -> 0 bytes .../res/drawable-xhdpi/play_video_white.png | Bin 6953 -> 0 bytes .../baseline_tour_black_48.png | Bin 662 -> 0 bytes .../baseline_tour_white_48.png | Bin 662 -> 0 bytes .../drawable-xxhdpi/date_bubble_grey.9.png | Bin 1072 -> 0 bytes .../drawable-xxhdpi/date_bubble_white.9.png | Bin 1127 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 578 -> 0 bytes .../res/drawable-xxhdpi/ic_action_reply.png | Bin 775 -> 0 bytes .../res/drawable-xxhdpi/ic_add_white_24dp.png | Bin 222 -> 0 bytes .../drawable-xxhdpi/ic_android_black_48dp.png | Bin 975 -> 0 bytes .../drawable-xxhdpi/ic_android_white_48dp.png | Bin 1012 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 355 -> 0 bytes .../drawable-xxhdpi/ic_archive_black_48dp.png | Bin 718 -> 0 bytes .../drawable-xxhdpi/ic_archive_white_24dp.png | Bin 390 -> 0 bytes .../drawable-xxhdpi/ic_archive_white_48dp.png | Bin 738 -> 0 bytes .../res/drawable-xxhdpi/ic_attach_camera.png | Bin 1552 -> 0 bytes .../ic_attach_camera_white.png | Bin 1085 -> 0 bytes .../drawable-xxhdpi/ic_attach_document.png | Bin 1183 -> 0 bytes .../ic_attach_document_white.png | Bin 518 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 870 -> 0 bytes .../drawable-xxhdpi/ic_attach_location.png | Bin 1628 -> 0 bytes .../ic_attach_location_white.png | Bin 1117 -> 0 bytes .../res/drawable-xxhdpi/ic_attach_photo.png | Bin 1324 -> 0 bytes .../drawable-xxhdpi/ic_attach_photo_white.png | Bin 716 -> 0 bytes .../res/drawable-xxhdpi/ic_attach_record.png | Bin 1494 -> 0 bytes .../ic_attach_record_white.png | Bin 913 -> 0 bytes .../drawable-xxhdpi/ic_attach_videocam.png | Bin 373 -> 0 bytes .../ic_attach_videocam_white.png | Bin 469 -> 0 bytes .../ic_autorenew_white_24dp.png | Bin 869 -> 0 bytes .../drawable-xxhdpi/ic_backup_black_48dp.png | Bin 1116 -> 0 bytes .../drawable-xxhdpi/ic_backup_white_48dp.png | Bin 1177 -> 0 bytes .../drawable-xxhdpi/ic_block_white_24dp.png | Bin 1194 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 724 -> 0 bytes .../drawable-xxhdpi/ic_book_black_48dp.png | Bin 516 -> 0 bytes .../drawable-xxhdpi/ic_book_white_48dp.png | Bin 532 -> 0 bytes .../drawable-xxhdpi/ic_call_black_24dp.png | Bin 574 -> 0 bytes .../ic_call_end_white_48dp.png | Bin 1039 -> 0 bytes .../ic_call_made_black_18dp.png | Bin 202 -> 0 bytes .../ic_call_made_white_18dp.png | Bin 225 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 247 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 235 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 235 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 263 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 202 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 228 -> 0 bytes .../drawable-xxhdpi/ic_call_white_24dp.png | Bin 597 -> 0 bytes .../drawable-xxhdpi/ic_call_white_48dp.png | Bin 1134 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 666 -> 0 bytes .../drawable-xxhdpi/ic_cancel_black_24dp.png | Bin 721 -> 0 bytes .../drawable-xxhdpi/ic_cancel_white_24dp.png | Bin 893 -> 0 bytes .../drawable-xxhdpi/ic_chat_white_24dp.png | Bin 270 -> 0 bytes .../drawable-xxhdpi/ic_clear_white_48dp.png | Bin 524 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 610 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 258 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 266 -> 0 bytes .../drawable-xxhdpi/ic_crop_white_24dp.png | Bin 326 -> 0 bytes .../drawable-xxhdpi/ic_delete_black_24dp.png | Bin 191 -> 0 bytes .../drawable-xxhdpi/ic_delete_white_24dp.png | Bin 338 -> 0 bytes .../ic_description_black_48dp.png | Bin 514 -> 0 bytes .../ic_description_white_48dp.png | Bin 563 -> 0 bytes .../ic_directions_black_24dp.png | Bin 393 -> 0 bytes .../ic_directions_white_24dp.png | Bin 444 -> 0 bytes .../drawable-xxhdpi/ic_done_black_18dp.png | Bin 199 -> 0 bytes .../drawable-xxhdpi/ic_done_white_18dp.png | Bin 217 -> 0 bytes .../drawable-xxhdpi/ic_drafts_white_24dp.png | Bin 717 -> 0 bytes .../drawable-xxhdpi/ic_edit_black_24dp.png | Bin 269 -> 0 bytes .../drawable-xxhdpi/ic_edit_white_24dp.png | Bin 490 -> 0 bytes .../drawable-xxhdpi/ic_error_white_24dp.png | Bin 614 -> 0 bytes .../drawable-xxhdpi/ic_event_black_48dp.png | Bin 484 -> 0 bytes .../drawable-xxhdpi/ic_event_white_48dp.png | Bin 513 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 351 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 1340 -> 0 bytes .../drawable-xxhdpi/ic_forward_white_24dp.png | Bin 204 -> 0 bytes .../ic_gps_fixed_black_24dp.png | Bin 976 -> 0 bytes .../ic_gps_fixed_white_24dp.png | Bin 1012 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 803 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 830 -> 0 bytes .../ic_group_add_white_24dp.png | Bin 722 -> 0 bytes .../drawable-xxhdpi/ic_group_white_24dp.png | Bin 599 -> 0 bytes .../drawable-xxhdpi/ic_headset_black_24dp.png | Bin 586 -> 0 bytes .../drawable-xxhdpi/ic_headset_black_48dp.png | Bin 1183 -> 0 bytes .../drawable-xxhdpi/ic_headset_white_48dp.png | Bin 1246 -> 0 bytes .../drawable-xxhdpi/ic_help_black_48dp.png | Bin 1652 -> 0 bytes .../drawable-xxhdpi/ic_help_white_24dp.png | Bin 842 -> 0 bytes .../drawable-xxhdpi/ic_help_white_48dp.png | Bin 1677 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 255 -> 0 bytes .../drawable-xxhdpi/ic_image_black_48dp.png | Bin 807 -> 0 bytes .../drawable-xxhdpi/ic_image_white_48dp.png | Bin 859 -> 0 bytes .../drawable-xxhdpi/ic_input_white_24dp.png | Bin 303 -> 0 bytes .../ic_link_off_white_24dp.png | Bin 650 -> 0 bytes .../drawable-xxhdpi/ic_link_white_24dp.png | Bin 670 -> 0 bytes .../drawable-xxhdpi/ic_lock_black_18dp.png | Bin 453 -> 0 bytes .../ic_lock_open_white_24dp.png | Bin 739 -> 0 bytes .../drawable-xxhdpi/ic_lock_white_18dp.png | Bin 463 -> 0 bytes .../drawable-xxhdpi/ic_lock_white_24dp.png | Bin 760 -> 0 bytes .../res/drawable-xxhdpi/ic_mic_black_24dp.png | Bin 581 -> 0 bytes .../res/drawable-xxhdpi/ic_mic_black_48dp.png | Bin 1146 -> 0 bytes .../drawable-xxhdpi/ic_mic_off_black_24dp.png | Bin 671 -> 0 bytes .../res/drawable-xxhdpi/ic_mic_white_48dp.png | Bin 1220 -> 0 bytes .../ic_mode_edit_black_18dp.png | Bin 336 -> 0 bytes .../ic_mode_edit_white_18dp.png | Bin 436 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 699 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 736 -> 0 bytes .../ic_no_results_background_black.png | Bin 8790 -> 0 bytes .../ic_no_results_background_white.png | Bin 9662 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 381 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 495 -> 0 bytes .../ic_notifications_none_white80.png | Bin 1033 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 485 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 690 -> 0 bytes .../ic_notifications_off_white80.png | Bin 1483 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 683 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 482 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 1049 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 482 -> 0 bytes .../ic_notifications_white80.png | Bin 831 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 378 -> 0 bytes .../drawable-xxhdpi/ic_pause_black_36dp.png | Bin 143 -> 0 bytes .../drawable-xxhdpi/ic_pause_white_36dp.png | Bin 158 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 683 -> 0 bytes .../drawable-xxhdpi/ic_person_black_48dp.png | Bin 846 -> 0 bytes .../drawable-xxhdpi/ic_person_white_48dp.png | Bin 863 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 685 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 704 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 882 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 366 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 390 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 1331 -> 0 bytes src/main/res/drawable-xxhdpi/ic_profile.png | Bin 2137 -> 0 bytes .../drawable-xxhdpi/ic_public_white_24dp.png | Bin 982 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 599 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 256 -> 0 bytes .../drawable-xxhdpi/ic_refresh_black_24dp.png | Bin 721 -> 0 bytes .../drawable-xxhdpi/ic_refresh_white_24dp.png | Bin 734 -> 0 bytes .../drawable-xxhdpi/ic_replay_white_48dp.png | Bin 1390 -> 0 bytes .../drawable-xxhdpi/ic_reply_white_24dp.png | Bin 436 -> 0 bytes .../drawable-xxhdpi/ic_room_black_48dp.png | Bin 1264 -> 0 bytes .../drawable-xxhdpi/ic_room_white_24dp.png | Bin 861 -> 0 bytes .../drawable-xxhdpi/ic_room_white_48dp.png | Bin 1270 -> 0 bytes .../drawable-xxhdpi/ic_save_black_24dp.png | Bin 368 -> 0 bytes .../drawable-xxhdpi/ic_save_white_24dp.png | Bin 391 -> 0 bytes .../ic_search_background_black.png | Bin 7248 -> 0 bytes .../ic_search_background_white.png | Bin 9102 -> 0 bytes .../drawable-xxhdpi/ic_search_white_24dp.png | Bin 871 -> 0 bytes .../drawable-xxhdpi/ic_send_cancel_away.png | Bin 2583 -> 0 bytes .../drawable-xxhdpi/ic_send_cancel_dnd.png | Bin 2983 -> 0 bytes .../ic_send_cancel_offline.png | Bin 2290 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 2239 -> 0 bytes .../drawable-xxhdpi/ic_send_cancel_online.png | Bin 2974 -> 0 bytes .../drawable-xxhdpi/ic_send_file_offline.png | Bin 750 -> 0 bytes .../ic_send_file_offline_white.png | Bin 669 -> 0 bytes .../drawable-xxhdpi/ic_send_location_away.png | Bin 2229 -> 0 bytes .../drawable-xxhdpi/ic_send_location_dnd.png | Bin 2589 -> 0 bytes .../ic_send_location_offline.png | Bin 1881 -> 0 bytes .../ic_send_location_offline_white.png | Bin 1940 -> 0 bytes .../ic_send_location_online.png | Bin 2607 -> 0 bytes .../drawable-xxhdpi/ic_send_photo_away.png | Bin 2256 -> 0 bytes .../res/drawable-xxhdpi/ic_send_photo_dnd.png | Bin 2618 -> 0 bytes .../drawable-xxhdpi/ic_send_photo_offline.png | Bin 1802 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 1943 -> 0 bytes .../drawable-xxhdpi/ic_send_photo_online.png | Bin 2636 -> 0 bytes .../drawable-xxhdpi/ic_send_picture_away.png | Bin 1327 -> 0 bytes .../drawable-xxhdpi/ic_send_picture_dnd.png | Bin 1516 -> 0 bytes .../ic_send_picture_offline.png | Bin 1159 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 1216 -> 0 bytes .../ic_send_picture_online.png | Bin 1515 -> 0 bytes .../res/drawable-xxhdpi/ic_send_text_away.png | Bin 1776 -> 0 bytes .../res/drawable-xxhdpi/ic_send_text_dnd.png | Bin 2005 -> 0 bytes .../drawable-xxhdpi/ic_send_text_offline.png | Bin 1410 -> 0 bytes .../ic_send_text_offline_white.png | Bin 1486 -> 0 bytes .../drawable-xxhdpi/ic_send_text_online.png | Bin 1970 -> 0 bytes .../drawable-xxhdpi/ic_send_videocam_away.png | Bin 705 -> 0 bytes .../drawable-xxhdpi/ic_send_videocam_dnd.png | Bin 777 -> 0 bytes .../ic_send_videocam_offline.png | Bin 650 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 670 -> 0 bytes .../ic_send_videocam_online.png | Bin 776 -> 0 bytes .../drawable-xxhdpi/ic_send_voice_away.png | Bin 1895 -> 0 bytes .../res/drawable-xxhdpi/ic_send_voice_dnd.png | Bin 2200 -> 0 bytes .../drawable-xxhdpi/ic_send_voice_offline.png | Bin 1621 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 1644 -> 0 bytes .../drawable-xxhdpi/ic_send_voice_online.png | Bin 2187 -> 0 bytes .../ic_settings_black_24dp.png | Bin 827 -> 0 bytes .../ic_settings_white_24dp.png | Bin 843 -> 0 bytes .../drawable-xxhdpi/ic_share_white_24dp.png | Bin 857 -> 0 bytes .../drawable-xxhdpi/ic_star_black_24dp.png | Bin 668 -> 0 bytes .../drawable-xxhdpi/ic_star_white_24dp.png | Bin 676 -> 0 bytes .../drawable-xxhdpi/ic_stat_alert_warning.png | Bin 2276 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 1860 -> 0 bytes .../ic_verified_fingerprint.png | Bin 2306 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 516 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 538 -> 0 bytes .../ic_videocam_black_24dp.png | Bin 224 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 375 -> 0 bytes .../ic_videocam_white_24dp.png | Bin 234 -> 0 bytes .../ic_voicemail_white_24dp.png | Bin 625 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 704 -> 0 bytes .../ic_volume_up_black_24dp.png | Bin 626 -> 0 bytes .../drawable-xxhdpi/ic_warning_white_24dp.png | Bin 639 -> 0 bytes .../drawable-xxhdpi/ic_warning_white_48dp.png | Bin 843 -> 0 bytes .../res/drawable-xxhdpi/ic_wear_reply.png | Bin 866 -> 0 bytes src/main/res/drawable-xxhdpi/marker.png | Bin 7462 -> 0 bytes .../message_bubble_received.9.png | Bin 1319 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 1319 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 1301 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 1332 -> 0 bytes .../message_bubble_received_white.9.png | Bin 1344 -> 0 bytes .../drawable-xxhdpi/message_bubble_sent.9.png | Bin 1190 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 1173 -> 0 bytes .../res/drawable-xxhdpi/open_pdf_black.png | Bin 3076 -> 0 bytes .../res/drawable-xxhdpi/open_pdf_white.png | Bin 3301 -> 0 bytes .../res/drawable-xxhdpi/play_gif_black.png | Bin 1580 -> 0 bytes .../res/drawable-xxhdpi/play_gif_white.png | Bin 1652 -> 0 bytes .../res/drawable-xxhdpi/play_video_black.png | Bin 10044 -> 0 bytes .../res/drawable-xxhdpi/play_video_white.png | Bin 10668 -> 0 bytes .../baseline_tour_black_48.png | Bin 809 -> 0 bytes .../baseline_tour_white_48.png | Bin 809 -> 0 bytes .../drawable-xxxhdpi/date_bubble_grey.9.png | Bin 1392 -> 0 bytes .../drawable-xxxhdpi/date_bubble_white.9.png | Bin 1430 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 894 -> 0 bytes .../drawable-xxxhdpi/ic_add_white_24dp.png | Bin 269 -> 0 bytes .../ic_android_black_48dp.png | Bin 1295 -> 0 bytes .../ic_android_white_48dp.png | Bin 1350 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 519 -> 0 bytes .../ic_archive_black_48dp.png | Bin 945 -> 0 bytes .../ic_archive_white_24dp.png | Bin 489 -> 0 bytes .../ic_archive_white_48dp.png | Bin 971 -> 0 bytes .../res/drawable-xxxhdpi/ic_attach_camera.png | Bin 1790 -> 0 bytes .../ic_attach_camera_white.png | Bin 1416 -> 0 bytes .../drawable-xxxhdpi/ic_attach_document.png | Bin 1276 -> 0 bytes .../ic_attach_document_white.png | Bin 627 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 1039 -> 0 bytes .../drawable-xxxhdpi/ic_attach_location.png | Bin 1872 -> 0 bytes .../ic_attach_location_white.png | Bin 1395 -> 0 bytes .../res/drawable-xxxhdpi/ic_attach_photo.png | Bin 1454 -> 0 bytes .../ic_attach_photo_white.png | Bin 900 -> 0 bytes .../res/drawable-xxxhdpi/ic_attach_record.png | Bin 1703 -> 0 bytes .../ic_attach_record_white.png | Bin 1170 -> 0 bytes .../drawable-xxxhdpi/ic_attach_videocam.png | Bin 429 -> 0 bytes .../ic_attach_videocam_white.png | Bin 547 -> 0 bytes .../ic_autorenew_white_24dp.png | Bin 1114 -> 0 bytes .../drawable-xxxhdpi/ic_backup_black_48dp.png | Bin 1465 -> 0 bytes .../drawable-xxxhdpi/ic_backup_white_48dp.png | Bin 1562 -> 0 bytes .../drawable-xxxhdpi/ic_block_white_24dp.png | Bin 1497 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 867 -> 0 bytes .../drawable-xxxhdpi/ic_book_black_48dp.png | Bin 750 -> 0 bytes .../drawable-xxxhdpi/ic_book_white_48dp.png | Bin 766 -> 0 bytes .../drawable-xxxhdpi/ic_call_black_24dp.png | Bin 758 -> 0 bytes .../ic_call_end_white_48dp.png | Bin 1355 -> 0 bytes .../ic_call_made_black_18dp.png | Bin 212 -> 0 bytes .../ic_call_made_white_18dp.png | Bin 247 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 267 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 257 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 248 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 291 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 214 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 257 -> 0 bytes .../drawable-xxxhdpi/ic_call_white_24dp.png | Bin 778 -> 0 bytes .../drawable-xxxhdpi/ic_call_white_48dp.png | Bin 1529 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 894 -> 0 bytes .../drawable-xxxhdpi/ic_cancel_black_24dp.png | Bin 963 -> 0 bytes .../drawable-xxxhdpi/ic_cancel_white_24dp.png | Bin 1179 -> 0 bytes .../drawable-xxxhdpi/ic_chat_white_24dp.png | Bin 344 -> 0 bytes .../drawable-xxxhdpi/ic_clear_white_48dp.png | Bin 702 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 789 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 319 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 329 -> 0 bytes .../drawable-xxxhdpi/ic_crop_white_24dp.png | Bin 394 -> 0 bytes .../drawable-xxxhdpi/ic_delete_black_24dp.png | Bin 237 -> 0 bytes .../drawable-xxxhdpi/ic_delete_white_24dp.png | Bin 397 -> 0 bytes .../ic_description_black_48dp.png | Bin 726 -> 0 bytes .../ic_description_white_48dp.png | Bin 788 -> 0 bytes .../ic_directions_black_24dp.png | Bin 491 -> 0 bytes .../ic_directions_white_24dp.png | Bin 554 -> 0 bytes .../drawable-xxxhdpi/ic_done_black_18dp.png | Bin 227 -> 0 bytes .../drawable-xxxhdpi/ic_done_white_18dp.png | Bin 255 -> 0 bytes .../drawable-xxxhdpi/ic_drafts_white_24dp.png | Bin 953 -> 0 bytes .../drawable-xxxhdpi/ic_edit_black_24dp.png | Bin 319 -> 0 bytes .../drawable-xxxhdpi/ic_edit_white_24dp.png | Bin 632 -> 0 bytes .../drawable-xxxhdpi/ic_error_white_24dp.png | Bin 814 -> 0 bytes .../drawable-xxxhdpi/ic_event_black_48dp.png | Bin 713 -> 0 bytes .../drawable-xxxhdpi/ic_event_white_48dp.png | Bin 744 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 433 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 1780 -> 0 bytes .../ic_forward_white_24dp.png | Bin 236 -> 0 bytes .../ic_gps_fixed_black_24dp.png | Bin 1334 -> 0 bytes .../ic_gps_fixed_white_24dp.png | Bin 1379 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 1102 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 1139 -> 0 bytes .../ic_group_add_white_24dp.png | Bin 935 -> 0 bytes .../drawable-xxxhdpi/ic_group_white_24dp.png | Bin 759 -> 0 bytes .../ic_headset_black_24dp.png | Bin 786 -> 0 bytes .../ic_headset_black_48dp.png | Bin 1574 -> 0 bytes .../ic_headset_white_48dp.png | Bin 1736 -> 0 bytes .../drawable-xxxhdpi/ic_help_black_48dp.png | Bin 2217 -> 0 bytes .../drawable-xxxhdpi/ic_help_white_24dp.png | Bin 1132 -> 0 bytes .../drawable-xxxhdpi/ic_help_white_48dp.png | Bin 2356 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 273 -> 0 bytes .../drawable-xxxhdpi/ic_image_black_48dp.png | Bin 1108 -> 0 bytes .../drawable-xxxhdpi/ic_image_white_48dp.png | Bin 1178 -> 0 bytes .../drawable-xxxhdpi/ic_input_white_24dp.png | Bin 382 -> 0 bytes .../ic_link_off_white_24dp.png | Bin 811 -> 0 bytes .../drawable-xxxhdpi/ic_link_white_24dp.png | Bin 865 -> 0 bytes .../drawable-xxxhdpi/ic_lock_black_18dp.png | Bin 527 -> 0 bytes .../ic_lock_open_white_24dp.png | Bin 946 -> 0 bytes .../drawable-xxxhdpi/ic_lock_white_18dp.png | Bin 540 -> 0 bytes .../drawable-xxxhdpi/ic_lock_white_24dp.png | Bin 971 -> 0 bytes .../drawable-xxxhdpi/ic_mic_black_24dp.png | Bin 773 -> 0 bytes .../drawable-xxxhdpi/ic_mic_black_48dp.png | Bin 1529 -> 0 bytes .../ic_mic_off_black_24dp.png | Bin 832 -> 0 bytes .../drawable-xxxhdpi/ic_mic_white_48dp.png | Bin 1664 -> 0 bytes .../ic_mode_edit_black_18dp.png | Bin 366 -> 0 bytes .../ic_mode_edit_white_18dp.png | Bin 490 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 897 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 932 -> 0 bytes .../ic_no_results_background_black.png | Bin 12852 -> 0 bytes .../ic_no_results_background_white.png | Bin 13693 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 493 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 641 -> 0 bytes .../ic_notifications_none_white80.png | Bin 1288 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 633 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 885 -> 0 bytes .../ic_notifications_off_white80.png | Bin 1903 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 877 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 618 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 1308 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 616 -> 0 bytes .../ic_notifications_white80.png | Bin 1053 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 482 -> 0 bytes .../drawable-xxxhdpi/ic_pause_black_36dp.png | Bin 127 -> 0 bytes .../drawable-xxxhdpi/ic_pause_white_36dp.png | Bin 110 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 909 -> 0 bytes .../drawable-xxxhdpi/ic_person_black_48dp.png | Bin 1121 -> 0 bytes .../drawable-xxxhdpi/ic_person_white_48dp.png | Bin 1140 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 868 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 882 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 1162 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 394 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 461 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 1826 -> 0 bytes .../drawable-xxxhdpi/ic_public_white_24dp.png | Bin 1288 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 754 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 320 -> 0 bytes .../ic_refresh_black_24dp.png | Bin 948 -> 0 bytes .../ic_refresh_white_24dp.png | Bin 967 -> 0 bytes .../drawable-xxxhdpi/ic_replay_white_48dp.png | Bin 1885 -> 0 bytes .../drawable-xxxhdpi/ic_reply_white_24dp.png | Bin 579 -> 0 bytes .../drawable-xxxhdpi/ic_room_black_48dp.png | Bin 1691 -> 0 bytes .../drawable-xxxhdpi/ic_room_white_24dp.png | Bin 1093 -> 0 bytes .../drawable-xxxhdpi/ic_room_white_48dp.png | Bin 1709 -> 0 bytes .../drawable-xxxhdpi/ic_save_black_24dp.png | Bin 477 -> 0 bytes .../drawable-xxxhdpi/ic_save_white_24dp.png | Bin 504 -> 0 bytes .../ic_search_background_black.png | Bin 10595 -> 0 bytes .../ic_search_background_white.png | Bin 12848 -> 0 bytes .../drawable-xxxhdpi/ic_search_white_24dp.png | Bin 1090 -> 0 bytes .../drawable-xxxhdpi/ic_send_cancel_away.png | Bin 3377 -> 0 bytes .../drawable-xxxhdpi/ic_send_cancel_dnd.png | Bin 3862 -> 0 bytes .../ic_send_cancel_offline.png | Bin 2956 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 2987 -> 0 bytes .../ic_send_cancel_online.png | Bin 3861 -> 0 bytes .../ic_send_location_away.png | Bin 3015 -> 0 bytes .../drawable-xxxhdpi/ic_send_location_dnd.png | Bin 3514 -> 0 bytes .../ic_send_location_offline.png | Bin 2523 -> 0 bytes .../ic_send_location_offline_white.png | Bin 2563 -> 0 bytes .../ic_send_location_online.png | Bin 3519 -> 0 bytes .../drawable-xxxhdpi/ic_send_photo_away.png | Bin 3040 -> 0 bytes .../drawable-xxxhdpi/ic_send_photo_dnd.png | Bin 3569 -> 0 bytes .../ic_send_photo_offline.png | Bin 2491 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 2631 -> 0 bytes .../drawable-xxxhdpi/ic_send_photo_online.png | Bin 3567 -> 0 bytes .../drawable-xxxhdpi/ic_send_picture_away.png | Bin 1632 -> 0 bytes .../drawable-xxxhdpi/ic_send_picture_dnd.png | Bin 1784 -> 0 bytes .../ic_send_picture_offline.png | Bin 1428 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 1483 -> 0 bytes .../ic_send_picture_online.png | Bin 1777 -> 0 bytes .../drawable-xxxhdpi/ic_send_text_away.png | Bin 2311 -> 0 bytes .../res/drawable-xxxhdpi/ic_send_text_dnd.png | Bin 2592 -> 0 bytes .../drawable-xxxhdpi/ic_send_text_offline.png | Bin 1862 -> 0 bytes .../ic_send_text_offline_white.png | Bin 1974 -> 0 bytes .../drawable-xxxhdpi/ic_send_text_online.png | Bin 2665 -> 0 bytes .../ic_send_videocam_away.png | Bin 821 -> 0 bytes .../drawable-xxxhdpi/ic_send_videocam_dnd.png | Bin 884 -> 0 bytes .../ic_send_videocam_offline.png | Bin 772 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 777 -> 0 bytes .../ic_send_videocam_online.png | Bin 894 -> 0 bytes .../drawable-xxxhdpi/ic_send_voice_away.png | Bin 2491 -> 0 bytes .../drawable-xxxhdpi/ic_send_voice_dnd.png | Bin 2849 -> 0 bytes .../ic_send_voice_offline.png | Bin 2092 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 2181 -> 0 bytes .../drawable-xxxhdpi/ic_send_voice_online.png | Bin 2895 -> 0 bytes .../ic_settings_black_24dp.png | Bin 1073 -> 0 bytes .../ic_settings_white_24dp.png | Bin 1074 -> 0 bytes .../drawable-xxxhdpi/ic_share_white_24dp.png | Bin 1115 -> 0 bytes .../drawable-xxxhdpi/ic_star_black_24dp.png | Bin 887 -> 0 bytes .../drawable-xxxhdpi/ic_star_white_24dp.png | Bin 890 -> 0 bytes .../ic_verified_fingerprint.png | Bin 2773 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 634 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 668 -> 0 bytes .../ic_videocam_black_24dp.png | Bin 270 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 447 -> 0 bytes .../ic_videocam_white_24dp.png | Bin 290 -> 0 bytes .../ic_voicemail_white_24dp.png | Bin 971 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 924 -> 0 bytes .../ic_volume_up_black_24dp.png | Bin 828 -> 0 bytes .../ic_warning_white_24dp.png | Bin 887 -> 0 bytes .../ic_warning_white_48dp.png | Bin 1044 -> 0 bytes src/main/res/drawable-xxxhdpi/marker.png | Bin 9950 -> 0 bytes .../message_bubble_received.9.png | Bin 1713 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 1691 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 1670 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 1696 -> 0 bytes .../message_bubble_received_white.9.png | Bin 1705 -> 0 bytes .../message_bubble_sent.9.png | Bin 1499 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 1468 -> 0 bytes .../res/drawable-xxxhdpi/open_pdf_black.png | Bin 4626 -> 0 bytes .../res/drawable-xxxhdpi/open_pdf_white.png | Bin 4986 -> 0 bytes .../res/drawable-xxxhdpi/play_gif_black.png | Bin 2334 -> 0 bytes .../res/drawable-xxxhdpi/play_gif_white.png | Bin 2436 -> 0 bytes .../res/drawable-xxxhdpi/play_video_black.png | Bin 13926 -> 0 bytes .../res/drawable-xxxhdpi/play_video_white.png | Bin 15040 -> 0 bytes .../res/drawable/account_image_border.xml | 15 - src/main/res/drawable/background.xml | 11 - .../res/drawable/es_slidingpane_shadow.xml | 12 - src/main/res/drawable/grey.xml | 7 - src/main/res/drawable/greybackground.xml | 6 - .../res/drawable/ic_baseline_check_24.xml | 5 - .../res/drawable/ic_call_black54_24dp.xml | 4 - .../drawable/ic_call_missed_white_24db.xml | 5 - .../res/drawable/ic_call_white70_24dp.xml | 4 - .../res/drawable/ic_directions_black_24dp.xml | 9 - .../res/drawable/ic_gps_fixed_black_24dp.xml | 9 - .../drawable/ic_gps_not_fixed_black_24dp.xml | 9 - .../res/drawable/ic_launcher_foreground.xml | 24 - src/main/res/drawable/ic_place_black_24dp.xml | 9 - .../res/drawable/ic_scroll_to_end_black.xml | 7 - .../res/drawable/ic_scroll_to_end_white.xml | 36 - .../res/drawable/ic_videocam_black54_24dp.xml | 4 - .../res/drawable/ic_videocam_white70_24dp.xml | 4 - src/main/res/drawable/ic_visibility.xml | 9 - src/main/res/drawable/ic_visibility_off.xml | 9 - .../drawable/list_item_background_dark.xml | 34 - .../drawable/list_item_background_light.xml | 34 - .../drawable/no_results_background_dark.xml | 41 - .../drawable/no_results_background_light.xml | 41 - .../no_results_primary_background_dark.xml | 41 - .../no_results_primary_background_light.xml | 41 - .../res/drawable/search_background_dark.xml | 41 - .../res/drawable/search_background_light.xml | 41 - src/main/res/drawable/snackbar.xml | 14 - .../drawable/visibility_toggle_drawable.xml | 5 - src/main/res/drawable/white_cursor.xml | 33 - .../layout-w945dp/activity_conversations.xml | 28 - src/main/res/layout/account_row.xml | 57 - src/main/res/layout/actionview_search.xml | 18 - src/main/res/layout/activity_about.xml | 40 - .../res/layout/activity_change_password.xml | 106 - .../res/layout/activity_channel_discovery.xml | 41 - .../res/layout/activity_choose_contact.xml | 36 - .../res/layout/activity_contact_details.xml | 223 - .../res/layout/activity_conversations.xml | 45 - src/main/res/layout/activity_edit_account.xml | 720 --- .../res/layout/activity_manage_accounts.xml | 18 - .../res/layout/activity_media_browser.xml | 24 - src/main/res/layout/activity_muc_details.xml | 430 -- src/main/res/layout/activity_muc_users.xml | 34 - .../activity_publish_profile_picture.xml | 99 - src/main/res/layout/activity_recording.xml | 48 - src/main/res/layout/activity_rtp_session.xml | 264 - src/main/res/layout/activity_scan.xml | 17 - src/main/res/layout/activity_search.xml | 53 - src/main/res/layout/activity_settings.xml | 12 - .../res/layout/activity_share_location.xml | 80 - src/main/res/layout/activity_share_with.xml | 19 - .../res/layout/activity_show_location.xml | 35 - .../layout/activity_start_conversation.xml | 59 - src/main/res/layout/activity_trust_keys.xml | 170 - src/main/res/layout/activity_uri_handler.xml | 31 - src/main/res/layout/captcha.xml | 25 - src/main/res/layout/contact.xml | 58 - src/main/res/layout/contact_key.xml | 79 - src/main/res/layout/conversation_list_row.xml | 146 - .../res/layout/create_conference_dialog.xml | 40 - .../layout/create_public_channel_dialog.xml | 55 - src/main/res/layout/dialog_block_contact.xml | 28 - src/main/res/layout/dialog_clear_history.xml | 26 - .../res/layout/dialog_join_conference.xml | 51 - src/main/res/layout/dialog_presence.xml | 66 - src/main/res/layout/dialog_quickedit.xml | 32 - .../res/layout/dialog_verify_fingerprints.xml | 23 - src/main/res/layout/enter_jid_dialog.xml | 42 - src/main/res/layout/form_boolean.xml | 11 - src/main/res/layout/form_text.xml | 17 - src/main/res/layout/fragment_conversation.xml | 170 - .../fragment_conversations_overview.xml | 27 - src/main/res/layout/keys_card.xml | 43 - src/main/res/layout/list_item_tag.xml | 13 - src/main/res/layout/media.xml | 15 - src/main/res/layout/media_preview.xml | 25 - src/main/res/layout/message_content.xml | 66 - src/main/res/layout/message_date_bubble.xml | 27 - src/main/res/layout/message_received.xml | 94 - src/main/res/layout/message_rtp_session.xml | 38 - src/main/res/layout/message_sent.xml | 108 - src/main/res/layout/message_status.xml | 46 - src/main/res/layout/presence_template.xml | 47 - src/main/res/layout/search_result_item.xml | 63 - src/main/res/layout/simple_list_item.xml | 25 - src/main/res/layout/toolbar.xml | 11 - src/main/res/layout/user_preview.xml | 17 - src/main/res/menu/account_context.xml | 12 - src/main/res/menu/activity_conversations.xml | 25 - .../menu/activity_publish_profile_picture.xml | 10 - src/main/res/menu/activity_rtp_session.xml | 19 - src/main/res/menu/activity_search.xml | 40 - src/main/res/menu/block.xml | 12 - .../res/menu/channel_discovery_activity.xml | 21 - src/main/res/menu/channel_item_context.xml | 9 - src/main/res/menu/choose_contact.xml | 17 - src/main/res/menu/conference_context.xml | 10 - src/main/res/menu/contact_context.xml | 17 - src/main/res/menu/contact_details.xml | 64 - src/main/res/menu/edit_message_actions.xml | 38 - src/main/res/menu/editaccount.xml | 63 - src/main/res/menu/fragment_conversation.xml | 142 - .../menu/fragment_conversations_overview.xml | 57 - src/main/res/menu/import_backup.xml | 11 - src/main/res/menu/manageaccounts_context.xml | 22 - src/main/res/menu/menu_show_location.xml | 14 - src/main/res/menu/message_context.xml | 60 - src/main/res/menu/muc_details.xml | 62 - src/main/res/menu/muc_details_context.xml | 58 - src/main/res/menu/muc_users_activity.xml | 11 - src/main/res/menu/omemo_key_context.xml | 13 - src/main/res/menu/one_on_one_context.xml | 9 - src/main/res/menu/search_result_context.xml | 49 - src/main/res/menu/share_with.xml | 12 - src/main/res/menu/start_conversation.xml | 40 - .../menu/start_conversation_fab_submenu.xml | 23 - src/main/res/menu/trust_keys.xml | 10 - src/main/res/mipmap-hdpi/new_launcher.png | Bin 2385 -> 0 bytes .../res/mipmap-hdpi/new_launcher_round.png | Bin 4216 -> 0 bytes src/main/res/raw/countries | 245 - src/main/res/values-h360dp/dimens.xml | 5 - src/main/res/values-h500dp/dimens.xml | 5 - src/main/res/values-land/dimens.xml | 8 - src/main/res/values-night/colors.xml | 5 - src/main/res/values-qwerty/defaults.xml | 4 - src/main/res/values-sw600dp/defaults.xml | 6 - src/main/res/values-v29/theme-settings.xml | 16 - src/main/res/values-w384dp/dimens.xml | 14 - src/main/res/values-w585dp/dimens.xml | 6 - src/main/res/values-w945dp/defaults.xml | 7 - src/main/res/values-w945dp/dimens.xml | 3 - src/main/res/values/about.xml | 65 - src/main/res/values/arrays.xml | 129 - src/main/res/values/attrs.xml | 131 - src/main/res/values/bools.xml | 4 - src/main/res/values/colors.xml | 47 - src/main/res/values/defaults.xml | 51 - src/main/res/values/dimens.xml | 50 - src/main/res/values/ids.xml | 7 - src/main/res/values/styles.xml | 162 - src/main/res/values/theme-settings.xml | 14 - src/main/res/values/themes.xml | 420 -- src/main/res/xml/automotive_app_desc.xml | 4 - src/main/res/xml/backup_content.xml | 11 - src/main/res/xml/file_paths.xml | 24 - .../xml/network_security_configuration.xml | 9 - src/main/res/xml/preferences.xml | 379 -- src/playstore/AndroidManifest.xml | 30 - .../services/EmojiInitializationService.java | 10 - .../services/MaintenanceReceiver.java | 30 - .../services/PushManagementService.java | 120 - .../services/PushMessageReceiver.java | 40 - src/quicksy/AndroidManifest.xml | 49 - .../android/PhoneNumberContact.java | 90 - .../siacs/conversations/entities/Entry.java | 109 - .../services/QuickConversationsService.java | 510 -- .../conversations/services/SMSReceiver.java | 22 - .../ui/ChooseCountryActivity.java | 132 - .../ui/EasyOnboardingInviteActivity.java | 9 - .../conversations/ui/EnterNameActivity.java | 81 - .../ui/EnterPhoneNumberActivity.java | 241 - .../siacs/conversations/ui/TosActivity.java | 77 - .../conversations/ui/VerifyActivity.java | 357 -- .../ui/adapter/CountryAdapter.java | 70 - .../ui/drawable/TextDrawable.java | 243 - .../ui/util/ApiDialogHelper.java | 101 - .../ui/util/PinEntryWrapper.java | 159 - .../utils/PhoneNumberUtilWrapper.java | 101 - .../utils/ProvisioningUtils.java | 9 - .../conversations/utils/SignupUtils.java | 58 - src/quicksy/new_launcher-web.png | Bin 23321 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 117 -> 0 bytes .../res/drawable-hdpi/ic_notification.png | Bin 1059 -> 0 bytes src/quicksy/res/drawable-hdpi/launcher.png | Bin 4512 -> 0 bytes src/quicksy/res/drawable-hdpi/main_logo.png | Bin 19860 -> 0 bytes src/quicksy/res/drawable-hdpi/splash_logo.png | Bin 14191 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 88 -> 0 bytes .../res/drawable-mdpi/ic_notification.png | Bin 663 -> 0 bytes src/quicksy/res/drawable-mdpi/launcher.png | Bin 3001 -> 0 bytes src/quicksy/res/drawable-mdpi/main_logo.png | Bin 13004 -> 0 bytes src/quicksy/res/drawable-mdpi/splash_logo.png | Bin 9070 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 117 -> 0 bytes .../res/drawable-xhdpi/ic_notification.png | Bin 1326 -> 0 bytes src/quicksy/res/drawable-xhdpi/launcher.png | Bin 6005 -> 0 bytes src/quicksy/res/drawable-xhdpi/main_logo.png | Bin 26976 -> 0 bytes .../res/drawable-xhdpi/splash_logo.png | Bin 19010 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 126 -> 0 bytes .../res/drawable-xxhdpi/ic_notification.png | Bin 2112 -> 0 bytes src/quicksy/res/drawable-xxhdpi/launcher.png | Bin 9070 -> 0 bytes src/quicksy/res/drawable-xxhdpi/main_logo.png | Bin 41177 -> 0 bytes .../res/drawable-xxhdpi/splash_logo.png | Bin 29217 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 141 -> 0 bytes .../res/drawable-xxxhdpi/ic_notification.png | Bin 2856 -> 0 bytes src/quicksy/res/drawable-xxxhdpi/launcher.png | Bin 12398 -> 0 bytes .../res/drawable-xxxhdpi/main_logo.png | Bin 55474 -> 0 bytes .../res/drawable-xxxhdpi/splash_logo.png | Bin 39466 -> 0 bytes .../res/layout/activity_choose_country.xml | 24 - .../res/layout/activity_enter_name.xml | 64 - .../res/layout/activity_enter_number.xml | 114 - src/quicksy/res/layout/activity_tos.xml | 77 - src/quicksy/res/layout/activity_verify.xml | 193 - src/quicksy/res/layout/country_item.xml | 30 - src/quicksy/res/menu/choose_country.xml | 11 - .../utils/SmsRetrieverWrapper.java | 16 - .../utils/SmsRetrieverWrapper.java | 40 - 2165 files changed, 982 insertions(+), 95714 deletions(-) create mode 100644 annotation-processor/build.gradle rename {libs/annotation-processor => annotation-processor}/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java (100%) create mode 100644 annotation/build.gradle rename {libs/annotation => annotation}/src/main/java/im/conversations/android/annotation/XmlElement.java (100%) rename {libs/annotation => annotation}/src/main/java/im/conversations/android/annotation/XmlPackage.java (100%) create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro rename {schemas => app/schemas}/im.conversations.android.database.ConversationsDatabase/1.json (100%) rename {src => app/src}/androidTest/java/im/conversations/android/xmpp/TransformationTest.java (100%) rename {src => app/src}/conversations/res/drawable/ic_launcher_foreground.xml (100%) rename {src => app/src}/conversations/res/mipmap-anydpi-v26/new_launcher.xml (100%) rename {src => app/src}/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml (100%) rename {src/main => app/src/conversations}/res/mipmap-hdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-hdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-hdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-mdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-mdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-mdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-xhdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-xhdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-xhdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-xxhdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-xxhdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-xxhdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-xxxhdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-xxxhdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-xxxhdpi/new_launcher_round.png (100%) rename {src => app/src}/conversations/res/values-ar/strings.xml (100%) rename {src => app/src}/conversations/res/values-bg/strings.xml (100%) rename {src => app/src}/conversations/res/values-bn-rIN/strings.xml (100%) rename {src => app/src}/conversations/res/values-ca/strings.xml (100%) rename {src => app/src}/conversations/res/values-da-rDK/strings.xml (100%) rename {src => app/src}/conversations/res/values-de/strings.xml (100%) rename {src => app/src}/conversations/res/values-el/strings.xml (100%) rename {src => app/src}/conversations/res/values-es/strings.xml (100%) rename {src => app/src}/conversations/res/values-eu/strings.xml (100%) rename {src => app/src}/conversations/res/values-fa-rIR/strings.xml (100%) rename {src => app/src}/conversations/res/values-fi/strings.xml (100%) rename {src => app/src}/conversations/res/values-fr/strings.xml (100%) rename {src => app/src}/conversations/res/values-gl/strings.xml (100%) rename {src => app/src}/conversations/res/values-hr/strings.xml (100%) rename {src => app/src}/conversations/res/values-hu/strings.xml (100%) rename {src => app/src}/conversations/res/values-id/strings.xml (100%) rename {src => app/src}/conversations/res/values-it/strings.xml (100%) rename {src => app/src}/conversations/res/values-ja/strings.xml (100%) rename {src => app/src}/conversations/res/values-nl/strings.xml (100%) rename {src => app/src}/conversations/res/values-pl/strings.xml (100%) rename {src => app/src}/conversations/res/values-pt-rBR/strings.xml (100%) rename {src => app/src}/conversations/res/values-pt/strings.xml (100%) rename {src => app/src}/conversations/res/values-ro-rRO/strings.xml (100%) rename {src => app/src}/conversations/res/values-ru/strings.xml (100%) rename {src => app/src}/conversations/res/values-sk/strings.xml (100%) rename {src => app/src}/conversations/res/values-sq/strings.xml (100%) rename {src => app/src}/conversations/res/values-sr/strings.xml (100%) rename {src => app/src}/conversations/res/values-sv/strings.xml (100%) rename {src => app/src}/conversations/res/values-szl/strings.xml (100%) rename {src => app/src}/conversations/res/values-tr-rTR/strings.xml (100%) rename {src => app/src}/conversations/res/values-uk/strings.xml (100%) rename {src => app/src}/conversations/res/values-vi/strings.xml (100%) rename {src => app/src}/conversations/res/values-zh-rCN/strings.xml (100%) rename {src => app/src}/conversations/res/values-zh-rTW/strings.xml (100%) rename {src => app/src}/conversations/res/values/strings.xml (100%) create mode 100644 app/src/main/AndroidManifest.xml rename {src => app/src}/main/assets/logback.xml (100%) rename {src => app/src}/main/java/im/conversations/android/Conversations.java (79%) rename {src => app/src}/main/java/im/conversations/android/IDs.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/AxolotlDatabaseStore.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/ConversationsDatabase.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/Converters.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/CredentialStore.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/AccountDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/AvatarDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/AxolotlDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/BlockingDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/BookmarkDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/ChatDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/DiscoDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/MessageDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/NickDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/PresenceDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/RosterDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AccountEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AvatarEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/BlockedItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/BookmarkEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/ChatEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageContentEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageReactionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageStateEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageVersionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/NickEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/PresenceEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/RosterItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Account.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/AvatarBase.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/AvatarExternal.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/AvatarThumbnail.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/ChatIdentifier.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/ChatType.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Connection.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Credential.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageContent.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageEmbedded.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageIdentifier.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageReaction.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageState.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageWithContentReactions.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Modification.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/PartType.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/PresenceShow.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/PresenceType.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Proxy.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/StateType.java (100%) create mode 100644 app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java rename {src/main/java/eu/siacs/conversations/utils => app/src/main/java/im/conversations/android/dns}/AndroidUsingLinkProperties.java (67%) create mode 100644 app/src/main/java/im/conversations/android/dns/IP.java rename {src/main/java/eu/siacs/conversations/utils => app/src/main/java/im/conversations/android/dns}/Resolver.java (67%) rename {src => app/src}/main/java/im/conversations/android/repository/AbstractRepository.java (100%) rename {src => app/src}/main/java/im/conversations/android/repository/AccountRepository.java (100%) rename {src/main/java/eu/siacs/conversations/utils => app/src/main/java/im/conversations/android/socks}/SocksSocketFactory.java (77%) rename {src => app/src}/main/java/im/conversations/android/tls/SSLSockets.java (100%) create mode 100644 app/src/main/java/im/conversations/android/tls/TrustManagers.java rename {src => app/src}/main/java/im/conversations/android/tls/XmppDomainVerifier.java (100%) rename {src => app/src}/main/java/im/conversations/android/transformer/Transformation.java (100%) rename {src => app/src}/main/java/im/conversations/android/transformer/TransformationFactory.java (100%) rename {src => app/src}/main/java/im/conversations/android/transformer/Transformer.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/Activities.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/BindingAdapters.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/Event.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/NavControllers.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/activity/SetupActivity.java (90%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java (88%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java (88%) rename {src => app/src}/main/java/im/conversations/android/ui/model/SetupViewModel.java (100%) rename {src/main/java/eu/siacs/conversations/ui => app/src/main/java/im/conversations/android}/util/PendingItem.java (98%) rename {src => app/src}/main/java/im/conversations/android/xml/Element.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/Entities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/Namespace.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/Tag.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/TagWriter.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/XmlElementReader.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/XmlReader.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Closables.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ConnectionException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ConnectionPool.java (99%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ConnectionState.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Entity.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/EntityCapabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/EntityCapabilities2.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ExtensionFactory.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/IqErrorException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Managers.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/NodeConfiguration.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/PubSubErrorException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ServiceDescription.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Timestamps.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/XmppConnection.java (89%) rename {src => app/src}/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/AbstractManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/AvatarManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/BlockingManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/DiscoManager.java (99%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/NickManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/PepManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/PresenceManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/PubSubManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/RosterManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/ByteContent.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/Extension.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/Hash.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/StreamElement.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/avatar/Data.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/avatar/Info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Device.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Header.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java (100%) rename src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java => app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java (67%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Block.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/Enable.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/Received.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/Sent.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/correction/Replace.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/csi/Active.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/csi/Inactive.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/csi/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/Data.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/Field.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/Value.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/delay/Delay.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/items/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/error/Condition.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/error/Error.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/error/Text.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/jabber/Body.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/jabber/Thread.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/jabber/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/mam/Result.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/mam/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/Displayed.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/Markable.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/Received.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/Role.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/nick/Nick.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/oob/URL.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/oob/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/ping/Ping.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Items.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reactions/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/receipts/Received.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/receipts/Request.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/receipts/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Instructions.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Password.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Register.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Remove.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Username.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reply/Reply.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/retract/Retract.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/retract/Retracted.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/retract/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/Group.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/Query.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/package-info.java (100%) create mode 100644 app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java create mode 100644 app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Ack.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Enable.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Request.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Resume.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Iq.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Message.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Presence.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Active.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Composing.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Gone.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Inactive.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Paused.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/streams/Features.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/streams/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/unique/OriginId.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/unique/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/version/Version.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/BindProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/IqProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/Anonymous.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/External.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/HashedToken.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/Plain.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java (100%) rename {src => app/src}/main/res/anim/slide_from_left.xml (100%) rename {src => app/src}/main/res/anim/slide_from_right.xml (100%) rename {src => app/src}/main/res/anim/slide_to_left.xml (100%) rename {src => app/src}/main/res/anim/slide_to_right.xml (100%) rename {src => app/src}/main/res/drawable/ic_account_circle_24dp.xml (100%) rename {src => app/src}/main/res/drawable/ic_settings_24dp.xml (100%) rename {src => app/src}/main/res/layout/activity_setup.xml (100%) rename {src => app/src}/main/res/layout/fragment_password.xml (99%) rename {src => app/src}/main/res/layout/fragment_sign_in.xml (98%) rename src/main/res/menu/setup.xml => app/src/main/res/menu/activity_setup.xml (100%) rename {src => app/src}/main/res/navigation/setup_navigation.xml (100%) rename {src => app/src}/main/res/values-ar/strings.xml (100%) rename {src => app/src}/main/res/values-bg/strings.xml (100%) rename {src => app/src}/main/res/values-bn-rIN/strings.xml (100%) rename {src => app/src}/main/res/values-ca/strings.xml (100%) rename {src => app/src}/main/res/values-cs/strings.xml (100%) rename {src => app/src}/main/res/values-da-rDK/strings.xml (100%) rename {src => app/src}/main/res/values-de/strings.xml (100%) rename {src => app/src}/main/res/values-el/strings.xml (100%) rename {src => app/src}/main/res/values-es/strings.xml (100%) rename {src => app/src}/main/res/values-eu/strings.xml (100%) rename {src => app/src}/main/res/values-fa-rIR/strings.xml (100%) rename {src => app/src}/main/res/values-fi/strings.xml (100%) rename {src => app/src}/main/res/values-fr/strings.xml (100%) rename {src => app/src}/main/res/values-gl/strings.xml (100%) rename {src => app/src}/main/res/values-hi-rIN/strings.xml (100%) rename {src => app/src}/main/res/values-hr/strings.xml (100%) rename {src => app/src}/main/res/values-hu/strings.xml (100%) rename {src => app/src}/main/res/values-id/strings.xml (100%) rename {src => app/src}/main/res/values-it/strings.xml (100%) rename {src => app/src}/main/res/values-iw/strings.xml (100%) rename {src => app/src}/main/res/values-ja/strings.xml (100%) rename {src => app/src}/main/res/values-ko/strings.xml (100%) rename {src => app/src}/main/res/values-land/bools.xml (100%) create mode 100644 app/src/main/res/values-land/dimens.xml rename {src => app/src}/main/res/values-ml/strings.xml (100%) rename {src => app/src}/main/res/values-nb-rNO/strings.xml (100%) create mode 100644 app/src/main/res/values-night/themes.xml rename {src => app/src}/main/res/values-nl/strings.xml (100%) rename {src => app/src}/main/res/values-pl/strings.xml (100%) rename {src => app/src}/main/res/values-pt-rBR/strings.xml (100%) rename {src => app/src}/main/res/values-pt/strings.xml (100%) rename {src => app/src}/main/res/values-ro-rRO/strings.xml (100%) rename {src => app/src}/main/res/values-ru/strings.xml (100%) rename {src => app/src}/main/res/values-sk/strings.xml (100%) rename {src => app/src}/main/res/values-sq-rAL/strings.xml (100%) rename {src => app/src}/main/res/values-sr/strings.xml (100%) rename {src => app/src}/main/res/values-sv/strings.xml (100%) rename src/quicksy/res/values/defaults.xml => app/src/main/res/values-sw600dp/device.xml (52%) rename {src => app/src}/main/res/values-szl/strings.xml (100%) rename {src => app/src}/main/res/values-tr-rTR/strings.xml (100%) rename {src => app/src}/main/res/values-uk/strings.xml (100%) rename {src => app/src}/main/res/values-vi/strings.xml (100%) rename {src => app/src}/main/res/values-zh-rCN/strings.xml (100%) rename {src => app/src}/main/res/values-zh-rTW/strings.xml (100%) create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/device.xml create mode 100644 app/src/main/res/values/dimens.xml rename {src => app/src}/main/res/values/integers.xml (100%) rename {src => app/src}/main/res/values/strings.xml (100%) create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_rules.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml rename {src => app/src}/quicksy/res/drawable/ic_launcher_foreground.xml (100%) rename {src => app/src}/quicksy/res/mipmap-anydpi-v26/new_launcher.xml (100%) rename {src => app/src}/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml (100%) create mode 100644 app/src/quicksy/res/mipmap-hdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-hdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-hdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-mdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-mdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-mdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-xhdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-xhdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-xhdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-xxhdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-xxhdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-xxhdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-xxxhdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-xxxhdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png (100%) rename {src => app/src}/quicksy/res/values-ar/strings.xml (100%) rename {src => app/src}/quicksy/res/values-bg/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ca/strings.xml (100%) rename {src => app/src}/quicksy/res/values-da-rDK/strings.xml (100%) rename {src => app/src}/quicksy/res/values-de/strings.xml (100%) rename {src => app/src}/quicksy/res/values-el/strings.xml (100%) rename {src => app/src}/quicksy/res/values-es/strings.xml (100%) rename {src => app/src}/quicksy/res/values-fi/strings.xml (100%) rename {src => app/src}/quicksy/res/values-fr/strings.xml (100%) rename {src => app/src}/quicksy/res/values-gl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-hr/strings.xml (100%) rename {src => app/src}/quicksy/res/values-hu/strings.xml (100%) rename {src => app/src}/quicksy/res/values-id/strings.xml (100%) rename {src => app/src}/quicksy/res/values-it/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ja/strings.xml (100%) rename {src => app/src}/quicksy/res/values-nl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-pl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-pt-rBR/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ro-rRO/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ru/strings.xml (100%) rename {src => app/src}/quicksy/res/values-sk/strings.xml (100%) rename {src => app/src}/quicksy/res/values-sq/strings.xml (100%) rename {src => app/src}/quicksy/res/values-sv/strings.xml (100%) rename {src => app/src}/quicksy/res/values-szl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-tr-rTR/strings.xml (100%) rename {src => app/src}/quicksy/res/values-uk/strings.xml (100%) rename {src => app/src}/quicksy/res/values-vi/strings.xml (100%) rename {src => app/src}/quicksy/res/values-zh-rCN/strings.xml (100%) rename {src => app/src}/quicksy/res/values-zh-rTW/strings.xml (100%) rename {src => app/src}/quicksy/res/values/strings.xml (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/PubSubTest.java (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/TimestampTest.java (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java (100%) delete mode 100644 libs/annotation-processor/build.gradle delete mode 100644 libs/annotation/build.gradle delete mode 100644 proguard-rules.pro delete mode 100644 src/conversations/AndroidManifest.xml delete mode 100644 src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java delete mode 100644 src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java delete mode 100644 src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java delete mode 100644 src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java delete mode 100644 src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java delete mode 100644 src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java delete mode 100644 src/conversations/new_launcher-web.png delete mode 100644 src/conversations/res/drawable-hdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-hdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-hdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-hdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-mdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-mdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-mdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-mdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-xhdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-xhdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-xhdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-xhdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-xxhdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-xxhdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-xxhdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-xxhdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/splash_logo.png delete mode 100644 src/conversations/res/layout/activity_easy_invite.xml delete mode 100644 src/conversations/res/layout/activity_import_backup.xml delete mode 100644 src/conversations/res/layout/activity_pick_server.xml delete mode 100644 src/conversations/res/layout/activity_welcome.xml delete mode 100644 src/conversations/res/layout/dialog_enter_password.xml delete mode 100644 src/conversations/res/layout/magic_create.xml delete mode 100644 src/conversations/res/menu/easy_onboarding_invite.xml delete mode 100644 src/conversations/res/menu/manageaccounts.xml delete mode 100644 src/conversations/res/menu/welcome_menu.xml delete mode 100644 src/conversationsFree/java/eu/siacs/conversations/utils/InstallReferrerUtils.java delete mode 100644 src/conversationsPlaystore/java/eu/siacs/conversations/utils/InstallReferrerUtils.java delete mode 100644 src/free/java/eu/siacs/conversations/services/EmojiInitializationService.java delete mode 100644 src/free/java/eu/siacs/conversations/services/PushManagementService.java delete mode 100644 src/main/AndroidManifest.xml delete mode 100644 src/main/java/eu/siacs/conversations/Config.java delete mode 100644 src/main/java/eu/siacs/conversations/android/AbstractPhoneContact.java delete mode 100644 src/main/java/eu/siacs/conversations/android/JabberIdContact.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/DomainHostnameVerifier.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/OmemoSetting.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/PgpDecryptionService.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/PgpEngine.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/XmppDomainVerifier.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/BrokenSessionException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/CryptoFailedException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/FingerprintStatus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/NoSessionsCreatedException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/NotEncryptedForThisDeviceException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/OnMessageCreatedCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/OutdatedSenderException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/SQLiteAxolotlStore.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/XmppAxolotlMessage.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/XmppAxolotlSession.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/Anonymous.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ChannelBinding.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ChannelBindingMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/DigestMd5.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/External.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/HashedToken.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/HashedTokenSha256.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/HashedTokenSha512.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/Plain.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramPlusMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha1.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha1Plus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha256.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha256Plus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha512.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha512Plus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/Tokenizer.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/AbstractEntity.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Account.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Blockable.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Bookmark.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Contact.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Conversation.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Conversational.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/DownloadableFile.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Edit.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/IndividualMessage.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ListItem.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/MTMDecision.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Message.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/MucOptions.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Presence.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/PresenceTemplate.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Presences.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/RawBlockable.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ReadByMarker.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ReceiptRequest.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Room.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Roster.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/RtpSessionStatus.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ServiceDiscoveryResult.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/StubConversation.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Transferable.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/TransferablePlaceholder.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/IqGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/MessageGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/http/AesGcmURL.java delete mode 100644 src/main/java/eu/siacs/conversations/http/HttpConnectionManager.java delete mode 100644 src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/http/Method.java delete mode 100644 src/main/java/eu/siacs/conversations/http/SlotRequester.java delete mode 100644 src/main/java/eu/siacs/conversations/http/URL.java delete mode 100644 src/main/java/eu/siacs/conversations/http/services/MuclumbusService.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/AbstractParser.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/IqParser.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/MessageParser.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/PresenceParser.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/FileBackend.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/OnPhoneContactsMerged.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/UnifiedPushDatabase.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AbstractConnectionManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AbstractQuickConversationsService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AppRTCAudioManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AppRTCBluetoothManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AppRTCProximitySensor.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AvatarService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/BarcodeProvider.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ChannelDiscoveryService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/EventReceiver.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ExportBackupService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MediaPlayer.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MemorizingTrustManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MessageArchiveService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MessageSearchTask.java delete mode 100644 src/main/java/eu/siacs/conversations/services/NotificationService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ShortcutService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/UnifiedPushBroker.java delete mode 100644 src/main/java/eu/siacs/conversations/services/UnifiedPushDistributor.java delete mode 100644 src/main/java/eu/siacs/conversations/services/XmppConnectionService.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/AboutActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/AboutPreference.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/AbstractSearchableListItemActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ActionBarActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/BlockContactDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/BlocklistActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChannelDiscoveryActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChooseAccountForProfilePictureActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/CreatePrivateGroupChatDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/CreatePublicChannelDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/JoinConferenceDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/LocationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/MediaBrowserActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/MemorizingActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/MucUsersActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/OmemoActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/PublishGroupChatProfilePictureActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/RecordingActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ScanActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/SearchActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/SettingsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/SettingsFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShareLocationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShortcutActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShowLocationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/TimePreference.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/UiCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/UiInformableCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/UriHandlerActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/XmppActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/XmppFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/ChannelSearchResultAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/KnownHostsAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/MediaAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/MediaPreviewAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/PresenceTemplateAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/UserAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/UserPreviewAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormBooleanFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormFieldFactory.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormJidSingleFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormTextFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnAvatarPublication.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnBackendConnected.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationArchived.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationRead.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationSelected.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationsListItemUpdated.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnMediaLoaded.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnSearchResultsAvailable.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/service/AudioPlayer.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/service/CameraManager.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/text/DividerSpan.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/text/FixedURLSpan.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/text/QuoteSpan.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ActionBarUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ActivityResult.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/Attachment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/AvatarWorkerTask.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ChangeWatcher.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ConversationMenuConfigurator.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/DateSeparator.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/DelayedHintHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/EditMessageActionModeCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/GridManager.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/JidDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ListViewUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/LocationHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MainThreadExecutor.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MenuDoubleTabUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MucConfiguration.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/PendingActionHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/PresenceSelector.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/QuoteHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/Rationals.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ScrollState.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SendButtonAction.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SendButtonTool.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SettingsUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ShareUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SoftKeyboardUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/StyledAttributes.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/UriHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ViewUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/ClickableMovementMethod.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/DisabledActionModeCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/EditMessage.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/ImmediateAutoCompleteTextView.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/Marker.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/MyLocation.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/ScannerView.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/SquareFrameLayout.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/SurfaceViewRenderer.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/SwipeRefreshListFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/TextInputEditText.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/UnreadCountCustomView.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AccountUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AndroidUsingExecLowPriority.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AppRTCUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AsciiArmor.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/BackupFileHeader.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Cancellable.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/CharSequenceUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Checksum.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Compatibility.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ConversationsFileObserver.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/CryptoHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/CursorUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/EasyOnboardingInvite.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Emoticons.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ExceptionHandler.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/FileUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/FileWriterException.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/FtsUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/GeoHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/IP.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ImStyleParser.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/IrregularUnicodeDetector.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/JidHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/LanguageUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/LocationProvider.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/MessageUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/MimeUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/NickValidityChecker.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/OnPhoneContactsLoadedListener.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Patterns.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/PermissionUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/PhoneHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/QuickLoader.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Random.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ReplacingSerialSingleThreadExecutor.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ReplacingTaskManager.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/SSLSockets.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/SerialSingleThreadExecutor.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/StringUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/StylingHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TLSSocketFactory.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ThemeHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TimeFrameUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TorServiceUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TranscoderStrategies.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/UIHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/WakeLockHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/WeakReferenceSet.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/XEP0392Helper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/XmlHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/XmppUri.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/Element.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/LocalizedContent.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/Namespace.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/Tag.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/TagWriter.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/XmlElementReader.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/XmlReader.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/InvalidJid.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/IqResponseException.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/Jid.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnAdvancedStreamFeaturesLoaded.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnBindListener.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnContactStatusChanged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnIqPacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnKeyStatusUpdated.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnMessageAcknowledged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnMessagePacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnPresencePacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnStatusChanged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnUpdateBlocklist.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/PacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/WrappedJid.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/chatstate/ChatState.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/forms/Data.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/forms/Field.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/AbstractJingleConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/ContentAddition.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/DirectConnectionUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleCandidate.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleFileTransferConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInBandTransport.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleTransport.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/Media.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/MediaBuilder.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OmemoVerification.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OmemoVerifiedRtpContentMap.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnFileTransmissionStatusChanged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnJinglePacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnPrimaryCandidateFound.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnTransportConnected.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OngoingRtpSession.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/RtpCapability.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/RtpContentMap.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/RtpEndUserState.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/SessionDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/SessionDescriptionBuilder.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/ToneManager.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/TrackWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/VideoSourceWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Content.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/FileTransferDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/GenericDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/GenericTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Group.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/IbbTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/IceUdpTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/JinglePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/OmemoVerifiedIceUdpTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Proceed.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Propose.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Reason.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/RtpDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/S5BTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/mam/MamReference.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/pep/PublishOptions.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractAcknowledgeableStanza.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractStanza.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/IqPacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/PresencePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/csi/ActivePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/csi/InactivePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/AckPacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/EnablePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/RequestPacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/ResumePacket.java delete mode 100644 src/main/res/drawable-hdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-hdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-hdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-hdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-hdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-hdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-hdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-hdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_profile.png delete mode 100644 src/main/res/drawable-hdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-hdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-hdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-hdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-hdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-hdpi/marker.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-hdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-hdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-hdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-hdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-hdpi/play_video_black.png delete mode 100644 src/main/res/drawable-hdpi/play_video_white.png delete mode 100644 src/main/res/drawable-mdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-mdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-mdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-mdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-mdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-mdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-mdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-mdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_profile.png delete mode 100644 src/main/res/drawable-mdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-mdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-mdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-mdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-mdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-mdpi/marker.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-mdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-mdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-mdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-mdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-mdpi/play_video_black.png delete mode 100644 src/main/res/drawable-mdpi/play_video_white.png delete mode 100644 src/main/res/drawable-xhdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-xhdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-xhdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-xhdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-xhdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-xhdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-xhdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-xhdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_profile.png delete mode 100644 src/main/res/drawable-xhdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-xhdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-xhdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-xhdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-xhdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-xhdpi/marker.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-xhdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-xhdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-xhdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-xhdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-xhdpi/play_video_black.png delete mode 100644 src/main/res/drawable-xhdpi/play_video_white.png delete mode 100644 src/main/res/drawable-xxhdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-xxhdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-xxhdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-xxhdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-xxhdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_profile.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-xxhdpi/marker.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-xxhdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-xxhdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-xxhdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-xxhdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-xxhdpi/play_video_black.png delete mode 100644 src/main/res/drawable-xxhdpi/play_video_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-xxxhdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-xxxhdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-xxxhdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/marker.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_video_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_video_white.png delete mode 100644 src/main/res/drawable/account_image_border.xml delete mode 100644 src/main/res/drawable/background.xml delete mode 100644 src/main/res/drawable/es_slidingpane_shadow.xml delete mode 100644 src/main/res/drawable/grey.xml delete mode 100644 src/main/res/drawable/greybackground.xml delete mode 100644 src/main/res/drawable/ic_baseline_check_24.xml delete mode 100644 src/main/res/drawable/ic_call_black54_24dp.xml delete mode 100644 src/main/res/drawable/ic_call_missed_white_24db.xml delete mode 100644 src/main/res/drawable/ic_call_white70_24dp.xml delete mode 100644 src/main/res/drawable/ic_directions_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_gps_fixed_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_gps_not_fixed_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_launcher_foreground.xml delete mode 100644 src/main/res/drawable/ic_place_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_scroll_to_end_black.xml delete mode 100644 src/main/res/drawable/ic_scroll_to_end_white.xml delete mode 100644 src/main/res/drawable/ic_videocam_black54_24dp.xml delete mode 100644 src/main/res/drawable/ic_videocam_white70_24dp.xml delete mode 100644 src/main/res/drawable/ic_visibility.xml delete mode 100644 src/main/res/drawable/ic_visibility_off.xml delete mode 100644 src/main/res/drawable/list_item_background_dark.xml delete mode 100644 src/main/res/drawable/list_item_background_light.xml delete mode 100644 src/main/res/drawable/no_results_background_dark.xml delete mode 100644 src/main/res/drawable/no_results_background_light.xml delete mode 100644 src/main/res/drawable/no_results_primary_background_dark.xml delete mode 100644 src/main/res/drawable/no_results_primary_background_light.xml delete mode 100644 src/main/res/drawable/search_background_dark.xml delete mode 100644 src/main/res/drawable/search_background_light.xml delete mode 100644 src/main/res/drawable/snackbar.xml delete mode 100644 src/main/res/drawable/visibility_toggle_drawable.xml delete mode 100644 src/main/res/drawable/white_cursor.xml delete mode 100644 src/main/res/layout-w945dp/activity_conversations.xml delete mode 100644 src/main/res/layout/account_row.xml delete mode 100644 src/main/res/layout/actionview_search.xml delete mode 100644 src/main/res/layout/activity_about.xml delete mode 100644 src/main/res/layout/activity_change_password.xml delete mode 100644 src/main/res/layout/activity_channel_discovery.xml delete mode 100644 src/main/res/layout/activity_choose_contact.xml delete mode 100644 src/main/res/layout/activity_contact_details.xml delete mode 100644 src/main/res/layout/activity_conversations.xml delete mode 100644 src/main/res/layout/activity_edit_account.xml delete mode 100644 src/main/res/layout/activity_manage_accounts.xml delete mode 100644 src/main/res/layout/activity_media_browser.xml delete mode 100644 src/main/res/layout/activity_muc_details.xml delete mode 100644 src/main/res/layout/activity_muc_users.xml delete mode 100644 src/main/res/layout/activity_publish_profile_picture.xml delete mode 100644 src/main/res/layout/activity_recording.xml delete mode 100644 src/main/res/layout/activity_rtp_session.xml delete mode 100644 src/main/res/layout/activity_scan.xml delete mode 100644 src/main/res/layout/activity_search.xml delete mode 100644 src/main/res/layout/activity_settings.xml delete mode 100644 src/main/res/layout/activity_share_location.xml delete mode 100644 src/main/res/layout/activity_share_with.xml delete mode 100644 src/main/res/layout/activity_show_location.xml delete mode 100644 src/main/res/layout/activity_start_conversation.xml delete mode 100644 src/main/res/layout/activity_trust_keys.xml delete mode 100644 src/main/res/layout/activity_uri_handler.xml delete mode 100644 src/main/res/layout/captcha.xml delete mode 100644 src/main/res/layout/contact.xml delete mode 100644 src/main/res/layout/contact_key.xml delete mode 100644 src/main/res/layout/conversation_list_row.xml delete mode 100644 src/main/res/layout/create_conference_dialog.xml delete mode 100644 src/main/res/layout/create_public_channel_dialog.xml delete mode 100644 src/main/res/layout/dialog_block_contact.xml delete mode 100644 src/main/res/layout/dialog_clear_history.xml delete mode 100644 src/main/res/layout/dialog_join_conference.xml delete mode 100644 src/main/res/layout/dialog_presence.xml delete mode 100644 src/main/res/layout/dialog_quickedit.xml delete mode 100644 src/main/res/layout/dialog_verify_fingerprints.xml delete mode 100644 src/main/res/layout/enter_jid_dialog.xml delete mode 100644 src/main/res/layout/form_boolean.xml delete mode 100644 src/main/res/layout/form_text.xml delete mode 100644 src/main/res/layout/fragment_conversation.xml delete mode 100644 src/main/res/layout/fragment_conversations_overview.xml delete mode 100644 src/main/res/layout/keys_card.xml delete mode 100644 src/main/res/layout/list_item_tag.xml delete mode 100644 src/main/res/layout/media.xml delete mode 100644 src/main/res/layout/media_preview.xml delete mode 100644 src/main/res/layout/message_content.xml delete mode 100644 src/main/res/layout/message_date_bubble.xml delete mode 100644 src/main/res/layout/message_received.xml delete mode 100644 src/main/res/layout/message_rtp_session.xml delete mode 100644 src/main/res/layout/message_sent.xml delete mode 100644 src/main/res/layout/message_status.xml delete mode 100644 src/main/res/layout/presence_template.xml delete mode 100644 src/main/res/layout/search_result_item.xml delete mode 100644 src/main/res/layout/simple_list_item.xml delete mode 100644 src/main/res/layout/toolbar.xml delete mode 100644 src/main/res/layout/user_preview.xml delete mode 100644 src/main/res/menu/account_context.xml delete mode 100644 src/main/res/menu/activity_conversations.xml delete mode 100644 src/main/res/menu/activity_publish_profile_picture.xml delete mode 100644 src/main/res/menu/activity_rtp_session.xml delete mode 100644 src/main/res/menu/activity_search.xml delete mode 100644 src/main/res/menu/block.xml delete mode 100644 src/main/res/menu/channel_discovery_activity.xml delete mode 100644 src/main/res/menu/channel_item_context.xml delete mode 100644 src/main/res/menu/choose_contact.xml delete mode 100644 src/main/res/menu/conference_context.xml delete mode 100644 src/main/res/menu/contact_context.xml delete mode 100644 src/main/res/menu/contact_details.xml delete mode 100644 src/main/res/menu/edit_message_actions.xml delete mode 100644 src/main/res/menu/editaccount.xml delete mode 100644 src/main/res/menu/fragment_conversation.xml delete mode 100644 src/main/res/menu/fragment_conversations_overview.xml delete mode 100644 src/main/res/menu/import_backup.xml delete mode 100644 src/main/res/menu/manageaccounts_context.xml delete mode 100644 src/main/res/menu/menu_show_location.xml delete mode 100644 src/main/res/menu/message_context.xml delete mode 100644 src/main/res/menu/muc_details.xml delete mode 100644 src/main/res/menu/muc_details_context.xml delete mode 100644 src/main/res/menu/muc_users_activity.xml delete mode 100644 src/main/res/menu/omemo_key_context.xml delete mode 100644 src/main/res/menu/one_on_one_context.xml delete mode 100644 src/main/res/menu/search_result_context.xml delete mode 100644 src/main/res/menu/share_with.xml delete mode 100644 src/main/res/menu/start_conversation.xml delete mode 100644 src/main/res/menu/start_conversation_fab_submenu.xml delete mode 100644 src/main/res/menu/trust_keys.xml delete mode 100644 src/main/res/mipmap-hdpi/new_launcher.png delete mode 100644 src/main/res/mipmap-hdpi/new_launcher_round.png delete mode 100644 src/main/res/raw/countries delete mode 100644 src/main/res/values-h360dp/dimens.xml delete mode 100644 src/main/res/values-h500dp/dimens.xml delete mode 100644 src/main/res/values-land/dimens.xml delete mode 100644 src/main/res/values-night/colors.xml delete mode 100644 src/main/res/values-qwerty/defaults.xml delete mode 100644 src/main/res/values-sw600dp/defaults.xml delete mode 100644 src/main/res/values-v29/theme-settings.xml delete mode 100644 src/main/res/values-w384dp/dimens.xml delete mode 100644 src/main/res/values-w585dp/dimens.xml delete mode 100644 src/main/res/values-w945dp/defaults.xml delete mode 100644 src/main/res/values-w945dp/dimens.xml delete mode 100644 src/main/res/values/about.xml delete mode 100644 src/main/res/values/arrays.xml delete mode 100644 src/main/res/values/attrs.xml delete mode 100644 src/main/res/values/bools.xml delete mode 100644 src/main/res/values/colors.xml delete mode 100644 src/main/res/values/defaults.xml delete mode 100644 src/main/res/values/dimens.xml delete mode 100644 src/main/res/values/ids.xml delete mode 100644 src/main/res/values/styles.xml delete mode 100644 src/main/res/values/theme-settings.xml delete mode 100644 src/main/res/values/themes.xml delete mode 100644 src/main/res/xml/automotive_app_desc.xml delete mode 100644 src/main/res/xml/backup_content.xml delete mode 100644 src/main/res/xml/file_paths.xml delete mode 100644 src/main/res/xml/network_security_configuration.xml delete mode 100644 src/main/res/xml/preferences.xml delete mode 100644 src/playstore/AndroidManifest.xml delete mode 100644 src/playstore/java/eu/siacs/conversations/services/EmojiInitializationService.java delete mode 100644 src/playstore/java/eu/siacs/conversations/services/MaintenanceReceiver.java delete mode 100644 src/playstore/java/eu/siacs/conversations/services/PushManagementService.java delete mode 100644 src/playstore/java/eu/siacs/conversations/services/PushMessageReceiver.java delete mode 100644 src/quicksy/AndroidManifest.xml delete mode 100644 src/quicksy/java/eu/siacs/conversations/android/PhoneNumberContact.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/entities/Entry.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/services/QuickConversationsService.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/services/SMSReceiver.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/ChooseCountryActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/EnterNameActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/EnterPhoneNumberActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/TosActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/adapter/CountryAdapter.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/drawable/TextDrawable.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/util/ApiDialogHelper.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/util/PinEntryWrapper.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/utils/ProvisioningUtils.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/utils/SignupUtils.java delete mode 100644 src/quicksy/new_launcher-web.png delete mode 100644 src/quicksy/res/drawable-hdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-hdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-hdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-hdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-hdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-mdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-mdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-mdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-mdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-mdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-xhdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-xhdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-xhdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-xhdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-xhdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/splash_logo.png delete mode 100644 src/quicksy/res/layout/activity_choose_country.xml delete mode 100644 src/quicksy/res/layout/activity_enter_name.xml delete mode 100644 src/quicksy/res/layout/activity_enter_number.xml delete mode 100644 src/quicksy/res/layout/activity_tos.xml delete mode 100644 src/quicksy/res/layout/activity_verify.xml delete mode 100644 src/quicksy/res/layout/country_item.xml delete mode 100644 src/quicksy/res/menu/choose_country.xml delete mode 100644 src/quicksyFree/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java delete mode 100644 src/quicksyPlaystore/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java diff --git a/annotation-processor/build.gradle b/annotation-processor/build.gradle new file mode 100644 index 000000000..4518d0e5b --- /dev/null +++ b/annotation-processor/build.gradle @@ -0,0 +1,14 @@ +apply plugin: "java-library" + +java { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 +} +dependencies { + + implementation project(':annotation') + + annotationProcessor 'com.google.auto.service:auto-service:1.0.1' + compileOnly 'com.google.auto.service:auto-service:1.0.1' + +} \ No newline at end of file diff --git a/libs/annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java b/annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java similarity index 100% rename from libs/annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java rename to annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java diff --git a/annotation/build.gradle b/annotation/build.gradle new file mode 100644 index 000000000..d5917e460 --- /dev/null +++ b/annotation/build.gradle @@ -0,0 +1,6 @@ +apply plugin: "java-library" + +java { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 +} \ No newline at end of file diff --git a/libs/annotation/src/main/java/im/conversations/android/annotation/XmlElement.java b/annotation/src/main/java/im/conversations/android/annotation/XmlElement.java similarity index 100% rename from libs/annotation/src/main/java/im/conversations/android/annotation/XmlElement.java rename to annotation/src/main/java/im/conversations/android/annotation/XmlElement.java diff --git a/libs/annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java b/annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java similarity index 100% rename from libs/annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java rename to annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 000000000..7711816a5 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,127 @@ +apply plugin: "com.android.application" +apply plugin: "androidx.navigation.safeargs" +apply plugin: "com.diffplug.spotless" + + +android { + namespace 'im.conversations.android' + compileSdk 33 + + defaultConfig { + minSdk 23 + targetSdk 33 + versionCode 1 + versionName "3.0.0-alpha" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + javaCompileOptions { + annotationProcessorOptions { + arguments += ["room.schemaLocation": "$projectDir/schemas".toString()] + } + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + coreLibraryDesugaringEnabled true + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + buildFeatures { + dataBinding true + } + flavorDimensions "product" + productFlavors { + quicksy { + dimension "product" + applicationId = "im.quicksy.client" + + def appName = "Quicksy" + + resValue "string", "applicationId", applicationId + resValue "string", "app_name", appName + buildConfigField "String", "APP_NAME", "\"$appName\"" + } + conversations { + dimension "product" + applicationId "im.conversations.android" + + def appName = "Conversations" + + resValue "string", "applicationId", applicationId + resValue "string", "app_name", appName + buildConfigField "String", "APP_NAME", "\"$appName\"" + } + } + +} + +spotless { + java { + target '**/*.java' + googleJavaFormat('1.8').aosp().reflowLongStrings() + } +} + +dependencies { + implementation project(':annotation') + annotationProcessor project(':annotation-processor') + + // make Java 8 API available + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2' + + + // Jetpack / AndroidX libraries + implementation "androidx.appcompat:appcompat:$rootProject.ext.appcompatVersion" + + implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.ext.lifecycleVersion" + implementation "androidx.navigation:navigation-fragment:$rootProject.ext.navVersion" + implementation "androidx.navigation:navigation-ui:$rootProject.ext.navVersion" + + implementation "androidx.room:room-runtime:$rootProject.ext.roomVersion" + implementation "androidx.room:room-guava:$rootProject.ext.roomVersion" + annotationProcessor "androidx.room:room-compiler:$rootProject.ext.roomVersion" + + implementation "androidx.security:security-crypto:1.0.0" + + + // Google material design libraries + implementation "com.google.android.material:material:$rootProject.ext.material" + + + // crypto libraries + implementation 'org.whispersystems:signal-protocol-java:2.6.2' + implementation 'org.conscrypt:conscrypt-android:2.5.2' + implementation 'org.bouncycastle:bcmail-jdk15on:1.64' + + + // XMPP Address library + implementation 'org.jxmpp:jxmpp-jid:1.0.3' + + // DNS library (XMPP needs to resolve SRV records) + implementation 'de.measite.minidns:minidns-hla:0.2.4' + + // Guava + implementation 'com.google.guava:guava:31.1-android' + + // HTTP library + implementation "com.squareup.okhttp3:okhttp:4.10.0" + + // JSON parser + implementation 'com.google.code.gson:gson:2.10.1' + + // logging framework + logging api + implementation 'org.slf4j:slf4j-api:1.7.36' + implementation 'com.github.tony19:logback-android:2.0.1' + + testImplementation 'junit:junit:4.13.2' + testImplementation 'org.robolectric:robolectric:4.9.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.ext.espressoVersion" +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/schemas/im.conversations.android.database.ConversationsDatabase/1.json b/app/schemas/im.conversations.android.database.ConversationsDatabase/1.json similarity index 100% rename from schemas/im.conversations.android.database.ConversationsDatabase/1.json rename to app/schemas/im.conversations.android.database.ConversationsDatabase/1.json diff --git a/src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java b/app/src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java similarity index 100% rename from src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java rename to app/src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java diff --git a/src/conversations/res/drawable/ic_launcher_foreground.xml b/app/src/conversations/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from src/conversations/res/drawable/ic_launcher_foreground.xml rename to app/src/conversations/res/drawable/ic_launcher_foreground.xml diff --git a/src/conversations/res/mipmap-anydpi-v26/new_launcher.xml b/app/src/conversations/res/mipmap-anydpi-v26/new_launcher.xml similarity index 100% rename from src/conversations/res/mipmap-anydpi-v26/new_launcher.xml rename to app/src/conversations/res/mipmap-anydpi-v26/new_launcher.xml diff --git a/src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml b/app/src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml similarity index 100% rename from src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml rename to app/src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml diff --git a/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-hdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-hdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-hdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-hdpi/new_launcher.png b/app/src/conversations/res/mipmap-hdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-hdpi/new_launcher.png rename to app/src/conversations/res/mipmap-hdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-hdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-hdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-hdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-hdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-mdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-mdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-mdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-mdpi/new_launcher.png b/app/src/conversations/res/mipmap-mdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-mdpi/new_launcher.png rename to app/src/conversations/res/mipmap-mdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-mdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-mdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-mdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-mdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-xhdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-xhdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-xhdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-xhdpi/new_launcher.png b/app/src/conversations/res/mipmap-xhdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-xhdpi/new_launcher.png rename to app/src/conversations/res/mipmap-xhdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-xhdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-xhdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-xhdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-xhdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-xxhdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-xxhdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-xxhdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-xxhdpi/new_launcher.png b/app/src/conversations/res/mipmap-xxhdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-xxhdpi/new_launcher.png rename to app/src/conversations/res/mipmap-xxhdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-xxhdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-xxhdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-xxhdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-xxhdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-xxxhdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-xxxhdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-xxxhdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-xxxhdpi/new_launcher.png b/app/src/conversations/res/mipmap-xxxhdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-xxxhdpi/new_launcher.png rename to app/src/conversations/res/mipmap-xxxhdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png diff --git a/src/conversations/res/values-ar/strings.xml b/app/src/conversations/res/values-ar/strings.xml similarity index 100% rename from src/conversations/res/values-ar/strings.xml rename to app/src/conversations/res/values-ar/strings.xml diff --git a/src/conversations/res/values-bg/strings.xml b/app/src/conversations/res/values-bg/strings.xml similarity index 100% rename from src/conversations/res/values-bg/strings.xml rename to app/src/conversations/res/values-bg/strings.xml diff --git a/src/conversations/res/values-bn-rIN/strings.xml b/app/src/conversations/res/values-bn-rIN/strings.xml similarity index 100% rename from src/conversations/res/values-bn-rIN/strings.xml rename to app/src/conversations/res/values-bn-rIN/strings.xml diff --git a/src/conversations/res/values-ca/strings.xml b/app/src/conversations/res/values-ca/strings.xml similarity index 100% rename from src/conversations/res/values-ca/strings.xml rename to app/src/conversations/res/values-ca/strings.xml diff --git a/src/conversations/res/values-da-rDK/strings.xml b/app/src/conversations/res/values-da-rDK/strings.xml similarity index 100% rename from src/conversations/res/values-da-rDK/strings.xml rename to app/src/conversations/res/values-da-rDK/strings.xml diff --git a/src/conversations/res/values-de/strings.xml b/app/src/conversations/res/values-de/strings.xml similarity index 100% rename from src/conversations/res/values-de/strings.xml rename to app/src/conversations/res/values-de/strings.xml diff --git a/src/conversations/res/values-el/strings.xml b/app/src/conversations/res/values-el/strings.xml similarity index 100% rename from src/conversations/res/values-el/strings.xml rename to app/src/conversations/res/values-el/strings.xml diff --git a/src/conversations/res/values-es/strings.xml b/app/src/conversations/res/values-es/strings.xml similarity index 100% rename from src/conversations/res/values-es/strings.xml rename to app/src/conversations/res/values-es/strings.xml diff --git a/src/conversations/res/values-eu/strings.xml b/app/src/conversations/res/values-eu/strings.xml similarity index 100% rename from src/conversations/res/values-eu/strings.xml rename to app/src/conversations/res/values-eu/strings.xml diff --git a/src/conversations/res/values-fa-rIR/strings.xml b/app/src/conversations/res/values-fa-rIR/strings.xml similarity index 100% rename from src/conversations/res/values-fa-rIR/strings.xml rename to app/src/conversations/res/values-fa-rIR/strings.xml diff --git a/src/conversations/res/values-fi/strings.xml b/app/src/conversations/res/values-fi/strings.xml similarity index 100% rename from src/conversations/res/values-fi/strings.xml rename to app/src/conversations/res/values-fi/strings.xml diff --git a/src/conversations/res/values-fr/strings.xml b/app/src/conversations/res/values-fr/strings.xml similarity index 100% rename from src/conversations/res/values-fr/strings.xml rename to app/src/conversations/res/values-fr/strings.xml diff --git a/src/conversations/res/values-gl/strings.xml b/app/src/conversations/res/values-gl/strings.xml similarity index 100% rename from src/conversations/res/values-gl/strings.xml rename to app/src/conversations/res/values-gl/strings.xml diff --git a/src/conversations/res/values-hr/strings.xml b/app/src/conversations/res/values-hr/strings.xml similarity index 100% rename from src/conversations/res/values-hr/strings.xml rename to app/src/conversations/res/values-hr/strings.xml diff --git a/src/conversations/res/values-hu/strings.xml b/app/src/conversations/res/values-hu/strings.xml similarity index 100% rename from src/conversations/res/values-hu/strings.xml rename to app/src/conversations/res/values-hu/strings.xml diff --git a/src/conversations/res/values-id/strings.xml b/app/src/conversations/res/values-id/strings.xml similarity index 100% rename from src/conversations/res/values-id/strings.xml rename to app/src/conversations/res/values-id/strings.xml diff --git a/src/conversations/res/values-it/strings.xml b/app/src/conversations/res/values-it/strings.xml similarity index 100% rename from src/conversations/res/values-it/strings.xml rename to app/src/conversations/res/values-it/strings.xml diff --git a/src/conversations/res/values-ja/strings.xml b/app/src/conversations/res/values-ja/strings.xml similarity index 100% rename from src/conversations/res/values-ja/strings.xml rename to app/src/conversations/res/values-ja/strings.xml diff --git a/src/conversations/res/values-nl/strings.xml b/app/src/conversations/res/values-nl/strings.xml similarity index 100% rename from src/conversations/res/values-nl/strings.xml rename to app/src/conversations/res/values-nl/strings.xml diff --git a/src/conversations/res/values-pl/strings.xml b/app/src/conversations/res/values-pl/strings.xml similarity index 100% rename from src/conversations/res/values-pl/strings.xml rename to app/src/conversations/res/values-pl/strings.xml diff --git a/src/conversations/res/values-pt-rBR/strings.xml b/app/src/conversations/res/values-pt-rBR/strings.xml similarity index 100% rename from src/conversations/res/values-pt-rBR/strings.xml rename to app/src/conversations/res/values-pt-rBR/strings.xml diff --git a/src/conversations/res/values-pt/strings.xml b/app/src/conversations/res/values-pt/strings.xml similarity index 100% rename from src/conversations/res/values-pt/strings.xml rename to app/src/conversations/res/values-pt/strings.xml diff --git a/src/conversations/res/values-ro-rRO/strings.xml b/app/src/conversations/res/values-ro-rRO/strings.xml similarity index 100% rename from src/conversations/res/values-ro-rRO/strings.xml rename to app/src/conversations/res/values-ro-rRO/strings.xml diff --git a/src/conversations/res/values-ru/strings.xml b/app/src/conversations/res/values-ru/strings.xml similarity index 100% rename from src/conversations/res/values-ru/strings.xml rename to app/src/conversations/res/values-ru/strings.xml diff --git a/src/conversations/res/values-sk/strings.xml b/app/src/conversations/res/values-sk/strings.xml similarity index 100% rename from src/conversations/res/values-sk/strings.xml rename to app/src/conversations/res/values-sk/strings.xml diff --git a/src/conversations/res/values-sq/strings.xml b/app/src/conversations/res/values-sq/strings.xml similarity index 100% rename from src/conversations/res/values-sq/strings.xml rename to app/src/conversations/res/values-sq/strings.xml diff --git a/src/conversations/res/values-sr/strings.xml b/app/src/conversations/res/values-sr/strings.xml similarity index 100% rename from src/conversations/res/values-sr/strings.xml rename to app/src/conversations/res/values-sr/strings.xml diff --git a/src/conversations/res/values-sv/strings.xml b/app/src/conversations/res/values-sv/strings.xml similarity index 100% rename from src/conversations/res/values-sv/strings.xml rename to app/src/conversations/res/values-sv/strings.xml diff --git a/src/conversations/res/values-szl/strings.xml b/app/src/conversations/res/values-szl/strings.xml similarity index 100% rename from src/conversations/res/values-szl/strings.xml rename to app/src/conversations/res/values-szl/strings.xml diff --git a/src/conversations/res/values-tr-rTR/strings.xml b/app/src/conversations/res/values-tr-rTR/strings.xml similarity index 100% rename from src/conversations/res/values-tr-rTR/strings.xml rename to app/src/conversations/res/values-tr-rTR/strings.xml diff --git a/src/conversations/res/values-uk/strings.xml b/app/src/conversations/res/values-uk/strings.xml similarity index 100% rename from src/conversations/res/values-uk/strings.xml rename to app/src/conversations/res/values-uk/strings.xml diff --git a/src/conversations/res/values-vi/strings.xml b/app/src/conversations/res/values-vi/strings.xml similarity index 100% rename from src/conversations/res/values-vi/strings.xml rename to app/src/conversations/res/values-vi/strings.xml diff --git a/src/conversations/res/values-zh-rCN/strings.xml b/app/src/conversations/res/values-zh-rCN/strings.xml similarity index 100% rename from src/conversations/res/values-zh-rCN/strings.xml rename to app/src/conversations/res/values-zh-rCN/strings.xml diff --git a/src/conversations/res/values-zh-rTW/strings.xml b/app/src/conversations/res/values-zh-rTW/strings.xml similarity index 100% rename from src/conversations/res/values-zh-rTW/strings.xml rename to app/src/conversations/res/values-zh-rTW/strings.xml diff --git a/src/conversations/res/values/strings.xml b/app/src/conversations/res/values/strings.xml similarity index 100% rename from src/conversations/res/values/strings.xml rename to app/src/conversations/res/values/strings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..808baf278 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/assets/logback.xml b/app/src/main/assets/logback.xml similarity index 100% rename from src/main/assets/logback.xml rename to app/src/main/assets/logback.xml diff --git a/src/main/java/im/conversations/android/Conversations.java b/app/src/main/java/im/conversations/android/Conversations.java similarity index 79% rename from src/main/java/im/conversations/android/Conversations.java rename to app/src/main/java/im/conversations/android/Conversations.java index f34ffed9c..16005816d 100644 --- a/src/main/java/im/conversations/android/Conversations.java +++ b/app/src/main/java/im/conversations/android/Conversations.java @@ -1,7 +1,11 @@ package im.conversations.android; import android.app.Application; + +import androidx.appcompat.app.AppCompatDelegate; + import com.google.android.material.color.DynamicColors; +import im.conversations.android.dns.Resolver; import im.conversations.android.xmpp.ConnectionPool; import java.security.SecureRandom; import java.security.Security; @@ -23,7 +27,9 @@ public class Conversations extends Application { } catch (final Throwable throwable) { LOGGER.warn("Could not initialize security provider", throwable); } + Resolver.init(this); ConnectionPool.getInstance(this).reconfigure(); + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); //For night mode theme DynamicColors.applyToActivitiesIfAvailable(this); } } diff --git a/src/main/java/im/conversations/android/IDs.java b/app/src/main/java/im/conversations/android/IDs.java similarity index 100% rename from src/main/java/im/conversations/android/IDs.java rename to app/src/main/java/im/conversations/android/IDs.java diff --git a/src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java b/app/src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java similarity index 100% rename from src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java rename to app/src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java diff --git a/src/main/java/im/conversations/android/database/ConversationsDatabase.java b/app/src/main/java/im/conversations/android/database/ConversationsDatabase.java similarity index 100% rename from src/main/java/im/conversations/android/database/ConversationsDatabase.java rename to app/src/main/java/im/conversations/android/database/ConversationsDatabase.java diff --git a/src/main/java/im/conversations/android/database/Converters.java b/app/src/main/java/im/conversations/android/database/Converters.java similarity index 100% rename from src/main/java/im/conversations/android/database/Converters.java rename to app/src/main/java/im/conversations/android/database/Converters.java diff --git a/src/main/java/im/conversations/android/database/CredentialStore.java b/app/src/main/java/im/conversations/android/database/CredentialStore.java similarity index 100% rename from src/main/java/im/conversations/android/database/CredentialStore.java rename to app/src/main/java/im/conversations/android/database/CredentialStore.java diff --git a/src/main/java/im/conversations/android/database/dao/AccountDao.java b/app/src/main/java/im/conversations/android/database/dao/AccountDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/AccountDao.java rename to app/src/main/java/im/conversations/android/database/dao/AccountDao.java diff --git a/src/main/java/im/conversations/android/database/dao/AvatarDao.java b/app/src/main/java/im/conversations/android/database/dao/AvatarDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/AvatarDao.java rename to app/src/main/java/im/conversations/android/database/dao/AvatarDao.java diff --git a/src/main/java/im/conversations/android/database/dao/AxolotlDao.java b/app/src/main/java/im/conversations/android/database/dao/AxolotlDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/AxolotlDao.java rename to app/src/main/java/im/conversations/android/database/dao/AxolotlDao.java diff --git a/src/main/java/im/conversations/android/database/dao/BlockingDao.java b/app/src/main/java/im/conversations/android/database/dao/BlockingDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/BlockingDao.java rename to app/src/main/java/im/conversations/android/database/dao/BlockingDao.java diff --git a/src/main/java/im/conversations/android/database/dao/BookmarkDao.java b/app/src/main/java/im/conversations/android/database/dao/BookmarkDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/BookmarkDao.java rename to app/src/main/java/im/conversations/android/database/dao/BookmarkDao.java diff --git a/src/main/java/im/conversations/android/database/dao/ChatDao.java b/app/src/main/java/im/conversations/android/database/dao/ChatDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/ChatDao.java rename to app/src/main/java/im/conversations/android/database/dao/ChatDao.java diff --git a/src/main/java/im/conversations/android/database/dao/DiscoDao.java b/app/src/main/java/im/conversations/android/database/dao/DiscoDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/DiscoDao.java rename to app/src/main/java/im/conversations/android/database/dao/DiscoDao.java diff --git a/src/main/java/im/conversations/android/database/dao/MessageDao.java b/app/src/main/java/im/conversations/android/database/dao/MessageDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/MessageDao.java rename to app/src/main/java/im/conversations/android/database/dao/MessageDao.java diff --git a/src/main/java/im/conversations/android/database/dao/NickDao.java b/app/src/main/java/im/conversations/android/database/dao/NickDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/NickDao.java rename to app/src/main/java/im/conversations/android/database/dao/NickDao.java diff --git a/src/main/java/im/conversations/android/database/dao/PresenceDao.java b/app/src/main/java/im/conversations/android/database/dao/PresenceDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/PresenceDao.java rename to app/src/main/java/im/conversations/android/database/dao/PresenceDao.java diff --git a/src/main/java/im/conversations/android/database/dao/RosterDao.java b/app/src/main/java/im/conversations/android/database/dao/RosterDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/RosterDao.java rename to app/src/main/java/im/conversations/android/database/dao/RosterDao.java diff --git a/src/main/java/im/conversations/android/database/entity/AccountEntity.java b/app/src/main/java/im/conversations/android/database/entity/AccountEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AccountEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AccountEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java b/app/src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AvatarEntity.java b/app/src/main/java/im/conversations/android/database/entity/AvatarEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AvatarEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AvatarEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/BookmarkEntity.java b/app/src/main/java/im/conversations/android/database/entity/BookmarkEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/BookmarkEntity.java rename to app/src/main/java/im/conversations/android/database/entity/BookmarkEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/ChatEntity.java b/app/src/main/java/im/conversations/android/database/entity/ChatEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/ChatEntity.java rename to app/src/main/java/im/conversations/android/database/entity/ChatEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageContentEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageContentEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageContentEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageContentEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageStateEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageStateEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageStateEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageStateEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/NickEntity.java b/app/src/main/java/im/conversations/android/database/entity/NickEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/NickEntity.java rename to app/src/main/java/im/conversations/android/database/entity/NickEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/PresenceEntity.java b/app/src/main/java/im/conversations/android/database/entity/PresenceEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/PresenceEntity.java rename to app/src/main/java/im/conversations/android/database/entity/PresenceEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/RosterItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/RosterItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/RosterItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/RosterItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java b/app/src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java rename to app/src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java diff --git a/src/main/java/im/conversations/android/database/model/Account.java b/app/src/main/java/im/conversations/android/database/model/Account.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Account.java rename to app/src/main/java/im/conversations/android/database/model/Account.java diff --git a/src/main/java/im/conversations/android/database/model/AvatarBase.java b/app/src/main/java/im/conversations/android/database/model/AvatarBase.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/AvatarBase.java rename to app/src/main/java/im/conversations/android/database/model/AvatarBase.java diff --git a/src/main/java/im/conversations/android/database/model/AvatarExternal.java b/app/src/main/java/im/conversations/android/database/model/AvatarExternal.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/AvatarExternal.java rename to app/src/main/java/im/conversations/android/database/model/AvatarExternal.java diff --git a/src/main/java/im/conversations/android/database/model/AvatarThumbnail.java b/app/src/main/java/im/conversations/android/database/model/AvatarThumbnail.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/AvatarThumbnail.java rename to app/src/main/java/im/conversations/android/database/model/AvatarThumbnail.java diff --git a/src/main/java/im/conversations/android/database/model/ChatIdentifier.java b/app/src/main/java/im/conversations/android/database/model/ChatIdentifier.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/ChatIdentifier.java rename to app/src/main/java/im/conversations/android/database/model/ChatIdentifier.java diff --git a/src/main/java/im/conversations/android/database/model/ChatType.java b/app/src/main/java/im/conversations/android/database/model/ChatType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/ChatType.java rename to app/src/main/java/im/conversations/android/database/model/ChatType.java diff --git a/src/main/java/im/conversations/android/database/model/Connection.java b/app/src/main/java/im/conversations/android/database/model/Connection.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Connection.java rename to app/src/main/java/im/conversations/android/database/model/Connection.java diff --git a/src/main/java/im/conversations/android/database/model/Credential.java b/app/src/main/java/im/conversations/android/database/model/Credential.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Credential.java rename to app/src/main/java/im/conversations/android/database/model/Credential.java diff --git a/src/main/java/im/conversations/android/database/model/MessageContent.java b/app/src/main/java/im/conversations/android/database/model/MessageContent.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageContent.java rename to app/src/main/java/im/conversations/android/database/model/MessageContent.java diff --git a/src/main/java/im/conversations/android/database/model/MessageEmbedded.java b/app/src/main/java/im/conversations/android/database/model/MessageEmbedded.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageEmbedded.java rename to app/src/main/java/im/conversations/android/database/model/MessageEmbedded.java diff --git a/src/main/java/im/conversations/android/database/model/MessageIdentifier.java b/app/src/main/java/im/conversations/android/database/model/MessageIdentifier.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageIdentifier.java rename to app/src/main/java/im/conversations/android/database/model/MessageIdentifier.java diff --git a/src/main/java/im/conversations/android/database/model/MessageReaction.java b/app/src/main/java/im/conversations/android/database/model/MessageReaction.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageReaction.java rename to app/src/main/java/im/conversations/android/database/model/MessageReaction.java diff --git a/src/main/java/im/conversations/android/database/model/MessageState.java b/app/src/main/java/im/conversations/android/database/model/MessageState.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageState.java rename to app/src/main/java/im/conversations/android/database/model/MessageState.java diff --git a/src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java b/app/src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java rename to app/src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java diff --git a/src/main/java/im/conversations/android/database/model/Modification.java b/app/src/main/java/im/conversations/android/database/model/Modification.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Modification.java rename to app/src/main/java/im/conversations/android/database/model/Modification.java diff --git a/src/main/java/im/conversations/android/database/model/PartType.java b/app/src/main/java/im/conversations/android/database/model/PartType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/PartType.java rename to app/src/main/java/im/conversations/android/database/model/PartType.java diff --git a/src/main/java/im/conversations/android/database/model/PresenceShow.java b/app/src/main/java/im/conversations/android/database/model/PresenceShow.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/PresenceShow.java rename to app/src/main/java/im/conversations/android/database/model/PresenceShow.java diff --git a/src/main/java/im/conversations/android/database/model/PresenceType.java b/app/src/main/java/im/conversations/android/database/model/PresenceType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/PresenceType.java rename to app/src/main/java/im/conversations/android/database/model/PresenceType.java diff --git a/src/main/java/im/conversations/android/database/model/Proxy.java b/app/src/main/java/im/conversations/android/database/model/Proxy.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Proxy.java rename to app/src/main/java/im/conversations/android/database/model/Proxy.java diff --git a/src/main/java/im/conversations/android/database/model/StateType.java b/app/src/main/java/im/conversations/android/database/model/StateType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/StateType.java rename to app/src/main/java/im/conversations/android/database/model/StateType.java diff --git a/app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java b/app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java new file mode 100644 index 000000000..09d13813d --- /dev/null +++ b/app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java @@ -0,0 +1,88 @@ +/* + * Copyright 2015-2016 the original author or authors + * + * This software is licensed under the Apache License, Version 2.0, + * the GNU Lesser General Public License version 2 or later ("LGPL") + * and the WTFPL. + * You may choose either license to govern your use of this software only + * upon the condition that you accept all of the terms of either + * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. + */ +package im.conversations.android.dns; + +import de.measite.minidns.dnsserverlookup.AbstractDNSServerLookupMechanism; +import de.measite.minidns.dnsserverlookup.AndroidUsingReflection; +import de.measite.minidns.dnsserverlookup.DNSServerLookupMechanism; +import de.measite.minidns.util.PlatformDetection; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.LineNumberReader; +import java.net.InetAddress; +import java.util.HashSet; +import java.util.logging.Level; + +/** Try to retrieve the list of DNS server by executing getprop. */ +public class AndroidUsingExecLowPriority extends AbstractDNSServerLookupMechanism { + + public static final DNSServerLookupMechanism INSTANCE = new AndroidUsingExecLowPriority(); + public static final int PRIORITY = AndroidUsingReflection.PRIORITY + 1; + + private AndroidUsingExecLowPriority() { + super(AndroidUsingExecLowPriority.class.getSimpleName(), PRIORITY); + } + + @Override + public String[] getDnsServerAddresses() { + try { + Process process = Runtime.getRuntime().exec("getprop"); + InputStream inputStream = process.getInputStream(); + LineNumberReader lnr = new LineNumberReader(new InputStreamReader(inputStream)); + String line; + HashSet server = new HashSet<>(6); + while ((line = lnr.readLine()) != null) { + int split = line.indexOf("]: ["); + if (split == -1) { + continue; + } + String property = line.substring(1, split); + String value = line.substring(split + 4, line.length() - 1); + + if (value.isEmpty()) { + continue; + } + + if (property.endsWith(".dns") + || property.endsWith(".dns1") + || property.endsWith(".dns2") + || property.endsWith(".dns3") + || property.endsWith(".dns4")) { + + // normalize the address + + InetAddress ip = InetAddress.getByName(value); + + if (ip == null) continue; + + value = ip.getHostAddress(); + + if (value == null) continue; + if (value.length() == 0) continue; + + server.add(value); + } + } + if (server.size() > 0) { + return server.toArray(new String[server.size()]); + } + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Exception in findDNSByExec", e); + } + return null; + } + + @Override + public boolean isAvailable() { + return PlatformDetection.isAndroid(); + } +} diff --git a/src/main/java/eu/siacs/conversations/utils/AndroidUsingLinkProperties.java b/app/src/main/java/im/conversations/android/dns/AndroidUsingLinkProperties.java similarity index 67% rename from src/main/java/eu/siacs/conversations/utils/AndroidUsingLinkProperties.java rename to app/src/main/java/im/conversations/android/dns/AndroidUsingLinkProperties.java index 658e7abcd..e164f1b27 100644 --- a/src/main/java/eu/siacs/conversations/utils/AndroidUsingLinkProperties.java +++ b/app/src/main/java/im/conversations/android/dns/AndroidUsingLinkProperties.java @@ -1,22 +1,18 @@ -package eu.siacs.conversations.utils; +package im.conversations.android.dns; -import android.annotation.TargetApi; import android.content.Context; import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkInfo; import android.net.RouteInfo; -import android.os.Build; - +import de.measite.minidns.dnsserverlookup.AbstractDNSServerLookupMechanism; +import de.measite.minidns.dnsserverlookup.AndroidUsingExec; import java.net.Inet4Address; import java.net.InetAddress; import java.util.ArrayList; import java.util.List; -import de.measite.minidns.dnsserverlookup.AbstractDNSServerLookupMechanism; -import de.measite.minidns.dnsserverlookup.AndroidUsingExec; - public class AndroidUsingLinkProperties extends AbstractDNSServerLookupMechanism { private final Context context; @@ -28,47 +24,47 @@ public class AndroidUsingLinkProperties extends AbstractDNSServerLookupMechanism @Override public boolean isAvailable() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; + return true; } @Override - @TargetApi(21) public String[] getDnsServerAddresses() { - final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - final Network[] networks = connectivityManager == null ? null : connectivityManager.getAllNetworks(); + final ConnectivityManager connectivityManager = + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + final Network[] networks = + connectivityManager == null ? null : connectivityManager.getAllNetworks(); if (networks == null) { return new String[0]; } - final Network activeNetwork = getActiveNetwork(connectivityManager); + final Network activeNetwork = connectivityManager.getActiveNetwork(); final List servers = new ArrayList<>(); int vpnOffset = 0; - for(Network network : networks) { + for (Network network : networks) { LinkProperties linkProperties = connectivityManager.getLinkProperties(network); if (linkProperties == null) { continue; } final NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network); final boolean isActiveNetwork = network.equals(activeNetwork); - final boolean isVpn = networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_VPN; + final boolean isVpn = + networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_VPN; if (isActiveNetwork && isVpn) { final List tmp = getIPv4First(linkProperties.getDnsServers()); servers.addAll(0, tmp); vpnOffset += tmp.size(); - } else if (hasDefaultRoute(linkProperties) || isActiveNetwork || activeNetwork == null || isVpn) { + } else if (hasDefaultRoute(linkProperties) + || isActiveNetwork + || activeNetwork == null + || isVpn) { servers.addAll(vpnOffset, getIPv4First(linkProperties.getDnsServers())); } } return servers.toArray(new String[0]); } - @TargetApi(23) - private static Network getActiveNetwork(ConnectivityManager cm) { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? cm.getActiveNetwork() : null; - } - private static List getIPv4First(List in) { List out = new ArrayList<>(); - for(InetAddress address : in) { + for (InetAddress address : in) { if (address instanceof Inet4Address) { out.add(0, address.getHostAddress()); } else { @@ -78,9 +74,8 @@ public class AndroidUsingLinkProperties extends AbstractDNSServerLookupMechanism return out; } - @TargetApi(Build.VERSION_CODES.LOLLIPOP) private static boolean hasDefaultRoute(LinkProperties linkProperties) { - for(RouteInfo route: linkProperties.getRoutes()) { + for (RouteInfo route : linkProperties.getRoutes()) { if (route.isDefaultRoute()) { return true; } diff --git a/app/src/main/java/im/conversations/android/dns/IP.java b/app/src/main/java/im/conversations/android/dns/IP.java new file mode 100644 index 000000000..b87e83561 --- /dev/null +++ b/app/src/main/java/im/conversations/android/dns/IP.java @@ -0,0 +1,39 @@ +package im.conversations.android.dns; + +import java.util.regex.Pattern; + +public class IP { + + private static final Pattern PATTERN_IPV4 = + Pattern.compile( + "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"); + private static final Pattern PATTERN_IPV6_HEX4DECCOMPRESSED = + Pattern.compile( + "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)" + + " ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"); + private static final Pattern PATTERN_IPV6_6HEX4DEC = + Pattern.compile( + "\\A((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"); + private static final Pattern PATTERN_IPV6_HEXCOMPRESSED = + Pattern.compile( + "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)\\z"); + private static final Pattern PATTERN_IPV6 = + Pattern.compile("\\A(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\z"); + + public static boolean matches(String server) { + return server != null + && (PATTERN_IPV4.matcher(server).matches() + || PATTERN_IPV6.matcher(server).matches() + || PATTERN_IPV6_6HEX4DEC.matcher(server).matches() + || PATTERN_IPV6_HEX4DECCOMPRESSED.matcher(server).matches() + || PATTERN_IPV6_HEXCOMPRESSED.matcher(server).matches()); + } + + public static String wrapIPv6(final String host) { + if (matches(host)) { + return String.format("[%s]", host); + } else { + return host; + } + } +} diff --git a/src/main/java/eu/siacs/conversations/utils/Resolver.java b/app/src/main/java/im/conversations/android/dns/Resolver.java similarity index 67% rename from src/main/java/eu/siacs/conversations/utils/Resolver.java rename to app/src/main/java/im/conversations/android/dns/Resolver.java index 463d6eb73..9a085d93a 100644 --- a/src/main/java/eu/siacs/conversations/utils/Resolver.java +++ b/app/src/main/java/im/conversations/android/dns/Resolver.java @@ -1,20 +1,10 @@ -package eu.siacs.conversations.utils; +package im.conversations.android.dns; +import android.app.Application; import android.content.ContentValues; +import android.content.Context; import android.database.Cursor; -import android.util.Log; - import androidx.annotation.NonNull; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.net.Inet4Address; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import de.measite.minidns.AbstractDNSClient; import de.measite.minidns.DNSCache; import de.measite.minidns.DNSClient; @@ -34,26 +24,34 @@ import de.measite.minidns.record.CNAME; import de.measite.minidns.record.Data; import de.measite.minidns.record.InternetAddressRR; import de.measite.minidns.record.SRV; -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.xmpp.Jid; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.jxmpp.jid.DomainJid; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Resolver { + private static final Logger LOGGER = LoggerFactory.getLogger(Resolver.class); + public static final int DEFAULT_PORT_XMPP = 5222; private static final String DIRECT_TLS_SERVICE = "_xmpps-client"; private static final String STARTTLS_SERVICE = "_xmpp-client"; - private static XmppConnectionService SERVICE = null; - + private static Context SERVICE; - public static void init(XmppConnectionService service) { - Resolver.SERVICE = service; + public static void init(final Application application) { + SERVICE = application.getApplicationContext(); DNSClient.removeDNSServerLookupMechanism(AndroidUsingExec.INSTANCE); DNSClient.addDnsServerLookupMechanism(AndroidUsingExecLowPriority.INSTANCE); - DNSClient.addDnsServerLookupMechanism(new AndroidUsingLinkProperties(service)); + DNSClient.addDnsServerLookupMechanism(new AndroidUsingLinkProperties(application)); final AbstractDNSClient client = ResolverApi.INSTANCE.getClient(); if (client instanceof ReliableDNSClient) { disableHardcodedDnsServers((ReliableDNSClient) client); @@ -68,11 +66,12 @@ public class Resolver { if (dnsClient != null) { dnsClient.getDataSource().setTimeout(3000); } - final Field useHardcodedDnsServers = DNSClient.class.getDeclaredField("useHardcodedDnsServers"); + final Field useHardcodedDnsServers = + DNSClient.class.getDeclaredField("useHardcodedDnsServers"); useHardcodedDnsServers.setAccessible(true); useHardcodedDnsServers.setBoolean(dnsClient, false); - } catch (NoSuchFieldException | IllegalAccessException e) { - Log.e(Config.LOGTAG, "Unable to disable hardcoded DNS servers", e); + } catch (final NoSuchFieldException | IllegalAccessException e) { + LOGGER.error("Unable to disable hardcoded DNS servers", e); } } @@ -85,7 +84,7 @@ public class Resolver { return Collections.singletonList(result); } - public static void checkDomain(final Jid jid) { + public static void checkDomain(final DomainJid jid) { DNSName.from(jid.getDomain()); } @@ -102,50 +101,57 @@ public class Resolver { final AbstractDNSClient client = ResolverApi.INSTANCE.getClient(); final DNSCache dnsCache = client.getCache(); if (dnsCache instanceof LRUCache) { - Log.d(Config.LOGTAG,"clearing DNS cache"); + LOGGER.debug("clearing DNS cache"); ((LRUCache) dnsCache).clear(); } } - public static boolean useDirectTls(final int port) { return port == 443 || port == 5223; } public static List resolve(String domain) { - final List ipResults = fromIpAddress(domain); + final List ipResults = fromIpAddress(domain); if (ipResults.size() > 0) { return ipResults; } final List results = new ArrayList<>(); final List fallbackResults = new ArrayList<>(); final Thread[] threads = new Thread[3]; - threads[0] = new Thread(() -> { - try { - final List list = resolveSrv(domain, true); - synchronized (results) { - results.addAll(list); - } - } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving SRV record (direct TLS)", throwable); - } - }); - threads[1] = new Thread(() -> { - try { - final List list = resolveSrv(domain, false); - synchronized (results) { - results.addAll(list); - } - } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving SRV record (STARTTLS)", throwable); - } - }); - threads[2] = new Thread(() -> { - List list = resolveNoSrvRecords(DNSName.from(domain), true); - synchronized (fallbackResults) { - fallbackResults.addAll(list); - } - }); + threads[0] = + new Thread( + () -> { + try { + final List list = resolveSrv(domain, true); + synchronized (results) { + results.addAll(list); + } + } catch (final Throwable throwable) { + LOGGER.debug("error resolving SRV record (direct TLS)", throwable); + } + }); + threads[1] = + new Thread( + () -> { + try { + final List list = resolveSrv(domain, false); + synchronized (results) { + results.addAll(list); + } + + } catch (Throwable throwable) { + LOGGER.debug( + "error resolving SRV record (direct STARTTLS)", throwable); + } + }); + threads[2] = + new Thread( + () -> { + List list = resolveNoSrvRecords(DNSName.from(domain), true); + synchronized (fallbackResults) { + fallbackResults.addAll(list); + } + }); for (final Thread thread : threads) { thread.start(); } @@ -156,14 +162,14 @@ public class Resolver { threads[2].interrupt(); synchronized (results) { Collections.sort(results); - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": " + results.toString()); + LOGGER.info("{}", results); return new ArrayList<>(results); } } else { threads[2].join(); synchronized (fallbackResults) { Collections.sort(fallbackResults); - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": " + fallbackResults.toString()); + LOGGER.info("fallback {}", fallbackResults); return new ArrayList<>(fallbackResults); } } @@ -189,8 +195,11 @@ public class Resolver { } } - private static List resolveSrv(String domain, final boolean directTls) throws IOException { - DNSName dnsName = DNSName.from((directTls ? DIRECT_TLS_SERVICE : STARTTLS_SERVICE) + "._tcp." + domain); + private static List resolveSrv(String domain, final boolean directTls) + throws IOException { + DNSName dnsName = + DNSName.from( + (directTls ? DIRECT_TLS_SERVICE : STARTTLS_SERVICE) + "._tcp." + domain); ResolverResult result = resolveWithFallback(dnsName, SRV.class); final List results = new ArrayList<>(); final List threads = new ArrayList<>(); @@ -198,24 +207,37 @@ public class Resolver { if (record.name.length() == 0 && record.priority == 0) { continue; } - threads.add(new Thread(() -> { - final List ipv4s = resolveIp(record, A.class, result.isAuthenticData(), directTls); - if (ipv4s.size() == 0) { - Result resolverResult = Result.fromRecord(record, directTls); - resolverResult.authenticated = result.isAuthenticData(); - ipv4s.add(resolverResult); - } - synchronized (results) { - results.addAll(ipv4s); - } - - })); - threads.add(new Thread(() -> { - final List ipv6s = resolveIp(record, AAAA.class, result.isAuthenticData(), directTls); - synchronized (results) { - results.addAll(ipv6s); - } - })); + threads.add( + new Thread( + () -> { + final List ipv4s = + resolveIp( + record, + A.class, + result.isAuthenticData(), + directTls); + if (ipv4s.size() == 0) { + Result resolverResult = Result.fromRecord(record, directTls); + resolverResult.authenticated = result.isAuthenticData(); + ipv4s.add(resolverResult); + } + synchronized (results) { + results.addAll(ipv4s); + } + })); + threads.add( + new Thread( + () -> { + final List ipv6s = + resolveIp( + record, + AAAA.class, + result.isAuthenticData(), + directTls); + synchronized (results) { + results.addAll(ipv6s); + } + })); } for (Thread thread : threads) { thread.start(); @@ -230,18 +252,22 @@ public class Resolver { return results; } - private static List resolveIp(SRV srv, Class type, boolean authenticated, boolean directTls) { + private static List resolveIp( + SRV srv, Class type, boolean authenticated, boolean directTls) { List list = new ArrayList<>(); try { ResolverResult results = resolveWithFallback(srv.name, type, authenticated); for (D record : results.getAnswersOrEmptySet()) { Result resolverResult = Result.fromRecord(srv, directTls); - resolverResult.authenticated = results.isAuthenticData() && authenticated; //TODO technically it doesn’t matter if the IP was authenticated + resolverResult.authenticated = + results.isAuthenticData() + && authenticated; // TODO technically it doesn’t matter if the IP + // was authenticated resolverResult.ip = record.getInetAddress(); list.add(resolverResult); } - } catch (Throwable t) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " " + t.getMessage()); + } catch (final Throwable t) { + LOGGER.info("error resolving {}", type.getSimpleName(), t); } return list; } @@ -252,26 +278,30 @@ public class Resolver { for (A a : resolveWithFallback(dnsName, A.class, false).getAnswersOrEmptySet()) { results.add(Result.createDefault(dnsName, a.getInetAddress())); } - for (AAAA aaaa : resolveWithFallback(dnsName, AAAA.class, false).getAnswersOrEmptySet()) { + for (AAAA aaaa : + resolveWithFallback(dnsName, AAAA.class, false).getAnswersOrEmptySet()) { results.add(Result.createDefault(dnsName, aaaa.getInetAddress())); } if (results.size() == 0 && withCnames) { - for (CNAME cname : resolveWithFallback(dnsName, CNAME.class, false).getAnswersOrEmptySet()) { + for (CNAME cname : + resolveWithFallback(dnsName, CNAME.class, false).getAnswersOrEmptySet()) { results.addAll(resolveNoSrvRecords(cname.name, false)); } } } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + "error resolving fallback records", throwable); + LOGGER.info("Error resolving fallback records", throwable); } results.add(Result.createDefault(dnsName)); return results; } - private static ResolverResult resolveWithFallback(DNSName dnsName, Class type) throws IOException { + private static ResolverResult resolveWithFallback( + DNSName dnsName, Class type) throws IOException { return resolveWithFallback(dnsName, type, validateHostname()); } - private static ResolverResult resolveWithFallback(DNSName dnsName, Class type, boolean validateHostname) throws IOException { + private static ResolverResult resolveWithFallback( + DNSName dnsName, Class type, boolean validateHostname) throws IOException { final Question question = new Question(dnsName, Record.TYPE.getType(type)); if (!validateHostname) { return ResolverApi.INSTANCE.resolve(question); @@ -279,17 +309,22 @@ public class Resolver { try { return DnssecResolverApi.INSTANCE.resolveDnssecReliable(question); } catch (DNSSECResultNotAuthenticException e) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " with DNSSEC. Trying DNS instead.", e); + LOGGER.info( + "Error resolving {} with DNSSEC. Trying DNS instead", type.getSimpleName(), e); } catch (IOException e) { throw e; } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " with DNSSEC. Trying DNS instead.", throwable); + LOGGER.info( + "Error resolving {} with DNSSEC. Trying DNS instead", + type.getSimpleName(), + throwable); } return ResolverApi.INSTANCE.resolve(question); } private static boolean validateHostname() { - return SERVICE != null && SERVICE.getBooleanPreference("validate_hostname", R.bool.validate_hostname); + // TODO bring back in one form or another + return false; } public static class Result implements Comparable { @@ -392,14 +427,22 @@ public class Resolver { @Override public String toString() { - return "Result{" + - "ip='" + (ip == null ? null : ip.getHostAddress()) + '\'' + - ", hostame='" + (hostname == null ? null : hostname.toString()) + '\'' + - ", port=" + port + - ", directTls=" + directTls + - ", authenticated=" + authenticated + - ", priority=" + priority + - '}'; + return "Result{" + + "ip='" + + (ip == null ? null : ip.getHostAddress()) + + '\'' + + ", hostame='" + + (hostname == null ? null : hostname.toString()) + + '\'' + + ", port=" + + port + + ", directTls=" + + directTls + + ", authenticated=" + + authenticated + + ", priority=" + + priority + + '}'; } @Override @@ -436,5 +479,4 @@ public class Resolver { return contentValues; } } - } diff --git a/src/main/java/im/conversations/android/repository/AbstractRepository.java b/app/src/main/java/im/conversations/android/repository/AbstractRepository.java similarity index 100% rename from src/main/java/im/conversations/android/repository/AbstractRepository.java rename to app/src/main/java/im/conversations/android/repository/AbstractRepository.java diff --git a/src/main/java/im/conversations/android/repository/AccountRepository.java b/app/src/main/java/im/conversations/android/repository/AccountRepository.java similarity index 100% rename from src/main/java/im/conversations/android/repository/AccountRepository.java rename to app/src/main/java/im/conversations/android/repository/AccountRepository.java diff --git a/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java b/app/src/main/java/im/conversations/android/socks/SocksSocketFactory.java similarity index 77% rename from src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java rename to app/src/main/java/im/conversations/android/socks/SocksSocketFactory.java index 2b9d42d7a..aa01901ad 100644 --- a/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java +++ b/app/src/main/java/im/conversations/android/socks/SocksSocketFactory.java @@ -1,7 +1,7 @@ -package eu.siacs.conversations.utils; +package im.conversations.android.socks; import com.google.common.io.ByteStreams; - +import im.conversations.android.xmpp.ConnectionPool; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -10,17 +10,16 @@ import java.net.InetSocketAddress; import java.net.Socket; import java.nio.ByteBuffer; -import eu.siacs.conversations.Config; - public class SocksSocketFactory { - private static final byte[] LOCALHOST = new byte[]{127, 0, 0, 1}; + private static final byte[] LOCALHOST = new byte[] {127, 0, 0, 1}; - public static void createSocksConnection(final Socket socket, final String destination, final int port) throws IOException { - //TODO use different Socks Addr Type if destination is IP or IPv6 + public static void createSocksConnection( + final Socket socket, final String destination, final int port) throws IOException { + // TODO use different Socks Addr Type if destination is IP or IPv6 final InputStream proxyIs = socket.getInputStream(); final OutputStream proxyOs = socket.getOutputStream(); - proxyOs.write(new byte[]{0x05, 0x01, 0x00}); + proxyOs.write(new byte[] {0x05, 0x01, 0x00}); proxyOs.flush(); final byte[] handshake = new byte[2]; ByteStreams.readFully(proxyIs, handshake); @@ -29,7 +28,7 @@ public class SocksSocketFactory { } final byte[] dest = destination.getBytes(); final ByteBuffer request = ByteBuffer.allocate(7 + dest.length); - request.put(new byte[]{0x05, 0x01, 0x00, 0x03}); + request.put(new byte[] {0x05, 0x01, 0x00, 0x03}); request.put((byte) dest.length); request.put(dest); request.putShort((short) port); @@ -48,7 +47,10 @@ public class SocksSocketFactory { if (bndAddrType == 0x03) { final String receivedDestination = new String(bndDestination); if (!receivedDestination.equalsIgnoreCase(destination)) { - throw new IOException(String.format("Destination mismatch. Received %s Expected %s", receivedDestination, destination)); + throw new IOException( + String.format( + "Destination mismatch. Received %s Expected %s", + receivedDestination, destination)); } } ByteStreams.readFully(proxyIs, bndPort); @@ -63,7 +65,8 @@ public class SocksSocketFactory { } } - private static byte[] readDestination(final byte type, final InputStream inputStream) throws IOException { + private static byte[] readDestination(final byte type, final InputStream inputStream) + throws IOException { final byte[] bndDestination; if (type == 0x01) { bndDestination = new byte[4]; @@ -88,10 +91,11 @@ public class SocksSocketFactory { return false; } - private static Socket createSocket(InetSocketAddress address, String destination, int port) throws IOException { + private static Socket createSocket(InetSocketAddress address, String destination, int port) + throws IOException { Socket socket = new Socket(); try { - socket.connect(address, Config.CONNECT_TIMEOUT * 1000); + socket.connect(address, ConnectionPool.CONNECT_TIMEOUT * 1000); } catch (IOException e) { throw new SocksProxyNotFoundException(); } @@ -100,7 +104,10 @@ public class SocksSocketFactory { } public static Socket createSocketOverTor(String destination, int port) throws IOException { - return createSocket(new InetSocketAddress(InetAddress.getByAddress(LOCALHOST), 9050), destination, port); + return createSocket( + new InetSocketAddress(InetAddress.getByAddress(LOCALHOST), 9050), + destination, + port); } private static class SocksConnectionException extends IOException { @@ -109,9 +116,7 @@ public class SocksSocketFactory { } } - public static class SocksProxyNotFoundException extends IOException { - - } + public static class SocksProxyNotFoundException extends IOException {} public static class HostNotFoundException extends SocksConnectionException { HostNotFoundException(String message) { diff --git a/src/main/java/im/conversations/android/tls/SSLSockets.java b/app/src/main/java/im/conversations/android/tls/SSLSockets.java similarity index 100% rename from src/main/java/im/conversations/android/tls/SSLSockets.java rename to app/src/main/java/im/conversations/android/tls/SSLSockets.java diff --git a/app/src/main/java/im/conversations/android/tls/TrustManagers.java b/app/src/main/java/im/conversations/android/tls/TrustManagers.java new file mode 100644 index 000000000..a7a7aa8f2 --- /dev/null +++ b/app/src/main/java/im/conversations/android/tls/TrustManagers.java @@ -0,0 +1,29 @@ +package im.conversations.android.tls; + +import java.security.KeyStore; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TrustManagers { + + private static final Logger LOGGER = LoggerFactory.getLogger(TrustManagers.class); + + public static X509TrustManager getTrustManager() { + try { + final TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); + tmf.init((KeyStore) null); + for (final TrustManager t : tmf.getTrustManagers()) { + if (t instanceof X509TrustManager) { + return (X509TrustManager) t; + } + } + return null; + } catch (final Exception e) { + LOGGER.info("Could not get default Trust Manager"); + return null; + } + } +} diff --git a/src/main/java/im/conversations/android/tls/XmppDomainVerifier.java b/app/src/main/java/im/conversations/android/tls/XmppDomainVerifier.java similarity index 100% rename from src/main/java/im/conversations/android/tls/XmppDomainVerifier.java rename to app/src/main/java/im/conversations/android/tls/XmppDomainVerifier.java diff --git a/src/main/java/im/conversations/android/transformer/Transformation.java b/app/src/main/java/im/conversations/android/transformer/Transformation.java similarity index 100% rename from src/main/java/im/conversations/android/transformer/Transformation.java rename to app/src/main/java/im/conversations/android/transformer/Transformation.java diff --git a/src/main/java/im/conversations/android/transformer/TransformationFactory.java b/app/src/main/java/im/conversations/android/transformer/TransformationFactory.java similarity index 100% rename from src/main/java/im/conversations/android/transformer/TransformationFactory.java rename to app/src/main/java/im/conversations/android/transformer/TransformationFactory.java diff --git a/src/main/java/im/conversations/android/transformer/Transformer.java b/app/src/main/java/im/conversations/android/transformer/Transformer.java similarity index 100% rename from src/main/java/im/conversations/android/transformer/Transformer.java rename to app/src/main/java/im/conversations/android/transformer/Transformer.java diff --git a/src/main/java/im/conversations/android/ui/Activities.java b/app/src/main/java/im/conversations/android/ui/Activities.java similarity index 100% rename from src/main/java/im/conversations/android/ui/Activities.java rename to app/src/main/java/im/conversations/android/ui/Activities.java diff --git a/src/main/java/im/conversations/android/ui/BindingAdapters.java b/app/src/main/java/im/conversations/android/ui/BindingAdapters.java similarity index 100% rename from src/main/java/im/conversations/android/ui/BindingAdapters.java rename to app/src/main/java/im/conversations/android/ui/BindingAdapters.java diff --git a/src/main/java/im/conversations/android/ui/Event.java b/app/src/main/java/im/conversations/android/ui/Event.java similarity index 100% rename from src/main/java/im/conversations/android/ui/Event.java rename to app/src/main/java/im/conversations/android/ui/Event.java diff --git a/src/main/java/im/conversations/android/ui/NavControllers.java b/app/src/main/java/im/conversations/android/ui/NavControllers.java similarity index 100% rename from src/main/java/im/conversations/android/ui/NavControllers.java rename to app/src/main/java/im/conversations/android/ui/NavControllers.java diff --git a/src/main/java/im/conversations/android/ui/activity/SetupActivity.java b/app/src/main/java/im/conversations/android/ui/activity/SetupActivity.java similarity index 90% rename from src/main/java/im/conversations/android/ui/activity/SetupActivity.java rename to app/src/main/java/im/conversations/android/ui/activity/SetupActivity.java index ca814d840..6ecc943bc 100644 --- a/src/main/java/im/conversations/android/ui/activity/SetupActivity.java +++ b/app/src/main/java/im/conversations/android/ui/activity/SetupActivity.java @@ -2,12 +2,13 @@ package im.conversations.android.ui.activity; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; import androidx.databinding.DataBindingUtil; import androidx.lifecycle.ViewModelProvider; import androidx.navigation.NavController; -import eu.siacs.conversations.R; -import eu.siacs.conversations.SetupNavigationDirections; -import eu.siacs.conversations.databinding.ActivitySetupBinding; +import im.conversations.android.R; +import im.conversations.android.SetupNavigationDirections; +import im.conversations.android.databinding.ActivitySetupBinding; import im.conversations.android.ui.Activities; import im.conversations.android.ui.Event; import im.conversations.android.ui.NavControllers; diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java similarity index 100% rename from src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java similarity index 100% rename from src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java similarity index 88% rename from src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java index 389aaca59..dda4f20a5 100644 --- a/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java +++ b/app/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java @@ -6,8 +6,8 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.FragmentPasswordBinding; +import im.conversations.android.R; +import im.conversations.android.databinding.FragmentPasswordBinding; public class PasswordFragment extends AbstractSetupFragment { diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java similarity index 88% rename from src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java index dac120a11..3bb96f74c 100644 --- a/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java +++ b/app/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java @@ -6,8 +6,8 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.FragmentSignInBinding; +import im.conversations.android.R; +import im.conversations.android.databinding.FragmentSignInBinding; public class SignInFragment extends AbstractSetupFragment { diff --git a/src/main/java/im/conversations/android/ui/model/SetupViewModel.java b/app/src/main/java/im/conversations/android/ui/model/SetupViewModel.java similarity index 100% rename from src/main/java/im/conversations/android/ui/model/SetupViewModel.java rename to app/src/main/java/im/conversations/android/ui/model/SetupViewModel.java diff --git a/src/main/java/eu/siacs/conversations/ui/util/PendingItem.java b/app/src/main/java/im/conversations/android/util/PendingItem.java similarity index 98% rename from src/main/java/eu/siacs/conversations/ui/util/PendingItem.java rename to app/src/main/java/im/conversations/android/util/PendingItem.java index a02281f77..0a5d94f13 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/PendingItem.java +++ b/app/src/main/java/im/conversations/android/util/PendingItem.java @@ -27,7 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package eu.siacs.conversations.ui.util; +package im.conversations.android.util; import java.util.function.Supplier; diff --git a/src/main/java/im/conversations/android/xml/Element.java b/app/src/main/java/im/conversations/android/xml/Element.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Element.java rename to app/src/main/java/im/conversations/android/xml/Element.java diff --git a/src/main/java/im/conversations/android/xml/Entities.java b/app/src/main/java/im/conversations/android/xml/Entities.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Entities.java rename to app/src/main/java/im/conversations/android/xml/Entities.java diff --git a/src/main/java/im/conversations/android/xml/Namespace.java b/app/src/main/java/im/conversations/android/xml/Namespace.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Namespace.java rename to app/src/main/java/im/conversations/android/xml/Namespace.java diff --git a/src/main/java/im/conversations/android/xml/Tag.java b/app/src/main/java/im/conversations/android/xml/Tag.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Tag.java rename to app/src/main/java/im/conversations/android/xml/Tag.java diff --git a/src/main/java/im/conversations/android/xml/TagWriter.java b/app/src/main/java/im/conversations/android/xml/TagWriter.java similarity index 100% rename from src/main/java/im/conversations/android/xml/TagWriter.java rename to app/src/main/java/im/conversations/android/xml/TagWriter.java diff --git a/src/main/java/im/conversations/android/xml/XmlElementReader.java b/app/src/main/java/im/conversations/android/xml/XmlElementReader.java similarity index 100% rename from src/main/java/im/conversations/android/xml/XmlElementReader.java rename to app/src/main/java/im/conversations/android/xml/XmlElementReader.java diff --git a/src/main/java/im/conversations/android/xml/XmlReader.java b/app/src/main/java/im/conversations/android/xml/XmlReader.java similarity index 100% rename from src/main/java/im/conversations/android/xml/XmlReader.java rename to app/src/main/java/im/conversations/android/xml/XmlReader.java diff --git a/src/main/java/im/conversations/android/xmpp/Closables.java b/app/src/main/java/im/conversations/android/xmpp/Closables.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Closables.java rename to app/src/main/java/im/conversations/android/xmpp/Closables.java diff --git a/src/main/java/im/conversations/android/xmpp/ConnectionException.java b/app/src/main/java/im/conversations/android/xmpp/ConnectionException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ConnectionException.java rename to app/src/main/java/im/conversations/android/xmpp/ConnectionException.java diff --git a/src/main/java/im/conversations/android/xmpp/ConnectionPool.java b/app/src/main/java/im/conversations/android/xmpp/ConnectionPool.java similarity index 99% rename from src/main/java/im/conversations/android/xmpp/ConnectionPool.java rename to app/src/main/java/im/conversations/android/xmpp/ConnectionPool.java index a57b5e6ab..41b1bbd32 100644 --- a/src/main/java/im/conversations/android/xmpp/ConnectionPool.java +++ b/app/src/main/java/im/conversations/android/xmpp/ConnectionPool.java @@ -31,6 +31,7 @@ public class ConnectionPool { private static final Logger LOGGER = LoggerFactory.getLogger(ConnectionPool.class); + public static final int SOCKET_TIMEOUT = 15; public static final int CONNECT_TIMEOUT = 90; public static final int PING_MAX_INTERVAL = 300; public static final int PING_MIN_INTERVAL = 30; diff --git a/src/main/java/im/conversations/android/xmpp/ConnectionState.java b/app/src/main/java/im/conversations/android/xmpp/ConnectionState.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ConnectionState.java rename to app/src/main/java/im/conversations/android/xmpp/ConnectionState.java diff --git a/src/main/java/im/conversations/android/xmpp/Entity.java b/app/src/main/java/im/conversations/android/xmpp/Entity.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Entity.java rename to app/src/main/java/im/conversations/android/xmpp/Entity.java diff --git a/src/main/java/im/conversations/android/xmpp/EntityCapabilities.java b/app/src/main/java/im/conversations/android/xmpp/EntityCapabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/EntityCapabilities.java rename to app/src/main/java/im/conversations/android/xmpp/EntityCapabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java b/app/src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java rename to app/src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java diff --git a/src/main/java/im/conversations/android/xmpp/ExtensionFactory.java b/app/src/main/java/im/conversations/android/xmpp/ExtensionFactory.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ExtensionFactory.java rename to app/src/main/java/im/conversations/android/xmpp/ExtensionFactory.java diff --git a/src/main/java/im/conversations/android/xmpp/IqErrorException.java b/app/src/main/java/im/conversations/android/xmpp/IqErrorException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/IqErrorException.java rename to app/src/main/java/im/conversations/android/xmpp/IqErrorException.java diff --git a/src/main/java/im/conversations/android/xmpp/Managers.java b/app/src/main/java/im/conversations/android/xmpp/Managers.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Managers.java rename to app/src/main/java/im/conversations/android/xmpp/Managers.java diff --git a/src/main/java/im/conversations/android/xmpp/NodeConfiguration.java b/app/src/main/java/im/conversations/android/xmpp/NodeConfiguration.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/NodeConfiguration.java rename to app/src/main/java/im/conversations/android/xmpp/NodeConfiguration.java diff --git a/src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java b/app/src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java rename to app/src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java diff --git a/src/main/java/im/conversations/android/xmpp/PubSubErrorException.java b/app/src/main/java/im/conversations/android/xmpp/PubSubErrorException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/PubSubErrorException.java rename to app/src/main/java/im/conversations/android/xmpp/PubSubErrorException.java diff --git a/src/main/java/im/conversations/android/xmpp/ServiceDescription.java b/app/src/main/java/im/conversations/android/xmpp/ServiceDescription.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ServiceDescription.java rename to app/src/main/java/im/conversations/android/xmpp/ServiceDescription.java diff --git a/src/main/java/im/conversations/android/xmpp/Timestamps.java b/app/src/main/java/im/conversations/android/xmpp/Timestamps.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Timestamps.java rename to app/src/main/java/im/conversations/android/xmpp/Timestamps.java diff --git a/src/main/java/im/conversations/android/xmpp/XmppConnection.java b/app/src/main/java/im/conversations/android/xmpp/XmppConnection.java similarity index 89% rename from src/main/java/im/conversations/android/xmpp/XmppConnection.java rename to app/src/main/java/im/conversations/android/xmpp/XmppConnection.java index 17a7296ef..fe6f46d4d 100644 --- a/src/main/java/im/conversations/android/xmpp/XmppConnection.java +++ b/app/src/main/java/im/conversations/android/xmpp/XmppConnection.java @@ -5,7 +5,6 @@ import android.os.Build; import android.os.SystemClock; import android.security.KeyChain; import android.util.Base64; -import android.util.Log; import android.util.Pair; import android.util.SparseArray; import androidx.annotation.NonNull; @@ -18,15 +17,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.services.MemorizingTrustManager; -import eu.siacs.conversations.services.NotificationService; -import eu.siacs.conversations.ui.util.PendingItem; -import eu.siacs.conversations.utils.PhoneHelper; -import eu.siacs.conversations.utils.Resolver; -import eu.siacs.conversations.utils.SocksSocketFactory; -import eu.siacs.conversations.xmpp.bind.Bind2; +import im.conversations.android.BuildConfig; import im.conversations.android.Conversations; import im.conversations.android.IDs; import im.conversations.android.database.ConversationsDatabase; @@ -34,8 +25,12 @@ import im.conversations.android.database.CredentialStore; import im.conversations.android.database.model.Account; import im.conversations.android.database.model.Connection; import im.conversations.android.database.model.Credential; +import im.conversations.android.dns.Resolver; +import im.conversations.android.socks.SocksSocketFactory; import im.conversations.android.tls.SSLSockets; +import im.conversations.android.tls.TrustManagers; import im.conversations.android.tls.XmppDomainVerifier; +import im.conversations.android.util.PendingItem; import im.conversations.android.xml.Element; import im.conversations.android.xml.Namespace; import im.conversations.android.xml.Tag; @@ -46,11 +41,13 @@ import im.conversations.android.xmpp.manager.CarbonsManager; import im.conversations.android.xmpp.manager.DiscoManager; import im.conversations.android.xmpp.model.Extension; import im.conversations.android.xmpp.model.StreamElement; +import im.conversations.android.xmpp.model.bind2.BindInlineFeatures; import im.conversations.android.xmpp.model.csi.Active; import im.conversations.android.xmpp.model.csi.Inactive; import im.conversations.android.xmpp.model.error.Condition; import im.conversations.android.xmpp.model.error.Error; import im.conversations.android.xmpp.model.ping.Ping; +import im.conversations.android.xmpp.model.sasl2.Inline; import im.conversations.android.xmpp.model.sm.Ack; import im.conversations.android.xmpp.model.sm.Enable; import im.conversations.android.xmpp.model.sm.Request; @@ -82,7 +79,6 @@ import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Hashtable; import java.util.Iterator; import java.util.List; @@ -113,6 +109,9 @@ public class XmppConnection implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(XmppConnection.class); + private static final boolean EXTENDED_SM_LOGGING = false; + private static final int CONNECT_DISCO_TIMEOUT = 20; + protected final Account account; private final SparseArray mStanzaQueue = new SparseArray<>(); private final Hashtable>> packetCallbacks = new Hashtable<>(); @@ -185,8 +184,7 @@ public class XmppConnection implements Runnable { if (Strings.isNullOrEmpty(resource)) { return null; } - int fixedPartLength = - context.getString(R.string.app_name).length() + 1; // include the trailing dot + int fixedPartLength = BuildConfig.APP_NAME.length() + 1; // include the trailing dot int randomPartLength = 4; // 3 bytes if (resource.length() > fixedPartLength + randomPartLength) { if (validBase64( @@ -208,8 +206,7 @@ public class XmppConnection implements Runnable { private void changeStatus(final ConnectionState nextStatus) { synchronized (this) { if (Thread.currentThread().isInterrupted()) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": not changing status to " + nextStatus @@ -268,7 +265,7 @@ public class XmppConnection implements Runnable { ConversationsDatabase.getInstance(context) .accountDao() .getConnectionSettings(account.id); - Log.d(Config.LOGTAG, account.address + ": connecting"); + LOGGER.debug(account.address + ": connecting"); this.encryptionEnabled = false; this.inSmacksSession = false; this.quickStartInProgress = false; @@ -301,8 +298,7 @@ public class XmppConnection implements Runnable { directTls = connection.directTls; } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": connect to " + destination @@ -318,8 +314,7 @@ public class XmppConnection implements Runnable { try { startXmpp(localSocket); } catch (final InterruptedException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": thread was interrupted before beginning stream"); return; } catch (final Exception e) { @@ -334,11 +329,11 @@ public class XmppConnection implements Runnable { results = Resolver.resolve(domain); } if (Thread.currentThread().isInterrupted()) { - Log.d(Config.LOGTAG, account.address + ": Thread was interrupted"); + LOGGER.debug(account.address + ": Thread was interrupted"); return; } if (results.size() == 0) { - Log.e(Config.LOGTAG, account.address + ": Resolver results were empty"); + LOGGER.warn("Resolver results were empty"); return; } final Resolver.Result storedBackupResult; @@ -350,8 +345,7 @@ public class XmppConnection implements Runnable { null; // context.databaseBackend.findResolverResult(domain); if (storedBackupResult != null && !results.contains(storedBackupResult)) { results.add(storedBackupResult); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": loaded backup resolver result from db: " + storedBackupResult); @@ -361,7 +355,7 @@ public class XmppConnection implements Runnable { iterator.hasNext(); ) { final Resolver.Result result = iterator.next(); if (Thread.currentThread().isInterrupted()) { - Log.d(Config.LOGTAG, account.address + ": Thread was interrupted"); + LOGGER.debug(account.address + ": Thread was interrupted"); return; } try { @@ -369,12 +363,11 @@ public class XmppConnection implements Runnable { this.encryptionEnabled = result.isDirectTls(); verifiedHostname = result.isAuthenticated() ? result.getHostname().toString() : null; - Log.d(Config.LOGTAG, "verified hostname " + verifiedHostname); + LOGGER.debug("verified hostname " + verifiedHostname); final InetSocketAddress addr; if (result.getIp() != null) { addr = new InetSocketAddress(result.getIp(), result.getPort()); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": using values from resolver " + (result.getHostname() == null @@ -390,8 +383,7 @@ public class XmppConnection implements Runnable { new InetSocketAddress( IDN.toASCII(result.getHostname().toString()), result.getPort()); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": using values from resolver " + result.getHostname().toString() @@ -402,13 +394,13 @@ public class XmppConnection implements Runnable { } localSocket = new Socket(); - localSocket.connect(addr, Config.SOCKET_TIMEOUT * 1000); + localSocket.connect(addr, ConnectionPool.SOCKET_TIMEOUT * 1000); if (this.encryptionEnabled) { localSocket = upgradeSocketToTls(localSocket); } - localSocket.setSoTimeout(Config.SOCKET_TIMEOUT * 1000); + localSocket.setSoTimeout(ConnectionPool.SOCKET_TIMEOUT * 1000); if (startXmpp(localSocket)) { localSocket.setSoTimeout( 0); // reset to 0; once the connection is established we don’t @@ -427,14 +419,12 @@ public class XmppConnection implements Runnable { throw e; } } catch (InterruptedException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": thread was interrupted before beginning stream"); return; } catch (final Throwable e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": " + e.getMessage() @@ -459,15 +449,14 @@ public class XmppConnection implements Runnable { } catch (final SocksSocketFactory.SocksProxyNotFoundException e) { this.changeStatus(ConnectionState.TOR_NOT_AVAILABLE); } catch (final IOException | XmlPullParserException e) { - Log.d(Config.LOGTAG, account.address + ": " + e.getMessage()); + LOGGER.debug(account.address + ": " + e.getMessage()); this.changeStatus(ConnectionState.OFFLINE); this.attempt = Math.max(0, this.attempt - 1); } finally { if (!Thread.currentThread().isInterrupted()) { forceCloseSocket(); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": not force closing socket because thread was interrupted"); } @@ -514,7 +503,6 @@ public class XmppConnection implements Runnable { private SSLSocketFactory getSSLSocketFactory() throws NoSuchAlgorithmException, KeyManagementException { final SSLContext sc = SSLSockets.getSSLContext(); - final MemorizingTrustManager trustManager = MemorizingTrustManager.create(context); final KeyManager[] keyManager; final Credential credential = CredentialStore.getInstance(context).get(account); if (Strings.isNullOrEmpty(credential.privateKeyAlias)) { @@ -528,7 +516,7 @@ public class XmppConnection implements Runnable { // we need a better solution for this using live data or similar sc.init( keyManager, - new X509TrustManager[] {trustManager.getInteractive(domain)}, + new X509TrustManager[] {TrustManagers.getTrustManager()}, Conversations.SECURE_RANDOM); return sc.getSocketFactory(); } @@ -538,9 +526,7 @@ public class XmppConnection implements Runnable { synchronized (this) { this.mThread = Thread.currentThread(); if (this.mThread.isInterrupted()) { - Log.d( - Config.LOGTAG, - account.address + ": aborting connect because thread was interrupted"); + LOGGER.debug(account.address + ": aborting connect because thread was interrupted"); return; } forceCloseSocket(); @@ -578,8 +564,7 @@ public class XmppConnection implements Runnable { final Element challenge = tagReader.readElement(nextTag); processChallenge(challenge); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": received 'challenge on an unsecure connection"); throw new StateChangingException(ConnectionState.INCOMPATIBLE_CLIENT); } @@ -591,30 +576,26 @@ public class XmppConnection implements Runnable { processResumed(resumed); } else if (nextTag.isStart("r")) { tagReader.readElement(nextTag); - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": acknowledging stanza #" + this.stanzasReceived); } final Ack ack = new Ack(this.stanzasReceived); tagWriter.writeStanzaAsync(ack); } else if (nextTag.isStart("a")) { - synchronized (NotificationService.CATCHUP_LOCK) { - if (mWaitingForSmCatchup.compareAndSet(true, false)) { - final int messageCount = mSmCatchupMessageCounter.get(); - final int pendingIQs = packetCallbacks.size(); - Log.d( - Config.LOGTAG, - account.address - + ": SM catchup complete (messages=" - + messageCount - + ", pending IQs=" - + pendingIQs - + ")"); - if (messageCount > 0) { - // TODO finish notification backlog (ok to pling now) - // context.getNotificationService().finishBacklog(true, account); - } + if (mWaitingForSmCatchup.compareAndSet(true, false)) { + final int messageCount = mSmCatchupMessageCounter.get(); + final int pendingIQs = packetCallbacks.size(); + LOGGER.debug( + account.address + + ": SM catchup complete (messages=" + + messageCount + + ", pending IQs=" + + pendingIQs + + ")"); + if (messageCount > 0) { + // TODO finish notification backlog (ok to pling now) + // context.getNotificationService().finishBacklog(true, account); } } final Element ack = tagReader.readElement(nextTag); @@ -626,9 +607,7 @@ public class XmppConnection implements Runnable { acknowledgedMessages = acknowledgeStanzaUpTo(serverSequence.get()); } else { acknowledgedMessages = false; - Log.d( - Config.LOGTAG, - account.address + ": server send ack without sequence number"); + LOGGER.debug(account.address + ": server send ack without sequence number"); } } } else if (nextTag.isStart("failed")) { @@ -668,7 +647,7 @@ public class XmppConnection implements Runnable { saslMechanism.getResponse(challenge.getContent(), sslSocketOrNull(socket))); } catch (final SaslMechanism.AuthenticationException e) { // TODO: Send auth abort tag. - Log.e(Config.LOGTAG, e.toString()); + LOGGER.error("Authentication failed", e); throw new StateChangingException(ConnectionState.UNAUTHORIZED); } tagWriter.writeElement(response); @@ -697,16 +676,16 @@ public class XmppConnection implements Runnable { try { currentSaslMechanism.getResponse(challenge, sslSocketOrNull(socket)); } catch (final SaslMechanism.AuthenticationException e) { - Log.e(Config.LOGTAG, String.valueOf(e)); + LOGGER.error("Authentication failed", e); throw new StateChangingException(ConnectionState.UNAUTHORIZED); } - Log.d(Config.LOGTAG, account.address + ": logged in (using " + version + ")"); + LOGGER.debug(account.address + ": logged in (using " + version + ")"); if (SaslMechanism.pin(currentSaslMechanism)) { try { CredentialStore.getInstance(context) .setPinnedMechanism(account, currentSaslMechanism); } catch (final Exception e) { - Log.d(Config.LOGTAG, "unable to pin mechanism in credential store", e); + LOGGER.debug("unable to pin mechanism in credential store", e); } } if (version == SaslMechanism.Version.SASL_2) { @@ -719,8 +698,7 @@ public class XmppConnection implements Runnable { ? null : JidCreate.from(authorizationIdentifier); } catch (final XmppStringprepException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": SASL 2.0 authorization identifier was not a valid jid"); throw new StateChangingException(ConnectionState.BIND_FAILURE); @@ -728,14 +706,12 @@ public class XmppConnection implements Runnable { if (authorizationJid == null) { throw new StateChangingException(ConnectionState.BIND_FAILURE); } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": SASL 2.0 authorization identifier was " + authorizationJid); if (!account.address.getDomain().equals(authorizationJid.getDomain())) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server tried to re-assign domain to " + authorizationJid.getDomain()); @@ -748,9 +724,7 @@ public class XmppConnection implements Runnable { final Element tokenWrapper = success.findChild("token", Namespace.FAST); final String token = tokenWrapper == null ? null : tokenWrapper.getAttribute("token"); if (bound != null && resumed != null) { - Log.d( - Config.LOGTAG, - account.address + ": server sent bound and resumed in SASL2 success"); + LOGGER.debug(account.address + ": server sent bound and resumed in SASL2 success"); throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } final boolean processNopStreamFeatures; @@ -773,7 +747,7 @@ public class XmppConnection implements Runnable { enableStreamManagement(); } if (carbonsEnabled != null) { - Log.d(Config.LOGTAG, account.address + ": successfully enabled carbons"); + LOGGER.debug(account.address + ": successfully enabled carbons"); } sendPostBindInitialization(carbonsEnabled != null); processNopStreamFeatures = true; @@ -792,15 +766,12 @@ public class XmppConnection implements Runnable { try { CredentialStore.getInstance(context) .setFastToken(account, tokenMechanism, token); - Log.d( - Config.LOGTAG, - account.address + ": storing hashed token " + tokenMechanism); + LOGGER.debug(account.address + ": storing hashed token " + tokenMechanism); } catch (final Exception e) { - Log.d(Config.LOGTAG, "could not store fast token", e); + LOGGER.debug("could not store fast token", e); } } else if (this.hashTokenRequest != null) { - Log.w( - Config.LOGTAG, + LOGGER.warn( account.address + ": no response to our hashed token request " + this.hashTokenRequest); @@ -829,9 +800,8 @@ public class XmppConnection implements Runnable { private void resetOutboundStanzaQueue() { synchronized (this.mStanzaQueue) { final List intermediateStanzas = new ArrayList<>(); - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": stanzas sent before auth: " + this.stanzasSentBeforeAuthentication); @@ -847,9 +817,8 @@ public class XmppConnection implements Runnable { this.mStanzaQueue.put(i, intermediateStanzas.get(i)); } this.stanzasSent = intermediateStanzas.size(); - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": resetting outbound stanza queue to " + this.stanzasSent); @@ -865,9 +834,8 @@ public class XmppConnection implements Runnable { "Processed NOP stream features after success {}", this.streamFeatures.getExtensionIds()); } else { - Log.d(Config.LOGTAG, account.address + ": received " + tag); - Log.d( - Config.LOGTAG, + LOGGER.debug(account.address + ": received " + tag); + LOGGER.debug( account.address + ": server did not send stream features after SASL2 success"); throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } @@ -880,22 +848,21 @@ public class XmppConnection implements Runnable { } catch (final IllegalArgumentException e) { throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } - Log.d(Config.LOGTAG, failure.toString()); - Log.d(Config.LOGTAG, account.address + ": login failure " + version); + LOGGER.debug(failure.toString()); + LOGGER.debug(account.address + ": login failure " + version); if (SaslMechanism.hashedToken(this.saslMechanism)) { - Log.d(Config.LOGTAG, account.address + ": resetting token"); + LOGGER.debug(account.address + ": resetting token"); try { CredentialStore.getInstance(context).resetFastToken(account); } catch (final Exception e) { - Log.d(Config.LOGTAG, "could not reset fast token in credential store", e); + LOGGER.debug("could not reset fast token in credential store", e); } } if (failure.hasChild("temporary-auth-failure")) { throw new StateChangingException(ConnectionState.TEMPORARY_AUTH_FAILURE); } if (SaslMechanism.hashedToken(this.saslMechanism)) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": fast authentication failed. falling back to regular" + " authentication"); @@ -917,9 +884,9 @@ public class XmppConnection implements Runnable { final String streamId; if (enabled.getAttributeAsBoolean("resume")) { streamId = enabled.getAttribute("id"); - Log.d(Config.LOGTAG, account.address + ": stream management enabled (resumable)"); + LOGGER.debug(account.address + ": stream management enabled (resumable)"); } else { - Log.d(Config.LOGTAG, account.address + ": stream management enabled"); + LOGGER.debug(account.address + ": stream management enabled"); streamId = null; } this.streamId = streamId; @@ -946,10 +913,10 @@ public class XmppConnection implements Runnable { final boolean acknowledgedMessages; synchronized (this.mStanzaQueue) { if (serverCount < stanzasSent) { - Log.d(Config.LOGTAG, account.address + ": session resumed with lost packages"); + LOGGER.debug(account.address + ": session resumed with lost packages"); stanzasSent = serverCount; } else { - Log.d(Config.LOGTAG, account.address + ": session resumed"); + LOGGER.debug(account.address + ": session resumed"); } acknowledgedMessages = acknowledgeStanzaUpTo(serverCount); for (int i = 0; i < this.mStanzaQueue.size(); ++i) { @@ -957,7 +924,7 @@ public class XmppConnection implements Runnable { } mStanzaQueue.clear(); } - Log.d(Config.LOGTAG, account.address + ": resending " + failedStanzas.size() + " stanzas"); + LOGGER.debug(account.address + ": resending " + failedStanzas.size() + " stanzas"); for (final Stanza packet : failedStanzas) { if (packet instanceof Message) { Message message = (Message) packet; @@ -971,8 +938,7 @@ public class XmppConnection implements Runnable { } private void changeStatusToOnline() { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": online with resource " + connectionAddress.getResourceOrNull()); @@ -982,8 +948,7 @@ public class XmppConnection implements Runnable { private void processFailed(final Element failed, final boolean sendBindRequest) { final Optional serverCount = failed.getOptionalIntAttribute("h"); if (serverCount.isPresent()) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": resumption failed but server acknowledged stanza #" + serverCount.get()); @@ -992,7 +957,7 @@ public class XmppConnection implements Runnable { acknowledgedMessages = acknowledgeStanzaUpTo(serverCount.get()); } } else { - Log.d(Config.LOGTAG, account.address + ": resumption failed"); + LOGGER.debug(account.address + ": resumption failed"); } resetStreamId(); if (sendBindRequest) { @@ -1002,8 +967,7 @@ public class XmppConnection implements Runnable { private boolean acknowledgeStanzaUpTo(final int serverCount) { if (serverCount > stanzasSent) { - Log.e( - Config.LOGTAG, + LOGGER.error( "server acknowledged more stanzas than we sent. serverCount=" + serverCount + ", ourCount=" @@ -1012,9 +976,8 @@ public class XmppConnection implements Runnable { boolean acknowledgedMessages = false; for (int i = 0; i < mStanzaQueue.size(); ++i) { if (serverCount >= mStanzaQueue.keyAt(i)) { - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": server acknowledged stanza #" + mStanzaQueue.keyAt(i)); @@ -1045,8 +1008,7 @@ public class XmppConnection implements Runnable { if (inSmacksSession) { ++stanzasReceived; } else if (this.streamFeatures.streamManagement()) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": not counting stanza(" + stanza.getClass().getSimpleName() @@ -1070,7 +1032,7 @@ public class XmppConnection implements Runnable { packetCallbacks.remove(packet.getId()); } else { callback = null; - Log.e(Config.LOGTAG, account.address + ": ignoring spoofed iq packet"); + LOGGER.warn("Ignoring spoofed iq stanza"); } } else { if (packet.getFrom() != null @@ -1079,7 +1041,7 @@ public class XmppConnection implements Runnable { packetCallbacks.remove(packet.getId()); } else { callback = null; - Log.e(Config.LOGTAG, account.address + ": ignoring spoofed iq packet"); + LOGGER.error(account.address + ": ignoring spoofed iq packet"); } } } else if (packet.getType() == Iq.Type.GET || packet.getType() == Iq.Type.SET) { @@ -1169,9 +1131,7 @@ public class XmppConnection implements Runnable { account.address.getDomain().toString(), this.verifiedHostname, sslSocket.getSession())) { - Log.d( - Config.LOGTAG, - account.address + ": TLS certificate domain verification failed"); + LOGGER.debug(account.address + ": TLS certificate domain verification failed"); Closables.close(sslSocket); throw new StateChangingException(ConnectionState.TLS_ERROR_DOMAIN); } @@ -1197,17 +1157,14 @@ public class XmppConnection implements Runnable { } if (isFastTokenAvailable( this.streamFeatures.findChild("authentication", Namespace.SASL_2))) { - Log.d( - Config.LOGTAG, - account.address + ": fast token available; resetting quick start"); + LOGGER.debug(account.address + ": fast token available; resetting quick start"); ConversationsDatabase.getInstance(context) .accountDao() .setQuickStartAvailable(account.id, false); } return; } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server lost support for SASL 2. quick start not possible"); ConversationsDatabase.getInstance(context) .accountDao() @@ -1234,10 +1191,8 @@ public class XmppConnection implements Runnable { && shouldAuthenticate) { authenticate(SaslMechanism.Version.SASL); } else if (this.streamFeatures.streamManagement() && streamId != null && !inSmacksSession) { - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, - account.address + ": resuming after stanza #" + stanzasReceived); + if (EXTENDED_SM_LOGGING) { + LOGGER.debug(account.address + ": resuming after stanza #" + stanzasReceived); } final Resume resume = new Resume(this.streamId, stanzasReceived); this.mSmCatchupMessageCounter.set(0); @@ -1269,7 +1224,7 @@ public class XmppConnection implements Runnable { } private boolean isSecure() { - return this.encryptionEnabled || Config.ALLOW_NON_TLS_CONNECTIONS || account.isOnion(); + return this.encryptionEnabled || account.isOnion(); } private void authenticate(final SaslMechanism.Version version) throws IOException { @@ -1302,7 +1257,7 @@ public class XmppConnection implements Runnable { } quickStartAvailable = false; } else if (version == SaslMechanism.Version.SASL_2) { - final Element inline = authElement.findChild("inline", Namespace.SASL_2); + final Inline inline = authElement.getExtension(Inline.class); final boolean sm = inline != null && inline.hasChild("sm", Namespace.STREAM_MANAGEMENT); final HashedToken.Mechanism hashTokenRequest; if (usingFast) { @@ -1314,13 +1269,11 @@ public class XmppConnection implements Runnable { hashTokenRequest = HashedToken.Mechanism.best(fastMechanisms, SSLSockets.version(this.socket)); } - // TODO fix me. properly parse bind2 features - final Collection bindFeatures = - Collections.emptyList(); // Bind2.features(inline); + final Collection bindFeatures = BindInlineFeatures.get(inline); quickStartAvailable = sm && bindFeatures != null - && bindFeatures.containsAll(Bind2.QUICKSTART_FEATURES); + && bindFeatures.containsAll(BindInlineFeatures.QUICKSTART_FEATURES); this.hashTokenRequest = hashTokenRequest; authenticate = generateAuthenticationRequest( @@ -1333,8 +1286,7 @@ public class XmppConnection implements Runnable { .accountDao() .setQuickStartAvailable(account.id, quickStartAvailable); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": Authenticating with " + version @@ -1357,8 +1309,7 @@ public class XmppConnection implements Runnable { final @Nullable SaslMechanism saslMechanism, Collection mechanisms) throws StateChangingException { if (saslMechanism == null) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": unable to find supported SASL mechanism in " + mechanisms); throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } @@ -1370,8 +1321,7 @@ public class XmppConnection implements Runnable { account, CredentialStore.getInstance(context).get(account)); final int pinnedMechanism = saslFactory.getPinnedMechanismPriority(); if (pinnedMechanism > saslMechanism.getPriority()) { - Log.e( - Config.LOGTAG, + LOGGER.error( "Auth failed. Authentication mechanism " + saslMechanism.getMechanism() + " has lower priority (" @@ -1387,7 +1337,7 @@ public class XmppConnection implements Runnable { private Element generateAuthenticationRequest( final String firstMessage, final boolean usingFast) { return generateAuthenticationRequest( - firstMessage, usingFast, null, Bind2.QUICKSTART_FEATURES, true); + firstMessage, usingFast, null, BindInlineFeatures.QUICKSTART_FEATURES, true); } private Element generateAuthenticationRequest( @@ -1402,12 +1352,10 @@ public class XmppConnection implements Runnable { } final Element userAgent = authenticate.addChild("user-agent"); userAgent.setAttribute("id", account.getPublicDeviceId().toString()); - userAgent.addChild("software").setContent(context.getString(R.string.app_name)); - if (!PhoneHelper.isEmulator()) { - userAgent - .addChild("device") - .setContent(String.format("%s %s", Build.MANUFACTURER, Build.MODEL)); - } + userAgent.addChild("software").setContent(BuildConfig.APP_NAME); + userAgent + .addChild("device") + .setContent(String.format("%s %s", Build.MANUFACTURER, Build.MODEL)); if (bind != null) { authenticate.addChild(generateBindRequest(bind)); } @@ -1428,9 +1376,9 @@ public class XmppConnection implements Runnable { } private Element generateBindRequest(final Collection bindFeatures) { - Log.d(Config.LOGTAG, "inline bind features: " + bindFeatures); + LOGGER.debug("inline bind features: " + bindFeatures); final Element bind = new Element("bind", Namespace.BIND2); - bind.addChild("tag").setContent(context.getString(R.string.app_name)); + bind.addChild("tag").setContent(BuildConfig.APP_NAME); if (bindFeatures.contains(Namespace.CARBONS)) { bind.addChild("enable", Namespace.CARBONS); } @@ -1496,8 +1444,7 @@ public class XmppConnection implements Runnable { try { assignedJid = JidCreate.from(jid); } catch (final XmppStringprepException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server reported invalid jid (" + jid @@ -1506,8 +1453,7 @@ public class XmppConnection implements Runnable { } if (!account.address.getDomain().equals(assignedJid.getDomain())) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server tried to re-assign domain to " + assignedJid.getDomain()); @@ -1523,8 +1469,7 @@ public class XmppConnection implements Runnable { } return; } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": disconnecting because of bind failure (" + packet); @@ -1537,8 +1482,7 @@ public class XmppConnection implements Runnable { ConversationsDatabase.getInstance(context) .accountDao() .setResource(account.id, alternativeResource); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": switching resource due to conflict (" + alternativeResource @@ -1559,8 +1503,7 @@ public class XmppConnection implements Runnable { if (this.packetCallbacks.size() == 0) { return; } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": clearing " + this.packetCallbacks.size() @@ -1577,8 +1520,7 @@ public class XmppConnection implements Runnable { try { callback.accept(failurePacket); } catch (StateChangingError error) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": caught StateChangingError(" + error.state.toString() @@ -1586,8 +1528,7 @@ public class XmppConnection implements Runnable { // ignore } } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": done clearing iq callbacks. " + this.packetCallbacks.size() @@ -1595,7 +1536,7 @@ public class XmppConnection implements Runnable { } private void sendStartSession() { - Log.d(Config.LOGTAG, account.address + ": sending legacy session to outdated server"); + LOGGER.debug(account.address + ": sending legacy session to outdated server"); final Iq startSession = new Iq(Iq.Type.SET); startSession.addChild("session", "urn:ietf:params:xml:ns:xmpp-session"); this.sendIqPacketUnbound( @@ -1628,7 +1569,7 @@ public class XmppConnection implements Runnable { private void sendPostBindInitialization(final boolean carbonsEnabled) { getManager(CarbonsManager.class).setEnabled(carbonsEnabled); - Log.d(Config.LOGTAG, account.address + ": starting service discovery"); + LOGGER.debug(account.address + ": starting service discovery"); final ArrayList> discoFutures = new ArrayList<>(); final var discoManager = getManager(DiscoManager.class); @@ -1646,7 +1587,7 @@ public class XmppConnection implements Runnable { final var discoFuture = Futures.withTimeout( Futures.allAsList(discoFutures), - Config.CONNECT_DISCO_TIMEOUT, + CONNECT_DISCO_TIMEOUT, TimeUnit.SECONDS, ConnectionPool.CONNECTION_SCHEDULER); @@ -1661,7 +1602,7 @@ public class XmppConnection implements Runnable { @Override public void onFailure(@NonNull Throwable t) { - Log.d(Config.LOGTAG, "unable to fetch disco", t); + LOGGER.debug("unable to fetch disco", t); // TODO reset stream ID so we get a proper connect next time finalizeBind(); } @@ -1700,8 +1641,7 @@ public class XmppConnection implements Runnable { ConversationsDatabase.getInstance(context) .accountDao() .setResource(account.id, alternativeResource); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": switching resource due to conflict (" + alternativeResource @@ -1712,11 +1652,11 @@ public class XmppConnection implements Runnable { } else if (streamError.hasChild("policy-violation")) { this.lastConnect = SystemClock.elapsedRealtime(); final String text = streamError.findChildContent("text"); - Log.d(Config.LOGTAG, account.address + ": policy violation. " + text); + LOGGER.debug(account.address + ": policy violation. " + text); failPendingMessages(text); throw new StateChangingException(ConnectionState.POLICY_VIOLATION); } else { - Log.d(Config.LOGTAG, account.address + ": stream error " + streamError); + LOGGER.debug(account.address + ": stream error " + streamError); throw new StateChangingException(ConnectionState.STREAM_ERROR); } } @@ -1747,7 +1687,6 @@ public class XmppConnection implements Runnable { SaslMechanism.ensureAvailable(saslFactory.getQuickStartMechanism(), sslVersion); final boolean secureConnection = sslVersion != SSLSockets.Version.NONE; if (secureConnection - && Config.QUICKSTART_ENABLED && quickStartMechanism != null && ConversationsDatabase.getInstance(context) .accountDao() @@ -1765,8 +1704,7 @@ public class XmppConnection implements Runnable { this.stanzasSentBeforeAuthentication = this.stanzasSent; tagWriter.writeElement(authenticate); } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": quick start with " + quickStartMechanism.getMechanism()); return true; } else { @@ -1790,7 +1728,7 @@ public class XmppConnection implements Runnable { } private String createNewResource(final String postfixId) { - return String.format("%s.%s", context.getString(R.string.app_name), postfixId); + return String.format("%s.%s", BuildConfig.APP_NAME, postfixId); } public ListenableFuture sendIqPacket(final Iq packet) { @@ -1886,8 +1824,7 @@ public class XmppConnection implements Runnable { if (sendToUnboundStream || isBound) { tagWriter.writeStanzaAsync(packet); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + " do not write stanza to unbound stream " + packet.toString()); @@ -1903,9 +1840,8 @@ public class XmppConnection implements Runnable { } ++stanzasSent; - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": counting outbound " + packet.getName() @@ -1914,9 +1850,8 @@ public class XmppConnection implements Runnable { } this.mStanzaQueue.append(stanzasSent, stanza); if (stanza instanceof Message && stanza.getId() != null && inSmacksSession) { - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": requesting ack for message stanza #" + stanzasSent); @@ -1969,7 +1904,7 @@ public class XmppConnection implements Runnable { public void disconnect(final boolean force) { interrupt(); - Log.d(Config.LOGTAG, account.address + ": disconnecting force=" + force); + LOGGER.debug(account.address + ": disconnecting force=" + force); if (force) { forceCloseSocket(); } else { @@ -1980,25 +1915,21 @@ public class XmppConnection implements Runnable { final CountDownLatch streamCountDownLatch = this.mStreamCountDownLatch; try { currentTagWriter.await(1, TimeUnit.SECONDS); - Log.d(Config.LOGTAG, account.address + ": closing stream"); + LOGGER.debug(account.address + ": closing stream"); currentTagWriter.writeTag(Tag.end("stream:stream")); if (streamCountDownLatch != null) { if (streamCountDownLatch.await(1, TimeUnit.SECONDS)) { - Log.d(Config.LOGTAG, account.address + ": remote ended stream"); + LOGGER.debug(account.address + ": remote ended stream"); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": remote has not closed socket. force closing"); } } } catch (InterruptedException e) { - Log.d( - Config.LOGTAG, - account.address + ": interrupted while gracefully closing stream"); + LOGGER.debug(account.address + ": interrupted while gracefully closing stream"); } catch (final IOException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": io exception during disconnect (" + e.getMessage() @@ -2118,11 +2049,11 @@ public class XmppConnection implements Runnable { @Override public X509Certificate[] getCertificateChain(String alias) { - Log.d(Config.LOGTAG, "getting certificate chain"); + LOGGER.debug("getting certificate chain"); try { return KeyChain.getCertificateChain(context, alias); } catch (final Exception e) { - Log.d(Config.LOGTAG, "could not get certificate chain", e); + LOGGER.debug("could not get certificate chain", e); return new X509Certificate[0]; } } diff --git a/src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java b/app/src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java rename to app/src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java similarity index 99% rename from src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java index 50a910e9d..7e1756004 100644 --- a/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java +++ b/app/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java @@ -11,8 +11,8 @@ import com.google.common.io.BaseEncoding; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; -import eu.siacs.conversations.BuildConfig; -import eu.siacs.conversations.R; +import im.conversations.android.BuildConfig; +import im.conversations.android.R; import im.conversations.android.xml.Namespace; import im.conversations.android.xmpp.Entity; import im.conversations.android.xmpp.EntityCapabilities; diff --git a/src/main/java/im/conversations/android/xmpp/manager/NickManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/NickManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/NickManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/NickManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/PepManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/PepManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/PepManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/PepManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/RosterManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/RosterManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/RosterManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/RosterManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java diff --git a/src/main/java/im/conversations/android/xmpp/model/ByteContent.java b/app/src/main/java/im/conversations/android/xmpp/model/ByteContent.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/ByteContent.java rename to app/src/main/java/im/conversations/android/xmpp/model/ByteContent.java diff --git a/src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java b/app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java rename to app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java diff --git a/src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java b/app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java rename to app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java diff --git a/src/main/java/im/conversations/android/xmpp/model/Extension.java b/app/src/main/java/im/conversations/android/xmpp/model/Extension.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/Extension.java rename to app/src/main/java/im/conversations/android/xmpp/model/Extension.java diff --git a/src/main/java/im/conversations/android/xmpp/model/Hash.java b/app/src/main/java/im/conversations/android/xmpp/model/Hash.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/Hash.java rename to app/src/main/java/im/conversations/android/xmpp/model/Hash.java diff --git a/src/main/java/im/conversations/android/xmpp/model/StreamElement.java b/app/src/main/java/im/conversations/android/xmpp/model/StreamElement.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/StreamElement.java rename to app/src/main/java/im/conversations/android/xmpp/model/StreamElement.java diff --git a/src/main/java/im/conversations/android/xmpp/model/avatar/Data.java b/app/src/main/java/im/conversations/android/xmpp/model/avatar/Data.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/avatar/Data.java rename to app/src/main/java/im/conversations/android/xmpp/model/avatar/Data.java diff --git a/src/main/java/im/conversations/android/xmpp/model/avatar/Info.java b/app/src/main/java/im/conversations/android/xmpp/model/avatar/Info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/avatar/Info.java rename to app/src/main/java/im/conversations/android/xmpp/model/avatar/Info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java b/app/src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java rename to app/src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java diff --git a/src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java b/app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java similarity index 67% rename from src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java rename to app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java index 21c957a0f..b8e825b03 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java +++ b/app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java @@ -1,22 +1,19 @@ -package eu.siacs.conversations.xmpp.bind; +package im.conversations.android.xmpp.model.bind2; import com.google.common.collect.Collections2; - +import im.conversations.android.xml.Element; +import im.conversations.android.xml.Namespace; +import im.conversations.android.xmpp.model.sasl2.Inline; import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import eu.siacs.conversations.xml.Element; -import eu.siacs.conversations.xml.Namespace; - -public class Bind2 { +public class BindInlineFeatures { - public static final Collection QUICKSTART_FEATURES = Arrays.asList( - Namespace.CARBONS, - Namespace.STREAM_MANAGEMENT - ); + public static final Collection QUICKSTART_FEATURES = + Arrays.asList(Namespace.CARBONS, Namespace.STREAM_MANAGEMENT); - public static Collection features(final Element inline) { + public static Collection get(final Inline inline) { final Element inlineBind2 = inline != null ? inline.findChild("bind", Namespace.BIND2) : null; final Element inlineBind2Inline = diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Block.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Block.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Block.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Block.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java b/app/src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java rename to app/src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java diff --git a/src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java b/app/src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java rename to app/src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java b/app/src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java rename to app/src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java b/app/src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java rename to app/src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/Received.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/Received.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/Received.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/Received.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/correction/Replace.java b/app/src/main/java/im/conversations/android/xmpp/model/correction/Replace.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/correction/Replace.java rename to app/src/main/java/im/conversations/android/xmpp/model/correction/Replace.java diff --git a/src/main/java/im/conversations/android/xmpp/model/csi/Active.java b/app/src/main/java/im/conversations/android/xmpp/model/csi/Active.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/csi/Active.java rename to app/src/main/java/im/conversations/android/xmpp/model/csi/Active.java diff --git a/src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java b/app/src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java rename to app/src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java diff --git a/src/main/java/im/conversations/android/xmpp/model/csi/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/csi/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/csi/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/csi/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/Data.java b/app/src/main/java/im/conversations/android/xmpp/model/data/Data.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/Data.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/Data.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/Field.java b/app/src/main/java/im/conversations/android/xmpp/model/data/Field.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/Field.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/Field.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/Value.java b/app/src/main/java/im/conversations/android/xmpp/model/data/Value.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/Value.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/Value.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/data/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/delay/Delay.java b/app/src/main/java/im/conversations/android/xmpp/model/delay/Delay.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/delay/Delay.java rename to app/src/main/java/im/conversations/android/xmpp/model/delay/Delay.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/error/Condition.java b/app/src/main/java/im/conversations/android/xmpp/model/error/Condition.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/error/Condition.java rename to app/src/main/java/im/conversations/android/xmpp/model/error/Condition.java diff --git a/src/main/java/im/conversations/android/xmpp/model/error/Error.java b/app/src/main/java/im/conversations/android/xmpp/model/error/Error.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/error/Error.java rename to app/src/main/java/im/conversations/android/xmpp/model/error/Error.java diff --git a/src/main/java/im/conversations/android/xmpp/model/error/Text.java b/app/src/main/java/im/conversations/android/xmpp/model/error/Text.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/error/Text.java rename to app/src/main/java/im/conversations/android/xmpp/model/error/Text.java diff --git a/src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java b/app/src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java rename to app/src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java diff --git a/src/main/java/im/conversations/android/xmpp/model/jabber/Body.java b/app/src/main/java/im/conversations/android/xmpp/model/jabber/Body.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/jabber/Body.java rename to app/src/main/java/im/conversations/android/xmpp/model/jabber/Body.java diff --git a/src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java b/app/src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java rename to app/src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java diff --git a/src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/mam/Result.java b/app/src/main/java/im/conversations/android/xmpp/model/mam/Result.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/mam/Result.java rename to app/src/main/java/im/conversations/android/xmpp/model/mam/Result.java diff --git a/src/main/java/im/conversations/android/xmpp/model/mam/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/mam/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/mam/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/mam/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/Markable.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/Markable.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/Markable.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/Markable.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/Received.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/Received.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/Received.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/Received.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/Role.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/Role.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/Role.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/Role.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/nick/Nick.java b/app/src/main/java/im/conversations/android/xmpp/model/nick/Nick.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/nick/Nick.java rename to app/src/main/java/im/conversations/android/xmpp/model/nick/Nick.java diff --git a/src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java b/app/src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java rename to app/src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java diff --git a/src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java b/app/src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java rename to app/src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java diff --git a/src/main/java/im/conversations/android/xmpp/model/oob/URL.java b/app/src/main/java/im/conversations/android/xmpp/model/oob/URL.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/oob/URL.java rename to app/src/main/java/im/conversations/android/xmpp/model/oob/URL.java diff --git a/src/main/java/im/conversations/android/xmpp/model/oob/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/oob/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/oob/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/oob/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java b/app/src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java rename to app/src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java diff --git a/src/main/java/im/conversations/android/xmpp/model/ping/Ping.java b/app/src/main/java/im/conversations/android/xmpp/model/ping/Ping.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/ping/Ping.java rename to app/src/main/java/im/conversations/android/xmpp/model/ping/Ping.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java b/app/src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java rename to app/src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java b/app/src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java rename to app/src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/receipts/Received.java b/app/src/main/java/im/conversations/android/xmpp/model/receipts/Received.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/receipts/Received.java rename to app/src/main/java/im/conversations/android/xmpp/model/receipts/Received.java diff --git a/src/main/java/im/conversations/android/xmpp/model/receipts/Request.java b/app/src/main/java/im/conversations/android/xmpp/model/receipts/Request.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/receipts/Request.java rename to app/src/main/java/im/conversations/android/xmpp/model/receipts/Request.java diff --git a/src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Instructions.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Instructions.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Instructions.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Instructions.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Password.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Password.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Password.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Password.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Register.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Register.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Register.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Register.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Remove.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Remove.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Remove.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Remove.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Username.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Username.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Username.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Username.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/register/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reply/Reply.java b/app/src/main/java/im/conversations/android/xmpp/model/reply/Reply.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reply/Reply.java rename to app/src/main/java/im/conversations/android/xmpp/model/reply/Reply.java diff --git a/src/main/java/im/conversations/android/xmpp/model/retract/Retract.java b/app/src/main/java/im/conversations/android/xmpp/model/retract/Retract.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/retract/Retract.java rename to app/src/main/java/im/conversations/android/xmpp/model/retract/Retract.java diff --git a/src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java b/app/src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java rename to app/src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java diff --git a/src/main/java/im/conversations/android/xmpp/model/retract/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/retract/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/retract/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/retract/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/Group.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/Group.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/Group.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/Group.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/Query.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/Query.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/Query.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/Query.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/package-info.java diff --git a/app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java new file mode 100644 index 000000000..e424cb0dd --- /dev/null +++ b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java @@ -0,0 +1,12 @@ +package im.conversations.android.xmpp.model.sasl2; + +import im.conversations.android.annotation.XmlElement; +import im.conversations.android.xmpp.model.Extension; + +@XmlElement +public class Inline extends Extension { + + public Inline() { + super(Inline.class); + } +} diff --git a/app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java new file mode 100644 index 000000000..36f8927ff --- /dev/null +++ b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java @@ -0,0 +1,5 @@ +@XmlPackage(namespace = Namespace.SASL_2) +package im.conversations.android.xmpp.model.sasl2; + +import im.conversations.android.annotation.XmlPackage; +import im.conversations.android.xml.Namespace; diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Ack.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Ack.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Ack.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Ack.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Enable.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Enable.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Enable.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Enable.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Request.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Request.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Request.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Request.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Resume.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Resume.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Resume.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Resume.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Message.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Message.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Message.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Message.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Active.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Active.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Active.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Active.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java b/app/src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Composing.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Composing.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Composing.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Composing.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Gone.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Gone.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Gone.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Gone.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Inactive.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Inactive.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Inactive.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Inactive.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Paused.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Paused.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Paused.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Paused.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/state/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/streams/Features.java b/app/src/main/java/im/conversations/android/xmpp/model/streams/Features.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/streams/Features.java rename to app/src/main/java/im/conversations/android/xmpp/model/streams/Features.java diff --git a/src/main/java/im/conversations/android/xmpp/model/streams/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/streams/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/streams/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/streams/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java b/app/src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java rename to app/src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java diff --git a/src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java b/app/src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java rename to app/src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java diff --git a/src/main/java/im/conversations/android/xmpp/model/unique/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/unique/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/unique/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/unique/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/version/Version.java b/app/src/main/java/im/conversations/android/xmpp/model/version/Version.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/version/Version.java rename to app/src/main/java/im/conversations/android/xmpp/model/version/Version.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java b/app/src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java b/app/src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/External.java b/app/src/main/java/im/conversations/android/xmpp/sasl/External.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/External.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/External.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java b/app/src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java b/app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java b/app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/Plain.java b/app/src/main/java/im/conversations/android/xmpp/sasl/Plain.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/Plain.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/Plain.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java b/app/src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java diff --git a/src/main/res/anim/slide_from_left.xml b/app/src/main/res/anim/slide_from_left.xml similarity index 100% rename from src/main/res/anim/slide_from_left.xml rename to app/src/main/res/anim/slide_from_left.xml diff --git a/src/main/res/anim/slide_from_right.xml b/app/src/main/res/anim/slide_from_right.xml similarity index 100% rename from src/main/res/anim/slide_from_right.xml rename to app/src/main/res/anim/slide_from_right.xml diff --git a/src/main/res/anim/slide_to_left.xml b/app/src/main/res/anim/slide_to_left.xml similarity index 100% rename from src/main/res/anim/slide_to_left.xml rename to app/src/main/res/anim/slide_to_left.xml diff --git a/src/main/res/anim/slide_to_right.xml b/app/src/main/res/anim/slide_to_right.xml similarity index 100% rename from src/main/res/anim/slide_to_right.xml rename to app/src/main/res/anim/slide_to_right.xml diff --git a/src/main/res/drawable/ic_account_circle_24dp.xml b/app/src/main/res/drawable/ic_account_circle_24dp.xml similarity index 100% rename from src/main/res/drawable/ic_account_circle_24dp.xml rename to app/src/main/res/drawable/ic_account_circle_24dp.xml diff --git a/src/main/res/drawable/ic_settings_24dp.xml b/app/src/main/res/drawable/ic_settings_24dp.xml similarity index 100% rename from src/main/res/drawable/ic_settings_24dp.xml rename to app/src/main/res/drawable/ic_settings_24dp.xml diff --git a/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml similarity index 100% rename from src/main/res/layout/activity_setup.xml rename to app/src/main/res/layout/activity_setup.xml diff --git a/src/main/res/layout/fragment_password.xml b/app/src/main/res/layout/fragment_password.xml similarity index 99% rename from src/main/res/layout/fragment_password.xml rename to app/src/main/res/layout/fragment_password.xml index fa9d2b8ca..46deb9163 100644 --- a/src/main/res/layout/fragment_password.xml +++ b/app/src/main/res/layout/fragment_password.xml @@ -33,7 +33,7 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:title="@string/app_name" - app:menu="@menu/setup" + app:menu="@menu/activity_setup" app:titleTextColor="?colorPrimary" app:titleCentered="true" /> diff --git a/src/main/res/layout/fragment_sign_in.xml b/app/src/main/res/layout/fragment_sign_in.xml similarity index 98% rename from src/main/res/layout/fragment_sign_in.xml rename to app/src/main/res/layout/fragment_sign_in.xml index 018557a7d..0339896e7 100644 --- a/src/main/res/layout/fragment_sign_in.xml +++ b/app/src/main/res/layout/fragment_sign_in.xml @@ -32,7 +32,7 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:title="@string/app_name" - app:menu="@menu/setup" + app:menu="@menu/activity_setup" app:titleTextColor="?colorPrimary" app:titleCentered="true" /> @@ -111,7 +111,6 @@ android:layout_height="wrap_content" android:text="@string/no_account_register" android:layout_centerHorizontal="true" - android:textColor="?colorSecondary" android:enabled="@{!setupViewModel.isLoading()}" android:layout_below="@+id/xmpp_address_input_layout" /> diff --git a/src/main/res/menu/setup.xml b/app/src/main/res/menu/activity_setup.xml similarity index 100% rename from src/main/res/menu/setup.xml rename to app/src/main/res/menu/activity_setup.xml diff --git a/src/main/res/navigation/setup_navigation.xml b/app/src/main/res/navigation/setup_navigation.xml similarity index 100% rename from src/main/res/navigation/setup_navigation.xml rename to app/src/main/res/navigation/setup_navigation.xml diff --git a/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml similarity index 100% rename from src/main/res/values-ar/strings.xml rename to app/src/main/res/values-ar/strings.xml diff --git a/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml similarity index 100% rename from src/main/res/values-bg/strings.xml rename to app/src/main/res/values-bg/strings.xml diff --git a/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml similarity index 100% rename from src/main/res/values-bn-rIN/strings.xml rename to app/src/main/res/values-bn-rIN/strings.xml diff --git a/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml similarity index 100% rename from src/main/res/values-ca/strings.xml rename to app/src/main/res/values-ca/strings.xml diff --git a/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml similarity index 100% rename from src/main/res/values-cs/strings.xml rename to app/src/main/res/values-cs/strings.xml diff --git a/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml similarity index 100% rename from src/main/res/values-da-rDK/strings.xml rename to app/src/main/res/values-da-rDK/strings.xml diff --git a/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml similarity index 100% rename from src/main/res/values-de/strings.xml rename to app/src/main/res/values-de/strings.xml diff --git a/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml similarity index 100% rename from src/main/res/values-el/strings.xml rename to app/src/main/res/values-el/strings.xml diff --git a/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml similarity index 100% rename from src/main/res/values-es/strings.xml rename to app/src/main/res/values-es/strings.xml diff --git a/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml similarity index 100% rename from src/main/res/values-eu/strings.xml rename to app/src/main/res/values-eu/strings.xml diff --git a/src/main/res/values-fa-rIR/strings.xml b/app/src/main/res/values-fa-rIR/strings.xml similarity index 100% rename from src/main/res/values-fa-rIR/strings.xml rename to app/src/main/res/values-fa-rIR/strings.xml diff --git a/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml similarity index 100% rename from src/main/res/values-fi/strings.xml rename to app/src/main/res/values-fi/strings.xml diff --git a/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml similarity index 100% rename from src/main/res/values-fr/strings.xml rename to app/src/main/res/values-fr/strings.xml diff --git a/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml similarity index 100% rename from src/main/res/values-gl/strings.xml rename to app/src/main/res/values-gl/strings.xml diff --git a/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml similarity index 100% rename from src/main/res/values-hi-rIN/strings.xml rename to app/src/main/res/values-hi-rIN/strings.xml diff --git a/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml similarity index 100% rename from src/main/res/values-hr/strings.xml rename to app/src/main/res/values-hr/strings.xml diff --git a/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml similarity index 100% rename from src/main/res/values-hu/strings.xml rename to app/src/main/res/values-hu/strings.xml diff --git a/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml similarity index 100% rename from src/main/res/values-id/strings.xml rename to app/src/main/res/values-id/strings.xml diff --git a/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml similarity index 100% rename from src/main/res/values-it/strings.xml rename to app/src/main/res/values-it/strings.xml diff --git a/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml similarity index 100% rename from src/main/res/values-iw/strings.xml rename to app/src/main/res/values-iw/strings.xml diff --git a/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml similarity index 100% rename from src/main/res/values-ja/strings.xml rename to app/src/main/res/values-ja/strings.xml diff --git a/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml similarity index 100% rename from src/main/res/values-ko/strings.xml rename to app/src/main/res/values-ko/strings.xml diff --git a/src/main/res/values-land/bools.xml b/app/src/main/res/values-land/bools.xml similarity index 100% rename from src/main/res/values-land/bools.xml rename to app/src/main/res/values-land/bools.xml diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml new file mode 100644 index 000000000..66ed64d3d --- /dev/null +++ b/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,5 @@ + + 8dp + 12dp + 272dp + diff --git a/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml similarity index 100% rename from src/main/res/values-ml/strings.xml rename to app/src/main/res/values-ml/strings.xml diff --git a/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml similarity index 100% rename from src/main/res/values-nb-rNO/strings.xml rename to app/src/main/res/values-nb-rNO/strings.xml diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 000000000..2bbe27628 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,31 @@ + + + + diff --git a/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml similarity index 100% rename from src/main/res/values-nl/strings.xml rename to app/src/main/res/values-nl/strings.xml diff --git a/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml similarity index 100% rename from src/main/res/values-pl/strings.xml rename to app/src/main/res/values-pl/strings.xml diff --git a/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml similarity index 100% rename from src/main/res/values-pt-rBR/strings.xml rename to app/src/main/res/values-pt-rBR/strings.xml diff --git a/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml similarity index 100% rename from src/main/res/values-pt/strings.xml rename to app/src/main/res/values-pt/strings.xml diff --git a/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml similarity index 100% rename from src/main/res/values-ro-rRO/strings.xml rename to app/src/main/res/values-ro-rRO/strings.xml diff --git a/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml similarity index 100% rename from src/main/res/values-ru/strings.xml rename to app/src/main/res/values-ru/strings.xml diff --git a/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml similarity index 100% rename from src/main/res/values-sk/strings.xml rename to app/src/main/res/values-sk/strings.xml diff --git a/src/main/res/values-sq-rAL/strings.xml b/app/src/main/res/values-sq-rAL/strings.xml similarity index 100% rename from src/main/res/values-sq-rAL/strings.xml rename to app/src/main/res/values-sq-rAL/strings.xml diff --git a/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml similarity index 100% rename from src/main/res/values-sr/strings.xml rename to app/src/main/res/values-sr/strings.xml diff --git a/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml similarity index 100% rename from src/main/res/values-sv/strings.xml rename to app/src/main/res/values-sv/strings.xml diff --git a/src/quicksy/res/values/defaults.xml b/app/src/main/res/values-sw600dp/device.xml similarity index 52% rename from src/quicksy/res/values/defaults.xml rename to app/src/main/res/values-sw600dp/device.xml index 8f3617396..76b119505 100644 --- a/src/quicksy/res/values/defaults.xml +++ b/app/src/main/res/values-sw600dp/device.xml @@ -1,4 +1,4 @@ - always + true diff --git a/src/main/res/values-szl/strings.xml b/app/src/main/res/values-szl/strings.xml similarity index 100% rename from src/main/res/values-szl/strings.xml rename to app/src/main/res/values-szl/strings.xml diff --git a/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml similarity index 100% rename from src/main/res/values-tr-rTR/strings.xml rename to app/src/main/res/values-tr-rTR/strings.xml diff --git a/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml similarity index 100% rename from src/main/res/values-uk/strings.xml rename to app/src/main/res/values-uk/strings.xml diff --git a/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml similarity index 100% rename from src/main/res/values-vi/strings.xml rename to app/src/main/res/values-vi/strings.xml diff --git a/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from src/main/res/values-zh-rCN/strings.xml rename to app/src/main/res/values-zh-rCN/strings.xml diff --git a/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml similarity index 100% rename from src/main/res/values-zh-rTW/strings.xml rename to app/src/main/res/values-zh-rTW/strings.xml diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..fe65a2a6a --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,64 @@ + + + #43A047 + #006E1C + #FFFFFF + #98F994 + #002204 + #52634F + #FFFFFF + #D5E8CF + #111F0F + #38656A + #FFFFFF + #BCEBF0 + #002023 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FCFDF6 + #1A1C19 + #FCFDF6 + #1A1C19 + #DEE5D8 + #424940 + #72796F + #F0F1EB + #2F312D + #7DDC7A + #000000 + #006E1C + #C2C9BD + #000000 + #7DDC7A + #00390A + #005313 + #98F994 + #BACCB3 + #253423 + #3B4B38 + #D5E8CF + #A0CFD4 + #00363B + #1F4D52 + #BCEBF0 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1A1C19 + #E2E3DD + #1A1C19 + #E2E3DD + #424940 + #C2C9BD + #8C9388 + #1A1C19 + #E2E3DD + #006E1C + #000000 + #7DDC7A + #424940 + #000000 + diff --git a/app/src/main/res/values/device.xml b/app/src/main/res/values/device.xml new file mode 100644 index 000000000..f99fe3e59 --- /dev/null +++ b/app/src/main/res/values/device.xml @@ -0,0 +1,4 @@ + + + false + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 000000000..7f85bd709 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + 48dp + 336dp + 24dp + diff --git a/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml similarity index 100% rename from src/main/res/values/integers.xml rename to app/src/main/res/values/integers.xml diff --git a/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml similarity index 100% rename from src/main/res/values/strings.xml rename to app/src/main/res/values/strings.xml diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 000000000..ddf74586f --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,31 @@ + + + + diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 000000000..fa0f996d2 --- /dev/null +++ b/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 000000000..9ee9997b0 --- /dev/null +++ b/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/src/quicksy/res/drawable/ic_launcher_foreground.xml b/app/src/quicksy/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from src/quicksy/res/drawable/ic_launcher_foreground.xml rename to app/src/quicksy/res/drawable/ic_launcher_foreground.xml diff --git a/src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml b/app/src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml similarity index 100% rename from src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml rename to app/src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml diff --git a/src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml b/app/src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml similarity index 100% rename from src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml rename to app/src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml diff --git a/app/src/quicksy/res/mipmap-hdpi/ic_launcher_background.png b/app/src/quicksy/res/mipmap-hdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5a16390aae109be31f0e54e7236bc0d23ddf54 GIT binary patch literal 1752 zcmeAS@N?(olHy`uVBq!ia0y~yU|0mg9Bd2>42M36Ni#68&G&S145_&F_U`MTU~hr8 zMEwGJ2R}tFK^}GG6Z?!B3q-zLyP>mc3zx^HW!1Z?(^TJwfBh?VGT3%zB>TO+$}Iv; z9Et>q4&Q&j_I>eq`|JDnr^lCmzIy!WXVdFu|BtkGWRqGw<0-tAzq+9BqH@5xWbEv1i{CN5L5`RugfFxL@Q*9g7` zPnZfB`_pIf*F8;AUgEGsSkR4eiW936hkDu9Mdq8YDKzeI;J95-Dc-@|x54Cq$O4Bs zpYMJ=<7rX0LP%NQx$MIo;qi?-EW&+OxmqlBm~+_dxS|kC_T#f_m;^h51)n|oq#+>w zOmEg!EyiUGtdC^wUYYf2;rjmH@2)1WJeo5{)XnL$1J@DD8;a$O3DJ!=KAIgj*=+Zq z_jD2KBc@zGujI{6Tu1ow{XQAg7_8#;Q7HRT{qWb*G=@zUYaHGrgddll+H{$jHHm${ zc$VFldryx~$O>fInEbqT>B34z)};1ZbHvLS=d!5_SZ`5zUiV>kxZPF<&Le!fCzmd8 zbzn_$pY~+kg3FIslD_7@j5_<{z;>>X@0*!6erkSw@A9M=b&Kc)4r~6jvGJGuUHx`V z)d7~IqtYV0dty?=u7cT9^cHMp;yRLLu2J^FF6Q@DE;Rw|oZ_?y;cXmC9M*i`@{%lR z4)1N{JaX!m%)46$q*=`Q)daGuEdJHRGUf+VUj8TVux7>CLf`EdUnVkbTom3Kark$| z-;;a8G#VrBnylfEW(iOT+Z5c_vb|I}o5e@r+J@k|d2MDNmYi5Kt6Qi;G{*Jf18vrG zQtAS$cXnO!KeYVlhT6@^QTkIHbZXjrS?#iO1U(ufZpxa)wxu%)cZh!ZJ}HMk-+aL~ zgT{zA4Ao~D?&q~$ZDdJ0s4Q)1XFK8G+4RuG0Zbb&s2ydVFBa{$Hi2p5iQ9XsZhr7u zu(_G@h?kk>?WBgV0K2=}%*E6My7#^`Wt}f>v^r`rOH$)zXYPiHFV-Y7ZJe~(nb*#C z(n81D1g4EIHoa-gk62-*(HM~sx$U6&nk`im9C~7=t!MLUFcPrdUaj}lh4aV(=bY@C zxCd_%w>7gQJ(#`s7UQpjxA%Ilmp}7TqEX_v=HA7OsZ00v14WTo=6w)3)oU&{Rjff|hxWs{rb_x*kFY~h@5)eK1|4u6h5$?&>)I=iu`ih%Pz z`FCkdR}_ENlrLDte#&fu1CNFM6~-^@&)GxRggP9bw_jse{NU+gpW_@y8ma5k=zDCb47hLJrvlsS}IRw_;O(T_s0ckwgFy_OcyH`PwFxdkC!&f zEe`N9V7mBIu}b$q(1)UcQ;tlAZ`>lh8(wDg8O`bsViW363=atseDzV*GQ2;?NVf6C zjc2Uhb`1SoSNW9%WUVXi87^l&b98%s{$-gdQ9TYNZ&X^08Vo;tN_geSWcWhP#rDvr zA36>oOFsICopI7&)HqmF@Za@r&4j8RhcCM%zb#Uq(PY(N`9de*Swl^)V259<{P(ND z7sT#oI4L`vGGMy+v3J8I%^Btw@czouR!?WZXYthCRtRG*Bzv=#PV_}`d?PW>=b9b3DE)rSDdO)9FT}@%B z#L{5FjyQq${F4Qv7;+AHYO~(#3$zz)lwdIAU#M$mdFrObT9B^kY5Xml9eV4|t+RJK z8N!luAnoY^nT2BWMV5*zPSNser(nOF6dw2nww7byX1C_tJ5j%4vafZe_n#O#}Ptb;XW*XX*P{qCZ`R`xngo#WxkO)n)HZzOh{mFGC$`a|e}r_h1N@%gixF3LUP=-9f4 z^9?&_BNQG)aS w{Ce+t+whs=l{a&qizyMVH8>Pg7Jjxbn4dlKlO6L`1_lNOPgg&ebxsLQ01hq+v;Y7A literal 0 HcmV?d00001 diff --git a/src/quicksy/res/mipmap-hdpi/new_launcher.png b/app/src/quicksy/res/mipmap-hdpi/new_launcher.png similarity index 100% rename from src/quicksy/res/mipmap-hdpi/new_launcher.png rename to app/src/quicksy/res/mipmap-hdpi/new_launcher.png diff --git a/src/quicksy/res/mipmap-hdpi/new_launcher_round.png b/app/src/quicksy/res/mipmap-hdpi/new_launcher_round.png similarity index 100% rename from src/quicksy/res/mipmap-hdpi/new_launcher_round.png rename to app/src/quicksy/res/mipmap-hdpi/new_launcher_round.png diff --git a/app/src/quicksy/res/mipmap-mdpi/ic_launcher_background.png b/app/src/quicksy/res/mipmap-mdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..57edd5ca3b8225076c8a49743cbcb823d7ffe73d GIT binary patch literal 1162 zcmeAS@N?(olHy`uVBq!ia0y~yV8{Vs4mJh`hW@nhvkVL@fu1goAr-gY-gy}mbMxemar7(Vy%}ge(ckA6UwrUm3T)KOC{?v`#@yOc17lJsvMZHG<$)FlPqh*K}p5@iQ7e{Dl+waoUue^=@JHE+3okXANaCp zTmH80)2u8J&vvACCN*+yIP!H`N}ze(*Qqsp2b7`{v$v#nC9!gDI1zRt{zhM5<$U%H z2k!R#3OJ?67?xSQ4WE}=BAF9!-g(ZP^DMAl z(l0zhR^fo17kf#yNbckNj0y7Z(;^<^+<%)E&Bd`{`^#4wCRiw_K7Fv0y?VZ$Z9w{( z)nXTHBYwZVF_rz&p$Mm4?2BLP>0UUuBRqz8LAJrJcaIn%A52l&#lE<@&2Yt^L+>QR z*j|YB-23=g@g&2p$A5Q5G45hte7Qn1K=kk`A&2P+C7TX9uHyD+e=f16ae>w#i+x7&#_ zr`V3M8S*^m>d~9FGhn6bz3L0$edhmTV;fD|bPa8#;d|Eo5( z@#4)yo>g`VmI++vcqL@_R|LFdy;pA$6y7E7RLtzQK0bSaSHqWvLJRYRFK@cJMWY}5 zORh|<=+4MHuS+^c!qJxv7cp?n5%efLs3AGf~-RQt(b<3 z@wE|7vbJ+KX*HkrpDk@rwM6LnDdoaOlZGG@@r1j-_o{?&Xz%-w-t_5#Mf4Kw4fmYq z+lHn(7}=cL61w~h>y3XU@6RU|F6f*8^z1>;i!lwM8!rVPb+)Rsi+}Mk`e{MomZNJw zo^HOl{?>akhvJ1hQ%^GO{zlJE2N=w;DEvszb~wM?^{#;9}a+>Ysc x?p;cV-S^LPLE*Ne|3!El1z6CLUEx0_HyxJmH%x!>GB7YOc)I$ztaD0e0sybm7?%J5 literal 0 HcmV?d00001 diff --git a/src/quicksy/res/mipmap-mdpi/new_launcher.png b/app/src/quicksy/res/mipmap-mdpi/new_launcher.png similarity index 100% rename from src/quicksy/res/mipmap-mdpi/new_launcher.png rename to app/src/quicksy/res/mipmap-mdpi/new_launcher.png diff --git a/src/quicksy/res/mipmap-mdpi/new_launcher_round.png b/app/src/quicksy/res/mipmap-mdpi/new_launcher_round.png similarity index 100% rename from src/quicksy/res/mipmap-mdpi/new_launcher_round.png rename to app/src/quicksy/res/mipmap-mdpi/new_launcher_round.png diff --git a/app/src/quicksy/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/quicksy/res/mipmap-xhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4e772d0695d9ce2c476fdccd58071b3ead4400 GIT binary patch literal 2499 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 literal 0 HcmV?d00001 diff --git a/src/quicksy/res/mipmap-xxhdpi/new_launcher.png b/app/src/quicksy/res/mipmap-xxhdpi/new_launcher.png similarity index 100% rename from src/quicksy/res/mipmap-xxhdpi/new_launcher.png rename to app/src/quicksy/res/mipmap-xxhdpi/new_launcher.png diff --git a/src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png b/app/src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png similarity index 100% rename from src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png rename to app/src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png diff --git a/app/src/quicksy/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/quicksy/res/mipmap-xxxhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..b75f8bc457e06ea450ee9a26bcb094c94d38750c GIT binary patch literal 5359 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 VY?-x@DFXuogQu&X%Q~loCIGm2!~p;R literal 0 HcmV?d00001 diff --git a/src/quicksy/res/mipmap-xxxhdpi/new_launcher.png b/app/src/quicksy/res/mipmap-xxxhdpi/new_launcher.png similarity index 100% rename from src/quicksy/res/mipmap-xxxhdpi/new_launcher.png rename to app/src/quicksy/res/mipmap-xxxhdpi/new_launcher.png diff --git a/src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png b/app/src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png similarity index 100% rename from src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png rename to app/src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png diff --git a/src/quicksy/res/values-ar/strings.xml b/app/src/quicksy/res/values-ar/strings.xml similarity index 100% rename from src/quicksy/res/values-ar/strings.xml rename to app/src/quicksy/res/values-ar/strings.xml diff --git a/src/quicksy/res/values-bg/strings.xml b/app/src/quicksy/res/values-bg/strings.xml similarity index 100% rename from src/quicksy/res/values-bg/strings.xml rename to app/src/quicksy/res/values-bg/strings.xml diff --git a/src/quicksy/res/values-ca/strings.xml b/app/src/quicksy/res/values-ca/strings.xml similarity index 100% rename from src/quicksy/res/values-ca/strings.xml rename to app/src/quicksy/res/values-ca/strings.xml diff --git a/src/quicksy/res/values-da-rDK/strings.xml b/app/src/quicksy/res/values-da-rDK/strings.xml similarity index 100% rename from src/quicksy/res/values-da-rDK/strings.xml rename to app/src/quicksy/res/values-da-rDK/strings.xml diff --git a/src/quicksy/res/values-de/strings.xml b/app/src/quicksy/res/values-de/strings.xml similarity index 100% rename from src/quicksy/res/values-de/strings.xml rename to app/src/quicksy/res/values-de/strings.xml diff --git a/src/quicksy/res/values-el/strings.xml b/app/src/quicksy/res/values-el/strings.xml similarity index 100% rename from src/quicksy/res/values-el/strings.xml rename to app/src/quicksy/res/values-el/strings.xml diff --git a/src/quicksy/res/values-es/strings.xml b/app/src/quicksy/res/values-es/strings.xml similarity index 100% rename from src/quicksy/res/values-es/strings.xml rename to app/src/quicksy/res/values-es/strings.xml diff --git a/src/quicksy/res/values-fi/strings.xml b/app/src/quicksy/res/values-fi/strings.xml similarity index 100% rename from src/quicksy/res/values-fi/strings.xml rename to app/src/quicksy/res/values-fi/strings.xml diff --git a/src/quicksy/res/values-fr/strings.xml b/app/src/quicksy/res/values-fr/strings.xml similarity index 100% rename from src/quicksy/res/values-fr/strings.xml rename to app/src/quicksy/res/values-fr/strings.xml diff --git a/src/quicksy/res/values-gl/strings.xml b/app/src/quicksy/res/values-gl/strings.xml similarity index 100% rename from src/quicksy/res/values-gl/strings.xml rename to app/src/quicksy/res/values-gl/strings.xml diff --git a/src/quicksy/res/values-hr/strings.xml b/app/src/quicksy/res/values-hr/strings.xml similarity index 100% rename from src/quicksy/res/values-hr/strings.xml rename to app/src/quicksy/res/values-hr/strings.xml diff --git a/src/quicksy/res/values-hu/strings.xml b/app/src/quicksy/res/values-hu/strings.xml similarity index 100% rename from src/quicksy/res/values-hu/strings.xml rename to app/src/quicksy/res/values-hu/strings.xml diff --git a/src/quicksy/res/values-id/strings.xml b/app/src/quicksy/res/values-id/strings.xml similarity index 100% rename from src/quicksy/res/values-id/strings.xml rename to app/src/quicksy/res/values-id/strings.xml diff --git a/src/quicksy/res/values-it/strings.xml b/app/src/quicksy/res/values-it/strings.xml similarity index 100% rename from src/quicksy/res/values-it/strings.xml rename to app/src/quicksy/res/values-it/strings.xml diff --git a/src/quicksy/res/values-ja/strings.xml b/app/src/quicksy/res/values-ja/strings.xml similarity index 100% rename from src/quicksy/res/values-ja/strings.xml rename to app/src/quicksy/res/values-ja/strings.xml diff --git a/src/quicksy/res/values-nl/strings.xml b/app/src/quicksy/res/values-nl/strings.xml similarity index 100% rename from src/quicksy/res/values-nl/strings.xml rename to app/src/quicksy/res/values-nl/strings.xml diff --git a/src/quicksy/res/values-pl/strings.xml b/app/src/quicksy/res/values-pl/strings.xml similarity index 100% rename from src/quicksy/res/values-pl/strings.xml rename to app/src/quicksy/res/values-pl/strings.xml diff --git a/src/quicksy/res/values-pt-rBR/strings.xml b/app/src/quicksy/res/values-pt-rBR/strings.xml similarity index 100% rename from src/quicksy/res/values-pt-rBR/strings.xml rename to app/src/quicksy/res/values-pt-rBR/strings.xml diff --git a/src/quicksy/res/values-ro-rRO/strings.xml b/app/src/quicksy/res/values-ro-rRO/strings.xml similarity index 100% rename from src/quicksy/res/values-ro-rRO/strings.xml rename to app/src/quicksy/res/values-ro-rRO/strings.xml diff --git a/src/quicksy/res/values-ru/strings.xml b/app/src/quicksy/res/values-ru/strings.xml similarity index 100% rename from src/quicksy/res/values-ru/strings.xml rename to app/src/quicksy/res/values-ru/strings.xml diff --git a/src/quicksy/res/values-sk/strings.xml b/app/src/quicksy/res/values-sk/strings.xml similarity index 100% rename from src/quicksy/res/values-sk/strings.xml rename to app/src/quicksy/res/values-sk/strings.xml diff --git a/src/quicksy/res/values-sq/strings.xml b/app/src/quicksy/res/values-sq/strings.xml similarity index 100% rename from src/quicksy/res/values-sq/strings.xml rename to app/src/quicksy/res/values-sq/strings.xml diff --git a/src/quicksy/res/values-sv/strings.xml b/app/src/quicksy/res/values-sv/strings.xml similarity index 100% rename from src/quicksy/res/values-sv/strings.xml rename to app/src/quicksy/res/values-sv/strings.xml diff --git a/src/quicksy/res/values-szl/strings.xml b/app/src/quicksy/res/values-szl/strings.xml similarity index 100% rename from src/quicksy/res/values-szl/strings.xml rename to app/src/quicksy/res/values-szl/strings.xml diff --git a/src/quicksy/res/values-tr-rTR/strings.xml b/app/src/quicksy/res/values-tr-rTR/strings.xml similarity index 100% rename from src/quicksy/res/values-tr-rTR/strings.xml rename to app/src/quicksy/res/values-tr-rTR/strings.xml diff --git a/src/quicksy/res/values-uk/strings.xml b/app/src/quicksy/res/values-uk/strings.xml similarity index 100% rename from src/quicksy/res/values-uk/strings.xml rename to app/src/quicksy/res/values-uk/strings.xml diff --git a/src/quicksy/res/values-vi/strings.xml b/app/src/quicksy/res/values-vi/strings.xml similarity index 100% rename from src/quicksy/res/values-vi/strings.xml rename to app/src/quicksy/res/values-vi/strings.xml diff --git a/src/quicksy/res/values-zh-rCN/strings.xml b/app/src/quicksy/res/values-zh-rCN/strings.xml similarity index 100% rename from src/quicksy/res/values-zh-rCN/strings.xml rename to app/src/quicksy/res/values-zh-rCN/strings.xml diff --git a/src/quicksy/res/values-zh-rTW/strings.xml b/app/src/quicksy/res/values-zh-rTW/strings.xml similarity index 100% rename from src/quicksy/res/values-zh-rTW/strings.xml rename to app/src/quicksy/res/values-zh-rTW/strings.xml diff --git a/src/quicksy/res/values/strings.xml b/app/src/quicksy/res/values/strings.xml similarity index 100% rename from src/quicksy/res/values/strings.xml rename to app/src/quicksy/res/values/strings.xml diff --git a/src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java b/app/src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java rename to app/src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java diff --git a/src/test/java/im/conversations/android/xmpp/PubSubTest.java b/app/src/test/java/im/conversations/android/xmpp/PubSubTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/PubSubTest.java rename to app/src/test/java/im/conversations/android/xmpp/PubSubTest.java diff --git a/src/test/java/im/conversations/android/xmpp/TimestampTest.java b/app/src/test/java/im/conversations/android/xmpp/TimestampTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/TimestampTest.java rename to app/src/test/java/im/conversations/android/xmpp/TimestampTest.java diff --git a/src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java b/app/src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java rename to app/src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java diff --git a/build.gradle b/build.gradle index 7c156fc29..5170846e3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,318 +1,28 @@ buildscript { - ext { - room_version = "2.5.0" - navVersion = '2.5.3' appcompatVersion = "1.6.1" + material = "1.8.0" lifecycleVersion = "2.2.0" + navVersion = '2.5.3' + roomVersion = "2.5.0" + espressoVersion = "3.5.1" } repositories { google() mavenCentral() } + + dependencies { classpath 'com.android.tools.build:gradle:7.4.1' - classpath "com.diffplug.spotless:spotless-plugin-gradle:6.13.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navVersion" + classpath "com.diffplug.spotless:spotless-plugin-gradle:6.13.0" } } - -apply plugin: 'com.android.application' -apply plugin: "com.diffplug.spotless" -apply plugin: "androidx.navigation.safeargs" - - -repositories { - google() - mavenCentral() - jcenter() -} - -configurations { - playstoreImplementation - freeImplementation - conversationsFreeImplementation - conversationsPlaystorImplementation - conversationsPlaystoreImplementation - quicksyPlaystoreImplementation - quicksyPlaystoreImplementation - quicksyFreeImplementation - quicksyImplementation -} - -spotless { - ratchetFrom '2.12.2' - java { - target '**/*.java' - googleJavaFormat('1.8').aosp().reflowLongStrings() - } -} - -dependencies { - - // Conversations 3.0 dependencies - - implementation project(':libs:annotation') - annotationProcessor project(':libs:annotation-processor') - - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.8' - - implementation "androidx.appcompat:appcompat:$rootProject.ext.appcompatVersion" - - implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.ext.lifecycleVersion" - - implementation "androidx.room:room-runtime:$room_version" - annotationProcessor "androidx.room:room-compiler:$room_version" - implementation "androidx.room:room-guava:$room_version" - - implementation "androidx.navigation:navigation-fragment:$rootProject.ext.navVersion" - implementation "androidx.navigation:navigation-ui:$rootProject.ext.navVersion" - - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - - - implementation "androidx.security:security-crypto:1.0.0" - - - implementation 'org.slf4j:slf4j-api:1.7.36' - implementation 'com.github.tony19:logback-android:2.0.1' - - testImplementation 'junit:junit:4.13.2' - testImplementation 'org.robolectric:robolectric:4.9' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test:runner:1.5.2' - - - // legacy dependencies. Ideally everything below should be carefully reviewed and eventually moved up - - - implementation 'androidx.viewpager:viewpager:1.0.0' - - playstoreImplementation('com.google.firebase:firebase-messaging:23.1.1') { - exclude group: 'com.google.firebase', module: 'firebase-core' - exclude group: 'com.google.firebase', module: 'firebase-analytics' - exclude group: 'com.google.firebase', module: 'firebase-measurement-connector' - } - conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2") - quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1' - implementation 'org.sufficientlysecure:openpgp-api:10.0' - implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' - implementation 'androidx.exifinterface:exifinterface:1.3.6' - implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' - implementation 'com.google.android.material:material:1.8.0' - - implementation "androidx.emoji2:emoji2:1.2.0" - freeImplementation "androidx.emoji2:emoji2-bundled:1.2.0" - - implementation 'org.bouncycastle:bcmail-jdk15on:1.64' - //zxing stopped supporting Java 7 so we have to stick with 3.3.3 - //https://github.com/zxing/zxing/issues/1170 - implementation 'com.google.zxing:core:3.3.3' - implementation 'de.measite.minidns:minidns-hla:0.2.4' - implementation 'me.leolin:ShortcutBadger:1.1.22@aar' - implementation 'org.whispersystems:signal-protocol-java:2.6.2' - implementation 'com.makeramen:roundedimageview:2.3.0' - implementation "com.wefika:flowlayout:0.4.1" - //noinspection GradleDependency - implementation 'com.otaliastudios:transcoder:0.9.1' - - implementation 'org.jxmpp:jxmpp-jid:1.0.3' - implementation 'org.osmdroid:osmdroid-android:6.1.11' - implementation 'org.hsluv:hsluv:0.2' - implementation 'org.conscrypt:conscrypt-android:2.5.2' - implementation 'me.drakeet.support:toastcompat:1.1.0' - implementation "com.leinardi.android:speed-dial:3.2.0" - - implementation "com.squareup.retrofit2:retrofit:2.9.0" - implementation "com.squareup.retrofit2:converter-gson:2.9.0" - implementation "com.squareup.okhttp3:okhttp:4.10.0" - - implementation 'com.google.guava:guava:31.1-android' - quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.12.49' - implementation 'im.conversations.webrtc:webrtc-android:104.0.0' -} - -ext { - preDexEnabled = System.getProperty("pre-dex", "true") - abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4] -} - -android { - namespace 'eu.siacs.conversations' - compileSdkVersion 33 - - defaultConfig { - minSdkVersion 23 - targetSdkVersion 33 - versionCode 1 - versionName "3.0.0-alpha" - archivesBaseName += "-$versionName" - applicationId "im.conversations.android" - resValue "string", "applicationId", applicationId - def appName = "Conversations" - resValue "string", "app_name", appName - buildConfigField "String", "APP_NAME", "\"$appName\"" - - javaCompileOptions { - annotationProcessorOptions { - arguments += ["room.schemaLocation": "$projectDir/schemas".toString()] - } - } - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - testInstrumentationRunnerArguments clearPackageData: 'true' - - } - - testOptions { - unitTests { - includeAndroidResources = false - } - } - - splits { - abi { - universalApk true - enable true - } - } - - configurations { - implementation.exclude group: 'org.jetbrains' , module:'annotations' - } - - dataBinding { - enabled true - } - - compileOptions { - coreLibraryDesugaringEnabled true - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - - - flavorDimensions("mode", "distribution") - - productFlavors { - - quicksy { - dimension "mode" - applicationId = "im.quicksy.client" - resValue "string", "applicationId", applicationId - - def appName = "Quicksy" - resValue "string", "app_name", appName - buildConfigField "String", "APP_NAME", "\"$appName\"" - } - - conversations { - dimension "mode" - } - - playstore { - dimension "distribution" - versionNameSuffix "+playstore" - } - free { - dimension "distribution" - versionNameSuffix "+free" - } - } - - sourceSets { - quicksyFree { - java { - srcDir 'src/quicksyFree/java' - } - } - quicksyPlaystore { - java { - srcDir 'src/quicksyPlaystore/java' - } - res { - srcDir 'src/quicksyPlaystore/res' - } - } - conversationsFree { - java { - srcDir 'src/conversationsFree/java' - } - } - conversationsPlaystore { - java { - srcDir 'src/conversationsPlaystore/java' - } - res { - srcDir 'src/conversationsPlaystore/res' - } - } - } - - buildTypes { - release { - shrinkResources true - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - debug { - //useProguard false - //shrinkResources true - //minifyEnabled true - //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - - - if (new File("signing.properties").exists()) { - Properties props = new Properties() - props.load(new FileInputStream(file("signing.properties"))) - - signingConfigs { - release { - storeFile file(props['keystore']) - storePassword props['keystore.password'] - keyAlias props['keystore.alias'] - keyPassword props['keystore.password'] - } - } - buildTypes.release.signingConfig = signingConfigs.release - } - - - subprojects { - - afterEvaluate { - if (getPlugins().hasPlugin('android') || - getPlugins().hasPlugin('android-library')) { - - configure(android.lintOptions) { - disable 'AndroidGradlePluginVersion', 'MissingTranslation' - } - } - - } - } - packagingOptions { - resources { - excludes += ['META-INF/BCKEY.DSA', 'META-INF/BCKEY.SF'] - } - } - lint { - disable 'MissingTranslation', 'InvalidPackage', 'AppCompatResource' - } - - android.applicationVariants.all { variant -> - variant.outputs.each { output -> - def baseAbiVersionCode = project.ext.abiCodes.get(output.getFilter(com.android.build.OutputFile.ABI)) - if (baseAbiVersionCode != null) { - output.versionCodeOverride = (100 * project.android.defaultConfig.versionCode) + baseAbiVersionCode - } else { - output.versionCodeOverride = 100 * project.android.defaultConfig.versionCode - } - } - +allprojects { + repositories { + google() + mavenCentral() } -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 431e485f2..a03b35489 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -android.enableJetifier=true -org.gradle.jvmargs=-Xmx4096m +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true diff --git a/libs/annotation-processor/build.gradle b/libs/annotation-processor/build.gradle deleted file mode 100644 index 3bad25d2b..000000000 --- a/libs/annotation-processor/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id 'java-library' -} - -repositories { - google() - mavenCentral() -} - -java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 -} -dependencies { - - implementation project(':libs:annotation') - - annotationProcessor 'com.google.auto.service:auto-service:1.0-rc5' - compileOnly 'com.google.auto.service:auto-service:1.0-rc5' - -} \ No newline at end of file diff --git a/libs/annotation/build.gradle b/libs/annotation/build.gradle deleted file mode 100644 index e493c42ff..000000000 --- a/libs/annotation/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -plugins { - id 'java-library' -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_7 - targetCompatibility = JavaVersion.VERSION_1_7 -} \ No newline at end of file diff --git a/proguard-rules.pro b/proguard-rules.pro deleted file mode 100644 index b9bab8865..000000000 --- a/proguard-rules.pro +++ /dev/null @@ -1,74 +0,0 @@ --dontobfuscate - --keep class eu.siacs.conversations.** - --keep class org.whispersystems.** - --keep class com.kyleduo.switchbutton.Configuration - --keep class com.soundcloud.android.crop.** - --keep class com.google.android.gms.** - --keep class org.openintents.openpgp.* --keep class org.webrtc.** { *; } - -# Logger --keep class org.slf4j.** {*;} --keep class ch.qos.** {*;} - --dontwarn javax.mail.internet.MimeMessage --dontwarn javax.mail.internet.MimeBodyPart --dontwarn javax.mail.internet.SharedInputStream --dontwarn javax.activation.DataContentHandler --dontwarn org.bouncycastle.mail.** --dontwarn org.bouncycastle.x509.util.LDAPStoreHelper --dontwarn org.bouncycastle.jce.provider.X509LDAPCertStoreSpi --dontwarn org.bouncycastle.cert.dane.** --dontwarn rocks.xmpp.addr.** --dontwarn com.google.firebase.analytics.connector.AnalyticsConnector --dontwarn java.lang.** --dontwarn javax.lang.** - --dontwarn com.android.org.conscrypt.SSLParametersImpl --dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl --dontwarn org.bouncycastle.jsse.BCSSLParameters --dontwarn org.bouncycastle.jsse.BCSSLSocket --dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider --dontwarn org.openjsse.javax.net.ssl.SSLParameters --dontwarn org.openjsse.javax.net.ssl.SSLSocket --dontwarn org.openjsse.net.ssl.OpenJSSE - --keepclassmembers class eu.siacs.conversations.http.services.** { - !transient ; -} - -# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and -# EnclosingMethod is required to use InnerClasses. --keepattributes Signature, InnerClasses, EnclosingMethod - -# Retrofit does reflection on method and parameter annotations. --keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations - -# Retain service method parameters when optimizing. --keepclassmembers,allowshrinking,allowobfuscation interface * { - @retrofit2.http.* ; -} - -# Ignore annotation used for build tooling. --dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement - -# Ignore JSR 305 annotations for embedding nullability information. --dontwarn javax.annotation.** - -# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. --dontwarn kotlin.Unit - -# Top-level functions that can only be used by Kotlin. --dontwarn retrofit2.KotlinExtensions --dontwarn retrofit2.KotlinExtensions$* - -# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy -# and replaces all potential values with null. Explicitly keeping the interfaces prevents this. --if interface * { @retrofit2.http.* ; } --keep,allowobfuscation interface <1> diff --git a/settings.gradle b/settings.gradle index a08420a89..c9722936c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,4 @@ -include ':libs:annotation' -include ':libs:annotation-processor' -rootProject.name = 'Conversations' +rootProject.name = "Conversations" +include ':app' +include ':annotation' +include ':annotation-processor' diff --git a/src/conversations/AndroidManifest.xml b/src/conversations/AndroidManifest.xml deleted file mode 100644 index c79e4e265..000000000 --- a/src/conversations/AndroidManifest.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java b/src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java deleted file mode 100644 index 65b6804f9..000000000 --- a/src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java +++ /dev/null @@ -1,50 +0,0 @@ -package eu.siacs.conversations.entities; - -import com.google.common.base.Preconditions; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonSyntaxException; -import com.google.gson.annotations.SerializedName; - -import eu.siacs.conversations.xmpp.Jid; - -public class AccountConfiguration { - - private static final Gson GSON = new GsonBuilder().create(); - - public Protocol protocol; - public String address; - public String password; - - public Jid getJid() { - return Jid.ofEscaped(address); - } - - public static AccountConfiguration parse(final String input) { - final AccountConfiguration c; - try { - c = GSON.fromJson(input, AccountConfiguration.class); - } catch (JsonSyntaxException e) { - throw new IllegalArgumentException("Not a valid JSON string", e); - } - Preconditions.checkArgument( - c.protocol == Protocol.XMPP, - "Protocol must be XMPP" - ); - Preconditions.checkArgument( - c.address != null && c.getJid().isBareJid() && !c.getJid().isDomainJid(), - "Invalid XMPP address" - ); - Preconditions.checkArgument( - c.password != null && c.password.length() > 0, - "No password specified" - ); - return c; - } - - public enum Protocol { - @SerializedName("xmpp") XMPP, - } - -} - diff --git a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java b/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java deleted file mode 100644 index c118d7375..000000000 --- a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java +++ /dev/null @@ -1,394 +0,0 @@ -package eu.siacs.conversations.services; - -import static eu.siacs.conversations.utils.Compatibility.s; - -import android.app.Notification; -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.app.Service; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.net.Uri; -import android.os.Binder; -import android.os.IBinder; -import android.provider.OpenableColumns; -import android.util.Log; - -import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationManagerCompat; - -import com.google.common.base.Charsets; -import com.google.common.base.Stopwatch; -import com.google.common.io.CountingInputStream; - -import org.bouncycastle.crypto.engines.AESEngine; -import org.bouncycastle.crypto.io.CipherInputStream; -import org.bouncycastle.crypto.modes.AEADBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.crypto.params.AEADParameters; -import org.bouncycastle.crypto.params.KeyParameter; - -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.WeakHashMap; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.zip.GZIPInputStream; -import java.util.zip.ZipException; - -import javax.crypto.BadPaddingException; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.persistance.DatabaseBackend; -import eu.siacs.conversations.persistance.FileBackend; -import eu.siacs.conversations.ui.ManageAccountActivity; -import eu.siacs.conversations.utils.BackupFileHeader; -import eu.siacs.conversations.utils.SerialSingleThreadExecutor; -import eu.siacs.conversations.xmpp.Jid; - -public class ImportBackupService extends Service { - - private static final int NOTIFICATION_ID = 21; - private static final AtomicBoolean running = new AtomicBoolean(false); - private final ImportBackupServiceBinder binder = new ImportBackupServiceBinder(); - private final SerialSingleThreadExecutor executor = new SerialSingleThreadExecutor(getClass().getSimpleName()); - private final Set mOnBackupProcessedListeners = Collections.newSetFromMap(new WeakHashMap<>()); - private DatabaseBackend mDatabaseBackend; - private NotificationManager notificationManager; - - private static int count(String input, char c) { - int count = 0; - for (char aChar : input.toCharArray()) { - if (aChar == c) { - ++count; - } - } - return count; - } - - @Override - public void onCreate() { - mDatabaseBackend = DatabaseBackend.getInstance(getBaseContext()); - notificationManager = (android.app.NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - if (intent == null) { - return START_NOT_STICKY; - } - final String password = intent.getStringExtra("password"); - final Uri data = intent.getData(); - final Uri uri; - if (data == null) { - final String file = intent.getStringExtra("file"); - uri = file == null ? null : Uri.fromFile(new File(file)); - } else { - uri = data; - } - - if (password == null || password.isEmpty() || uri == null) { - return START_NOT_STICKY; - } - if (running.compareAndSet(false, true)) { - executor.execute(() -> { - startForegroundService(); - final boolean success = importBackup(uri, password); - stopForeground(true); - running.set(false); - if (success) { - notifySuccess(); - } - stopSelf(); - }); - } else { - Log.d(Config.LOGTAG, "backup already running"); - } - return START_NOT_STICKY; - } - - public boolean getLoadingState() { - return running.get(); - } - - public void loadBackupFiles(final OnBackupFilesLoaded onBackupFilesLoaded) { - executor.execute(() -> { - final List accounts = mDatabaseBackend.getAccountJids(false); - final ArrayList backupFiles = new ArrayList<>(); - final Set apps = new HashSet<>(Arrays.asList("Conversations", "Quicksy", getString(R.string.app_name))); - final List directories = new ArrayList<>(); - for (final String app : apps) { - directories.add(FileBackend.getLegacyBackupDirectory(app)); - } - directories.add(FileBackend.getBackupDirectory(this)); - for (final File directory : directories) { - if (!directory.exists() || !directory.isDirectory()) { - Log.d(Config.LOGTAG, "directory not found: " + directory.getAbsolutePath()); - continue; - } - final File[] files = directory.listFiles(); - if (files == null) { - continue; - } - for (final File file : files) { - if (file.isFile() && file.getName().endsWith(".ceb")) { - try { - final BackupFile backupFile = BackupFile.read(file); - if (accounts.contains(backupFile.getHeader().getJid())) { - Log.d(Config.LOGTAG, "skipping backup for " + backupFile.getHeader().getJid()); - } else { - backupFiles.add(backupFile); - } - } catch (IOException | IllegalArgumentException e) { - Log.d(Config.LOGTAG, "unable to read backup file ", e); - } - } - } - } - Collections.sort(backupFiles, (a, b) -> a.header.getJid().toString().compareTo(b.header.getJid().toString())); - onBackupFilesLoaded.onBackupFilesLoaded(backupFiles); - }); - } - - private void startForegroundService() { - startForeground(NOTIFICATION_ID, createImportBackupNotification(1, 0)); - } - - private void updateImportBackupNotification(final long total, final long current) { - final int max; - final int progress; - if (total == 0) { - max = 1; - progress = 0; - } else { - max = 100; - progress = (int) (current * 100 / total); - } - final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); - try { - notificationManager.notify(NOTIFICATION_ID, createImportBackupNotification(max, progress)); - } catch (final RuntimeException e) { - Log.d(Config.LOGTAG, "unable to make notification", e); - } - } - - private Notification createImportBackupNotification(final int max, final int progress) { - NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getBaseContext(), "backup"); - mBuilder.setContentTitle(getString(R.string.restoring_backup)) - .setSmallIcon(R.drawable.ic_unarchive_white_24dp) - .setProgress(max, progress, max == 1 && progress == 0); - return mBuilder.build(); - } - - private boolean importBackup(final Uri uri, final String password) { - Log.d(Config.LOGTAG, "importing backup from " + uri); - final Stopwatch stopwatch = Stopwatch.createStarted(); - try { - final SQLiteDatabase db = mDatabaseBackend.getWritableDatabase(); - final InputStream inputStream; - final String path = uri.getPath(); - final long fileSize; - if ("file".equals(uri.getScheme()) && path != null) { - final File file = new File(path); - inputStream = new FileInputStream(file); - fileSize = file.length(); - } else { - final Cursor returnCursor = getContentResolver().query(uri, null, null, null, null); - if (returnCursor == null) { - fileSize = 0; - } else { - returnCursor.moveToFirst(); - fileSize = returnCursor.getLong(returnCursor.getColumnIndex(OpenableColumns.SIZE)); - returnCursor.close(); - } - inputStream = getContentResolver().openInputStream(uri); - } - if (inputStream == null) { - synchronized (mOnBackupProcessedListeners) { - for (final OnBackupProcessed l : mOnBackupProcessedListeners) { - l.onBackupRestoreFailed(); - } - } - return false; - } - final CountingInputStream countingInputStream = new CountingInputStream(inputStream); - final DataInputStream dataInputStream = new DataInputStream(countingInputStream); - final BackupFileHeader backupFileHeader = BackupFileHeader.read(dataInputStream); - Log.d(Config.LOGTAG, backupFileHeader.toString()); - - if (mDatabaseBackend.getAccountJids(false).contains(backupFileHeader.getJid())) { - synchronized (mOnBackupProcessedListeners) { - for (OnBackupProcessed l : mOnBackupProcessedListeners) { - l.onAccountAlreadySetup(); - } - } - return false; - } - - final byte[] key = ExportBackupService.getKey(password, backupFileHeader.getSalt()); - - final AEADBlockCipher cipher = new GCMBlockCipher(new AESEngine()); - cipher.init(false, new AEADParameters(new KeyParameter(key), 128, backupFileHeader.getIv())); - final CipherInputStream cipherInputStream = new CipherInputStream(countingInputStream, cipher); - - final GZIPInputStream gzipInputStream = new GZIPInputStream(cipherInputStream); - final BufferedReader reader = new BufferedReader(new InputStreamReader(gzipInputStream, Charsets.UTF_8)); - db.beginTransaction(); - String line; - StringBuilder multiLineQuery = null; - while ((line = reader.readLine()) != null) { - int count = count(line, '\''); - if (multiLineQuery != null) { - multiLineQuery.append('\n'); - multiLineQuery.append(line); - if (count % 2 == 1) { - db.execSQL(multiLineQuery.toString()); - multiLineQuery = null; - updateImportBackupNotification(fileSize, countingInputStream.getCount()); - } - } else { - if (count % 2 == 0) { - db.execSQL(line); - updateImportBackupNotification(fileSize, countingInputStream.getCount()); - } else { - multiLineQuery = new StringBuilder(line); - } - } - } - db.setTransactionSuccessful(); - db.endTransaction(); - final Jid jid = backupFileHeader.getJid(); - final Cursor countCursor = db.rawQuery("select count(messages.uuid) from messages join conversations on conversations.uuid=messages.conversationUuid join accounts on conversations.accountUuid=accounts.uuid where accounts.username=? and accounts.server=?", new String[]{jid.getEscapedLocal(), jid.getDomain().toEscapedString()}); - countCursor.moveToFirst(); - final int count = countCursor.getInt(0); - Log.d(Config.LOGTAG, String.format("restored %d messages in %s", count, stopwatch.stop().toString())); - countCursor.close(); - stopBackgroundService(); - synchronized (mOnBackupProcessedListeners) { - for (OnBackupProcessed l : mOnBackupProcessedListeners) { - l.onBackupRestored(); - } - } - return true; - } catch (final Exception e) { - final Throwable throwable = e.getCause(); - final boolean reasonWasCrypto = throwable instanceof BadPaddingException || e instanceof ZipException; - synchronized (mOnBackupProcessedListeners) { - for (OnBackupProcessed l : mOnBackupProcessedListeners) { - if (reasonWasCrypto) { - l.onBackupDecryptionFailed(); - } else { - l.onBackupRestoreFailed(); - } - } - } - Log.d(Config.LOGTAG, "error restoring backup " + uri, e); - return false; - } - } - - private void notifySuccess() { - NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getBaseContext(), "backup"); - mBuilder.setContentTitle(getString(R.string.notification_restored_backup_title)) - .setContentText(getString(R.string.notification_restored_backup_subtitle)) - .setAutoCancel(true) - .setContentIntent(PendingIntent.getActivity(this, 145, new Intent(this, ManageAccountActivity.class), s() - ? PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT - : PendingIntent.FLAG_UPDATE_CURRENT)) - .setSmallIcon(R.drawable.ic_unarchive_white_24dp); - notificationManager.notify(NOTIFICATION_ID, mBuilder.build()); - } - - private void stopBackgroundService() { - Intent intent = new Intent(this, XmppConnectionService.class); - stopService(intent); - } - - public void removeOnBackupProcessedListener(OnBackupProcessed listener) { - synchronized (mOnBackupProcessedListeners) { - mOnBackupProcessedListeners.remove(listener); - } - } - - public void addOnBackupProcessedListener(OnBackupProcessed listener) { - synchronized (mOnBackupProcessedListeners) { - mOnBackupProcessedListeners.add(listener); - } - } - - @Override - public IBinder onBind(Intent intent) { - return this.binder; - } - - public interface OnBackupFilesLoaded { - void onBackupFilesLoaded(List files); - } - - public interface OnBackupProcessed { - void onBackupRestored(); - - void onBackupDecryptionFailed(); - - void onBackupRestoreFailed(); - - void onAccountAlreadySetup(); - } - - public static class BackupFile { - private final Uri uri; - private final BackupFileHeader header; - - private BackupFile(Uri uri, BackupFileHeader header) { - this.uri = uri; - this.header = header; - } - - private static BackupFile read(File file) throws IOException { - final FileInputStream fileInputStream = new FileInputStream(file); - final DataInputStream dataInputStream = new DataInputStream(fileInputStream); - BackupFileHeader backupFileHeader = BackupFileHeader.read(dataInputStream); - fileInputStream.close(); - return new BackupFile(Uri.fromFile(file), backupFileHeader); - } - - public static BackupFile read(final Context context, final Uri uri) throws IOException { - final InputStream inputStream = context.getContentResolver().openInputStream(uri); - if (inputStream == null) { - throw new FileNotFoundException(); - } - final DataInputStream dataInputStream = new DataInputStream(inputStream); - BackupFileHeader backupFileHeader = BackupFileHeader.read(dataInputStream); - inputStream.close(); - return new BackupFile(uri, backupFileHeader); - } - - public BackupFileHeader getHeader() { - return header; - } - - public Uri getUri() { - return uri; - } - } - - public class ImportBackupServiceBinder extends Binder { - public ImportBackupService getService() { - return ImportBackupService.this; - } - } -} \ No newline at end of file diff --git a/src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java b/src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java deleted file mode 100644 index b2a0d17f4..000000000 --- a/src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java +++ /dev/null @@ -1,38 +0,0 @@ -package eu.siacs.conversations.services; - -import android.content.Intent; -import android.util.Log; - -import eu.siacs.conversations.Config; - -public class QuickConversationsService extends AbstractQuickConversationsService { - - QuickConversationsService(XmppConnectionService xmppConnectionService) { - super(xmppConnectionService); - } - - @Override - public void considerSync() { - - } - - @Override - public void signalAccountStateChange() { - - } - - @Override - public boolean isSynchronizing() { - return false; - } - - @Override - public void considerSyncBackground(boolean force) { - - } - - @Override - public void handleSmsReceived(Intent intent) { - Log.d(Config.LOGTAG,"ignoring received SMS"); - } -} \ No newline at end of file diff --git a/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java b/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java deleted file mode 100644 index fea92401b..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java +++ /dev/null @@ -1,151 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.app.Activity; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.os.Bundle; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.Toast; - -import androidx.databinding.DataBindingUtil; - -import com.google.common.base.Strings; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityEasyInviteBinding; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.BarcodeProvider; -import eu.siacs.conversations.utils.EasyOnboardingInvite; -import eu.siacs.conversations.xmpp.Jid; - -public class EasyOnboardingInviteActivity extends XmppActivity implements EasyOnboardingInvite.OnInviteRequested { - - private ActivityEasyInviteBinding binding; - - private EasyOnboardingInvite easyOnboardingInvite; - - - @Override - public void onCreate(final Bundle bundle) { - super.onCreate(bundle); - this.binding = DataBindingUtil.setContentView(this, R.layout.activity_easy_invite); - setSupportActionBar(binding.toolbar); - configureActionBar(getSupportActionBar(), true); - this.binding.shareButton.setOnClickListener(v -> share()); - if (bundle != null && bundle.containsKey("invite")) { - this.easyOnboardingInvite = bundle.getParcelable("invite"); - if (this.easyOnboardingInvite != null) { - showInvite(this.easyOnboardingInvite); - return; - } - } - this.showLoading(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.easy_onboarding_invite, menu); - final MenuItem share = menu.findItem(R.id.action_share); - share.setVisible(easyOnboardingInvite != null); - return super.onCreateOptionsMenu(menu); - } - - public boolean onOptionsItemSelected(MenuItem menuItem) { - if (menuItem.getItemId() == R.id.action_share) { - share(); - return true; - } else { - return super.onOptionsItemSelected(menuItem); - } - } - - private void share() { - final String shareText = getString( - R.string.easy_invite_share_text, - easyOnboardingInvite.getDomain(), - easyOnboardingInvite.getShareableLink() - ); - final Intent sendIntent = new Intent(); - sendIntent.setAction(Intent.ACTION_SEND); - sendIntent.putExtra(Intent.EXTRA_TEXT, shareText); - sendIntent.setType("text/plain"); - startActivity(Intent.createChooser(sendIntent, getString(R.string.share_invite_with))); - } - - @Override - protected void refreshUiReal() { - invalidateOptionsMenu(); - if (easyOnboardingInvite != null) { - showInvite(easyOnboardingInvite); - } else { - showLoading(); - } - } - - private void showLoading() { - this.binding.inProgress.setVisibility(View.VISIBLE); - this.binding.invite.setVisibility(View.GONE); - } - - private void showInvite(final EasyOnboardingInvite invite) { - this.binding.inProgress.setVisibility(View.GONE); - this.binding.invite.setVisibility(View.VISIBLE); - this.binding.tapToShare.setText(getString(R.string.tap_share_button_send_invite, invite.getDomain())); - final Point size = new Point(); - getWindowManager().getDefaultDisplay().getSize(size); - final int width = Math.min(size.x, size.y); - final Bitmap bitmap = BarcodeProvider.create2dBarcodeBitmap(invite.getShareableLink(), width); - binding.qrCode.setImageBitmap(bitmap); - } - - @Override - public void onSaveInstanceState(Bundle bundle) { - super.onSaveInstanceState(bundle); - if (easyOnboardingInvite != null) { - bundle.putParcelable("invite", easyOnboardingInvite); - } - } - - @Override - void onBackendConnected() { - if (easyOnboardingInvite != null) { - return; - } - final Intent launchIntent = getIntent(); - final String accountExtra = launchIntent.getStringExtra(EXTRA_ACCOUNT); - final Jid jid = accountExtra == null ? null : Jid.ofEscaped(accountExtra); - if (jid == null) { - return; - } - final Account account = xmppConnectionService.findAccountByJid(jid); - xmppConnectionService.requestEasyOnboardingInvite(account, this); - } - - public static void launch(final Account account, final Activity context) { - final Intent intent = new Intent(context, EasyOnboardingInviteActivity.class); - intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); - context.startActivity(intent); - } - - @Override - public void inviteRequested(EasyOnboardingInvite invite) { - this.easyOnboardingInvite = invite; - Log.d(Config.LOGTAG, "invite requested"); - refreshUi(); - } - - @Override - public void inviteRequestFailed(final String message) { - runOnUiThread(() -> { - if (!Strings.isNullOrEmpty(message)) { - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); - } - finish(); - }); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java deleted file mode 100644 index 6e4815159..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java +++ /dev/null @@ -1,251 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.ComponentName; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.ServiceConnection; -import android.net.Uri; -import android.os.Bundle; -import android.os.IBinder; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; - -import androidx.appcompat.app.AlertDialog; -import androidx.core.content.ContextCompat; -import androidx.databinding.DataBindingUtil; - -import com.google.android.material.snackbar.Snackbar; - -import java.io.IOException; -import java.util.List; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityImportBackupBinding; -import eu.siacs.conversations.databinding.DialogEnterPasswordBinding; -import eu.siacs.conversations.services.ImportBackupService; -import eu.siacs.conversations.ui.adapter.BackupFileAdapter; -import eu.siacs.conversations.ui.util.SettingsUtils; -import eu.siacs.conversations.utils.ThemeHelper; - -public class ImportBackupActivity extends ActionBarActivity implements ServiceConnection, ImportBackupService.OnBackupFilesLoaded, BackupFileAdapter.OnItemClickedListener, ImportBackupService.OnBackupProcessed { - - private ActivityImportBackupBinding binding; - - private BackupFileAdapter backupFileAdapter; - private ImportBackupService service; - - private boolean mLoadingState = false; - - private int mTheme; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - this.mTheme = ThemeHelper.find(this); - setTheme(this.mTheme); - super.onCreate(savedInstanceState); - binding = DataBindingUtil.setContentView(this, R.layout.activity_import_backup); - setSupportActionBar(binding.toolbar); - setLoadingState(savedInstanceState != null && savedInstanceState.getBoolean("loading_state", false)); - this.backupFileAdapter = new BackupFileAdapter(); - this.binding.list.setAdapter(this.backupFileAdapter); - this.backupFileAdapter.setOnItemClickedListener(this); - } - - @Override - protected void onResume(){ - super.onResume(); - SettingsUtils.applyScreenshotPreventionSetting(this); - } - - @Override - public boolean onCreateOptionsMenu(final Menu menu) { - getMenuInflater().inflate(R.menu.import_backup, menu); - final MenuItem openBackup = menu.findItem(R.id.action_open_backup_file); - openBackup.setVisible(!this.mLoadingState); - return true; - } - - @Override - public void onSaveInstanceState(Bundle bundle) { - bundle.putBoolean("loading_state", this.mLoadingState); - super.onSaveInstanceState(bundle); - } - - @Override - public void onStart() { - super.onStart(); - final int theme = ThemeHelper.find(this); - if (this.mTheme != theme) { - recreate(); - } else { - bindService(new Intent(this, ImportBackupService.class), this, Context.BIND_AUTO_CREATE); - } - final Intent intent = getIntent(); - if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction()) && !this.mLoadingState) { - Uri uri = intent.getData(); - if (uri != null) { - openBackupFileFromUri(uri, true); - } - } - } - - @Override - public void onStop() { - super.onStop(); - if (this.service != null) { - this.service.removeOnBackupProcessedListener(this); - } - unbindService(this); - } - - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - ImportBackupService.ImportBackupServiceBinder binder = (ImportBackupService.ImportBackupServiceBinder) service; - this.service = binder.getService(); - this.service.addOnBackupProcessedListener(this); - setLoadingState(this.service.getLoadingState()); - this.service.loadBackupFiles(this); - } - - @Override - public void onServiceDisconnected(ComponentName name) { - this.service = null; - } - - @Override - public void onBackupFilesLoaded(final List files) { - runOnUiThread(() -> backupFileAdapter.setFiles(files)); - } - - @Override - public void onClick(final ImportBackupService.BackupFile backupFile) { - showEnterPasswordDialog(backupFile, false); - } - - private void openBackupFileFromUri(final Uri uri, final boolean finishOnCancel) { - try { - final ImportBackupService.BackupFile backupFile = ImportBackupService.BackupFile.read(this, uri); - showEnterPasswordDialog(backupFile, finishOnCancel); - } catch (final IOException | IllegalArgumentException e) { - Log.d(Config.LOGTAG, "unable to open backup file " + uri, e); - Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show(); - } catch (final SecurityException e) { - Snackbar.make(binding.coordinator, R.string.sharing_application_not_grant_permission, Snackbar.LENGTH_LONG).show(); - } - } - - private void showEnterPasswordDialog(final ImportBackupService.BackupFile backupFile, final boolean finishOnCancel) { - final DialogEnterPasswordBinding enterPasswordBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.dialog_enter_password, null, false); - Log.d(Config.LOGTAG, "attempting to import " + backupFile.getUri()); - enterPasswordBinding.explain.setText(getString(R.string.enter_password_to_restore, backupFile.getHeader().getJid().toString())); - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setView(enterPasswordBinding.getRoot()); - builder.setTitle(R.string.enter_password); - builder.setNegativeButton(R.string.cancel, (dialog, which) -> { - if (finishOnCancel) { - finish(); - } - }); - builder.setPositiveButton(R.string.restore, null); - builder.setCancelable(false); - final AlertDialog dialog = builder.create(); - dialog.setOnShowListener((d) -> { - dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(v -> { - final String password = enterPasswordBinding.accountPassword.getEditableText().toString(); - if (password.isEmpty()) { - enterPasswordBinding.accountPasswordLayout.setError(getString(R.string.please_enter_password)); - return; - } - final Uri uri = backupFile.getUri(); - Intent intent = new Intent(this, ImportBackupService.class); - intent.setAction(Intent.ACTION_SEND); - intent.putExtra("password", password); - if ("file".equals(uri.getScheme())) { - intent.putExtra("file", uri.getPath()); - } else { - intent.setData(uri); - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - } - setLoadingState(true); - ContextCompat.startForegroundService(this, intent); - d.dismiss(); - }); - }); - dialog.show(); - } - - private void setLoadingState(final boolean loadingState) { - binding.coordinator.setVisibility(loadingState ? View.GONE : View.VISIBLE); - binding.inProgress.setVisibility(loadingState ? View.VISIBLE : View.GONE); - setTitle(loadingState ? R.string.restoring_backup : R.string.restore_backup); - configureActionBar(getSupportActionBar(), !loadingState); - this.mLoadingState = loadingState; - invalidateOptionsMenu(); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent intent) { - super.onActivityResult(requestCode, resultCode, intent); - if (resultCode == RESULT_OK) { - if (requestCode == 0xbac) { - openBackupFileFromUri(intent.getData(), false); - } - } - } - - @Override - public void onAccountAlreadySetup() { - runOnUiThread(() -> { - setLoadingState(false); - Snackbar.make(binding.coordinator, R.string.account_already_setup, Snackbar.LENGTH_LONG).show(); - }); - } - - @Override - public void onBackupRestored() { - runOnUiThread(() -> { - Intent intent = new Intent(this, ConversationActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - startActivity(intent); - finish(); - }); - } - - @Override - public void onBackupDecryptionFailed() { - runOnUiThread(() -> { - setLoadingState(false); - Snackbar.make(binding.coordinator, R.string.unable_to_decrypt_backup, Snackbar.LENGTH_LONG).show(); - }); - } - - @Override - public void onBackupRestoreFailed() { - runOnUiThread(() -> { - setLoadingState(false); - Snackbar.make(binding.coordinator, R.string.unable_to_restore_backup, Snackbar.LENGTH_LONG).show(); - }); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.action_open_backup_file) { - openBackupFile(); - return true; - } - return super.onOptionsItemSelected(item); - } - - private void openBackupFile() { - final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); - intent.setType("*/*"); - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false); - intent.addCategory(Intent.CATEGORY_OPENABLE); - startActivityForResult(Intent.createChooser(intent, getString(R.string.open_backup)), 0xbac); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java b/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java deleted file mode 100644 index 38761befd..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java +++ /dev/null @@ -1,162 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.os.Bundle; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.View; -import android.widget.Toast; - -import androidx.databinding.DataBindingUtil; - -import java.security.SecureRandom; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.MagicCreateBinding; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.utils.CryptoHelper; -import eu.siacs.conversations.utils.InstallReferrerUtils; -import eu.siacs.conversations.xmpp.Jid; - -public class MagicCreateActivity extends XmppActivity implements TextWatcher { - - public static final String EXTRA_DOMAIN = "domain"; - public static final String EXTRA_PRE_AUTH = "pre_auth"; - public static final String EXTRA_USERNAME = "username"; - - private MagicCreateBinding binding; - private String domain; - private String username; - private String preAuth; - - @Override - protected void refreshUiReal() { - - } - - @Override - void onBackendConnected() { - - } - - @Override - public void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - final Intent data = getIntent(); - this.domain = data == null ? null : data.getStringExtra(EXTRA_DOMAIN); - this.preAuth = data == null ? null : data.getStringExtra(EXTRA_PRE_AUTH); - this.username = data == null ? null : data.getStringExtra(EXTRA_USERNAME); - if (getResources().getBoolean(R.bool.portrait_only)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - super.onCreate(savedInstanceState); - this.binding = DataBindingUtil.setContentView(this, R.layout.magic_create); - setSupportActionBar(this.binding.toolbar); - configureActionBar(getSupportActionBar(), this.domain == null); - if (username != null && domain != null) { - binding.title.setText(R.string.your_server_invitation); - binding.instructions.setText(getString(R.string.magic_create_text_fixed, domain)); - binding.username.setEnabled(false); - binding.username.setText(this.username); - updateFullJidInformation(this.username); - } else if (domain != null) { - binding.instructions.setText(getString(R.string.magic_create_text_on_x, domain)); - } - binding.createAccount.setOnClickListener(v -> { - try { - final String username = binding.username.getText().toString(); - final Jid jid; - final boolean fixedUsername; - if (this.domain != null && this.username != null) { - fixedUsername = true; - jid = Jid.ofLocalAndDomainEscaped(this.username, this.domain); - } else if (this.domain != null) { - fixedUsername = false; - jid = Jid.ofLocalAndDomainEscaped(username, this.domain); - } else { - fixedUsername = false; - jid = Jid.ofLocalAndDomainEscaped(username, Config.MAGIC_CREATE_DOMAIN); - } - if (!jid.getEscapedLocal().equals(jid.getLocal()) || (this.username == null && username.length() < 3)) { - binding.username.setError(getString(R.string.invalid_username)); - binding.username.requestFocus(); - } else { - binding.username.setError(null); - Account account = xmppConnectionService.findAccountByJid(jid); - if (account == null) { - account = new Account(jid, CryptoHelper.createPassword(new SecureRandom())); - account.setOption(Account.OPTION_REGISTER, true); - account.setOption(Account.OPTION_DISABLED, true); - account.setOption(Account.OPTION_MAGIC_CREATE, true); - account.setOption(Account.OPTION_FIXED_USERNAME, fixedUsername); - if (this.preAuth != null) { - account.setKey(Account.KEY_PRE_AUTH_REGISTRATION_TOKEN, this.preAuth); - } - xmppConnectionService.createAccount(account); - } - Intent intent = new Intent(MagicCreateActivity.this, EditAccountActivity.class); - intent.putExtra("jid", account.getJid().asBareJid().toString()); - intent.putExtra("init", true); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - Toast.makeText(MagicCreateActivity.this, R.string.secure_password_generated, Toast.LENGTH_SHORT).show(); - StartConversationActivity.addInviteUri(intent, getIntent()); - startActivity(intent); - } - } catch (IllegalArgumentException e) { - binding.username.setError(getString(R.string.invalid_username)); - binding.username.requestFocus(); - } - }); - binding.username.addTextChangedListener(this); - } - - @Override - public void onDestroy() { - InstallReferrerUtils.markInstallReferrerExecuted(this); - super.onDestroy(); - } - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(final Editable s) { - updateFullJidInformation(s.toString()); - } - - private void updateFullJidInformation(final String username) { - if (username.trim().isEmpty()) { - binding.fullJid.setVisibility(View.INVISIBLE); - } else { - try { - binding.fullJid.setVisibility(View.VISIBLE); - final Jid jid; - if (this.domain == null) { - jid = Jid.ofLocalAndDomainEscaped(username, Config.MAGIC_CREATE_DOMAIN); - } else { - jid = Jid.ofLocalAndDomainEscaped(username, this.domain); - } - binding.fullJid.setText(getString(R.string.your_full_jid_will_be, jid.toEscapedString())); - } catch (IllegalArgumentException e) { - binding.fullJid.setVisibility(View.INVISIBLE); - } - } - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java deleted file mode 100644 index 6aecf4b26..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java +++ /dev/null @@ -1,429 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.os.Bundle; -import android.security.KeyChain; -import android.security.KeyChainAliasCallback; -import android.util.Pair; -import android.view.ContextMenu; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView.AdapterContextMenuInfo; -import android.widget.ListView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AlertDialog; - -import org.openintents.openpgp.util.OpenPgpApi; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.services.XmppConnectionService.OnAccountUpdate; -import eu.siacs.conversations.ui.adapter.AccountAdapter; -import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; -import eu.siacs.conversations.xmpp.Jid; -import eu.siacs.conversations.xmpp.XmppConnection; - -import static eu.siacs.conversations.utils.PermissionUtils.allGranted; -import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; - -public class ManageAccountActivity extends XmppActivity implements OnAccountUpdate, KeyChainAliasCallback, XmppConnectionService.OnAccountCreated, AccountAdapter.OnTglAccountState { - - private final String STATE_SELECTED_ACCOUNT = "selected_account"; - - private static final int REQUEST_IMPORT_BACKUP = 0x63fb; - - protected Account selectedAccount = null; - protected Jid selectedAccountJid = null; - - protected final List accountList = new ArrayList<>(); - protected ListView accountListView; - protected AccountAdapter mAccountAdapter; - protected AtomicBoolean mInvokedAddAccount = new AtomicBoolean(false); - - protected Pair mPostponedActivityResult = null; - - @Override - public void onAccountUpdate() { - refreshUi(); - } - - @Override - protected void refreshUiReal() { - synchronized (this.accountList) { - accountList.clear(); - accountList.addAll(xmppConnectionService.getAccounts()); - } - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setHomeButtonEnabled(this.accountList.size() > 0); - actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0); - } - invalidateOptionsMenu(); - mAccountAdapter.notifyDataSetChanged(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_manage_accounts); - setSupportActionBar(findViewById(R.id.toolbar)); - configureActionBar(getSupportActionBar()); - if (savedInstanceState != null) { - String jid = savedInstanceState.getString(STATE_SELECTED_ACCOUNT); - if (jid != null) { - try { - this.selectedAccountJid = Jid.ofEscaped(jid); - } catch (IllegalArgumentException e) { - this.selectedAccountJid = null; - } - } - } - - accountListView = findViewById(R.id.account_list); - this.mAccountAdapter = new AccountAdapter(this, accountList); - accountListView.setAdapter(this.mAccountAdapter); - accountListView.setOnItemClickListener((arg0, view, position, arg3) -> switchToAccount(accountList.get(position))); - registerForContextMenu(accountListView); - } - - @Override - protected void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - @Override - public void onSaveInstanceState(final Bundle savedInstanceState) { - if (selectedAccount != null) { - savedInstanceState.putString(STATE_SELECTED_ACCOUNT, selectedAccount.getJid().asBareJid().toEscapedString()); - } - super.onSaveInstanceState(savedInstanceState); - } - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, v, menuInfo); - ManageAccountActivity.this.getMenuInflater().inflate( - R.menu.manageaccounts_context, menu); - AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo; - this.selectedAccount = accountList.get(acmi.position); - if (this.selectedAccount.isEnabled()) { - menu.findItem(R.id.mgmt_account_enable).setVisible(false); - menu.findItem(R.id.mgmt_account_announce_pgp).setVisible(Config.supportOpenPgp()); - } else { - menu.findItem(R.id.mgmt_account_disable).setVisible(false); - menu.findItem(R.id.mgmt_account_announce_pgp).setVisible(false); - menu.findItem(R.id.mgmt_account_publish_avatar).setVisible(false); - } - menu.setHeaderTitle(this.selectedAccount.getJid().asBareJid().toEscapedString()); - } - - @Override - void onBackendConnected() { - if (selectedAccountJid != null) { - this.selectedAccount = xmppConnectionService.findAccountByJid(selectedAccountJid); - } - refreshUiReal(); - if (this.mPostponedActivityResult != null) { - this.onActivityResult(mPostponedActivityResult.first, RESULT_OK, mPostponedActivityResult.second); - } - if (Config.X509_VERIFICATION && this.accountList.size() == 0) { - if (mInvokedAddAccount.compareAndSet(false, true)) { - addAccountFromKey(); - } - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.manageaccounts, menu); - MenuItem enableAll = menu.findItem(R.id.action_enable_all); - MenuItem addAccount = menu.findItem(R.id.action_add_account); - MenuItem addAccountWithCertificate = menu.findItem(R.id.action_add_account_with_cert); - - if (Config.X509_VERIFICATION) { - addAccount.setVisible(false); - addAccountWithCertificate.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - } - - if (!accountsLeftToEnable()) { - enableAll.setVisible(false); - } - MenuItem disableAll = menu.findItem(R.id.action_disable_all); - if (!accountsLeftToDisable()) { - disableAll.setVisible(false); - } - return true; - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.mgmt_account_publish_avatar: - publishAvatar(selectedAccount); - return true; - case R.id.mgmt_account_disable: - disableAccount(selectedAccount); - return true; - case R.id.mgmt_account_enable: - enableAccount(selectedAccount); - return true; - case R.id.mgmt_account_delete: - deleteAccount(selectedAccount); - return true; - case R.id.mgmt_account_announce_pgp: - publishOpenPGPPublicKey(selectedAccount); - return true; - default: - return super.onContextItemSelected(item); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (MenuDoubleTabUtil.shouldIgnoreTap()) { - return false; - } - switch (item.getItemId()) { - case R.id.action_add_account: - startActivity(new Intent(this, EditAccountActivity.class)); - break; - case R.id.action_import_backup: - if (hasStoragePermission(REQUEST_IMPORT_BACKUP)) { - startActivity(new Intent(this, ImportBackupActivity.class)); - } - break; - case R.id.action_disable_all: - disableAllAccounts(); - break; - case R.id.action_enable_all: - enableAllAccounts(); - break; - case R.id.action_add_account_with_cert: - addAccountFromKey(); - break; - default: - break; - } - return super.onOptionsItemSelected(item); - } - - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (grantResults.length > 0) { - if (allGranted(grantResults)) { - switch (requestCode) { - case REQUEST_IMPORT_BACKUP: - startActivity(new Intent(this, ImportBackupActivity.class)); - break; - } - } else { - Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show(); - } - } - if (writeGranted(grantResults, permissions)) { - if (xmppConnectionService != null) { - xmppConnectionService.restartFileObserver(); - } - } - } - - @Override - public boolean onNavigateUp() { - if (xmppConnectionService.getConversations().size() == 0) { - Intent contactsIntent = new Intent(this, - StartConversationActivity.class); - contactsIntent.setFlags( - // if activity exists in stack, pop the stack and go back to it - Intent.FLAG_ACTIVITY_CLEAR_TOP | - // otherwise, make a new task for it - Intent.FLAG_ACTIVITY_NEW_TASK | - // don't use the new activity animation; finish - // animation runs instead - Intent.FLAG_ACTIVITY_NO_ANIMATION); - startActivity(contactsIntent); - finish(); - return true; - } else { - return super.onNavigateUp(); - } - } - - @Override - public void onClickTglAccountState(Account account, boolean enable) { - if (enable) { - enableAccount(account); - } else { - disableAccount(account); - } - } - - private void addAccountFromKey() { - try { - KeyChain.choosePrivateKeyAlias(this, this, null, null, null, -1, null); - } catch (ActivityNotFoundException e) { - Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG).show(); - } - } - - private void publishAvatar(Account account) { - Intent intent = new Intent(getApplicationContext(), - PublishProfilePictureActivity.class); - intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); - startActivity(intent); - } - - private void disableAllAccounts() { - List list = new ArrayList<>(); - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (account.isEnabled()) { - list.add(account); - } - } - } - for (Account account : list) { - disableAccount(account); - } - } - - private boolean accountsLeftToDisable() { - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (account.isEnabled()) { - return true; - } - } - return false; - } - } - - private boolean accountsLeftToEnable() { - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (!account.isEnabled()) { - return true; - } - } - return false; - } - } - - private void enableAllAccounts() { - List list = new ArrayList<>(); - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (!account.isEnabled()) { - list.add(account); - } - } - } - for (Account account : list) { - enableAccount(account); - } - } - - private void disableAccount(Account account) { - account.setOption(Account.OPTION_DISABLED, true); - if (!xmppConnectionService.updateAccount(account)) { - Toast.makeText(this, R.string.unable_to_update_account, Toast.LENGTH_SHORT).show(); - } - } - - private void enableAccount(Account account) { - account.setOption(Account.OPTION_DISABLED, false); - final XmppConnection connection = account.getXmppConnection(); - if (connection != null) { - connection.resetEverything(); - } - if (!xmppConnectionService.updateAccount(account)) { - Toast.makeText(this, R.string.unable_to_update_account, Toast.LENGTH_SHORT).show(); - } - } - - private void publishOpenPGPPublicKey(Account account) { - if (ManageAccountActivity.this.hasPgp()) { - announcePgp(selectedAccount, null, null, onOpenPGPKeyPublished); - } else { - this.showInstallPgpDialog(); - } - } - - private void deleteAccount(final Account account) { - final AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(getString(R.string.mgmt_account_are_you_sure)); - builder.setIconAttribute(android.R.attr.alertDialogIcon); - builder.setMessage(getString(R.string.mgmt_account_delete_confirm_text)); - builder.setPositiveButton(getString(R.string.delete), - (dialog, which) -> { - xmppConnectionService.deleteAccount(account); - selectedAccount = null; - if (xmppConnectionService.getAccounts().size() == 0 && Config.MAGIC_CREATE_DOMAIN != null) { - WelcomeActivity.launch(this); - } - }); - builder.setNegativeButton(getString(R.string.cancel), null); - builder.create().show(); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (xmppConnectionServiceBound) { - if (requestCode == REQUEST_CHOOSE_PGP_ID) { - if (data.getExtras().containsKey(OpenPgpApi.EXTRA_SIGN_KEY_ID)) { - selectedAccount.setPgpSignId(data.getExtras().getLong(OpenPgpApi.EXTRA_SIGN_KEY_ID)); - announcePgp(selectedAccount, null, null, onOpenPGPKeyPublished); - } else { - choosePgpSignId(selectedAccount); - } - } else if (requestCode == REQUEST_ANNOUNCE_PGP) { - announcePgp(selectedAccount, null, data, onOpenPGPKeyPublished); - } - this.mPostponedActivityResult = null; - } else { - this.mPostponedActivityResult = new Pair<>(requestCode, data); - } - } - } - - @Override - public void alias(final String alias) { - if (alias != null) { - xmppConnectionService.createAccountFromKey(alias, this); - } - } - - @Override - public void onAccountCreated(final Account account) { - final Intent intent = new Intent(this, EditAccountActivity.class); - intent.putExtra("jid", account.getJid().asBareJid().toString()); - intent.putExtra("init", true); - startActivity(intent); - } - - @Override - public void informUser(final int r) { - runOnUiThread(() -> Toast.makeText(ManageAccountActivity.this, r, Toast.LENGTH_LONG).show()); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java b/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java deleted file mode 100644 index 06320d33d..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java +++ /dev/null @@ -1,104 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.os.Bundle; -import android.view.MenuItem; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.databinding.DataBindingUtil; - -import java.util.List; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityPickServerBinding; -import eu.siacs.conversations.entities.Account; - -public class PickServerActivity extends XmppActivity { - - @Override - protected void refreshUiReal() { - - } - - @Override - void onBackendConnected() { - - } - - @Override - public void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - if (item.getItemId() == android.R.id.home) { - startActivity(new Intent(this, WelcomeActivity.class)); - finish(); - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override - public void onBackPressed() { - startActivity(new Intent(this, WelcomeActivity.class)); - super.onBackPressed(); - } - - @Override - public void onNewIntent(Intent intent) { - if (intent != null) { - setIntent(intent); - } - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - if (getResources().getBoolean(R.bool.portrait_only)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - super.onCreate(savedInstanceState); - ActivityPickServerBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_pick_server); - setSupportActionBar(binding.toolbar); - configureActionBar(getSupportActionBar()); - binding.useCim.setOnClickListener(v -> { - final Intent intent = new Intent(this, MagicCreateActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - addInviteUri(intent); - startActivity(intent); - }); - binding.useOwnProvider.setOnClickListener(v -> { - List accounts = xmppConnectionService.getAccounts(); - Intent intent = new Intent(this, EditAccountActivity.class); - intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, true); - if (accounts.size() == 1) { - intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); - intent.putExtra("init", true); - } else if (accounts.size() >= 1) { - intent = new Intent(this, ManageAccountActivity.class); - } - addInviteUri(intent); - startActivity(intent); - }); - - } - - public void addInviteUri(Intent intent) { - StartConversationActivity.addInviteUri(intent, getIntent()); - } - - public static void launch(AppCompatActivity activity) { - Intent intent = new Intent(activity, PickServerActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - activity.startActivity(intent); - activity.overridePendingTransition(0, 0); - } - -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java deleted file mode 100644 index 762dfbb42..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java +++ /dev/null @@ -1,90 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.os.Bundle; -import android.widget.ListView; - -import java.util.ArrayList; -import java.util.List; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.entities.Conversation; -import eu.siacs.conversations.ui.adapter.AccountAdapter; -import eu.siacs.conversations.xmpp.Jid; - -public class ShareViaAccountActivity extends XmppActivity { - public static final String EXTRA_CONTACT = "contact"; - public static final String EXTRA_BODY = "body"; - - protected final List accountList = new ArrayList<>(); - protected ListView accountListView; - protected AccountAdapter mAccountAdapter; - - @Override - protected void refreshUiReal() { - synchronized (this.accountList) { - accountList.clear(); - accountList.addAll(xmppConnectionService.getAccounts()); - } - mAccountAdapter.notifyDataSetChanged(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_manage_accounts); - setSupportActionBar(findViewById(R.id.toolbar)); - configureActionBar(getSupportActionBar()); - accountListView = findViewById(R.id.account_list); - this.mAccountAdapter = new AccountAdapter(this, accountList, false); - accountListView.setAdapter(this.mAccountAdapter); - accountListView.setOnItemClickListener((arg0, view, position, arg3) -> { - final Account account = accountList.get(position); - final String body = getIntent().getStringExtra(EXTRA_BODY); - - try { - final Jid contact = Jid.of(getIntent().getStringExtra(EXTRA_CONTACT)); - final Conversation conversation = xmppConnectionService.findOrCreateConversation( - account, contact, false, false); - switchToConversation(conversation, body); - } catch (IllegalArgumentException e) { - // ignore error - } - - finish(); - }); - } - - @Override - protected void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - @Override - void onBackendConnected() { - final int numAccounts = xmppConnectionService.getAccounts().size(); - - if (numAccounts == 1) { - final String body = getIntent().getStringExtra(EXTRA_BODY); - final Account account = xmppConnectionService.getAccounts().get(0); - - try { - final Jid contact = Jid.of(getIntent().getStringExtra(EXTRA_CONTACT)); - final Conversation conversation = xmppConnectionService.findOrCreateConversation( - account, contact, false, false); - switchToConversation(conversation, body); - } catch (IllegalArgumentException e) { - // ignore error - } - - finish(); - } else { - refreshUiReal(); - } - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java b/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java deleted file mode 100644 index d61c64a9c..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java +++ /dev/null @@ -1,236 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.Manifest; -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.net.Uri; -import android.os.Bundle; -import android.security.KeyChain; -import android.security.KeyChainAliasCallback; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; -import androidx.databinding.DataBindingUtil; - -import java.util.Arrays; -import java.util.List; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityWelcomeBinding; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.utils.Compatibility; -import eu.siacs.conversations.utils.InstallReferrerUtils; -import eu.siacs.conversations.utils.SignupUtils; -import eu.siacs.conversations.utils.XmppUri; -import eu.siacs.conversations.xmpp.Jid; - -import static eu.siacs.conversations.utils.PermissionUtils.allGranted; -import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; - -public class WelcomeActivity extends XmppActivity implements XmppConnectionService.OnAccountCreated, KeyChainAliasCallback { - - private static final int REQUEST_IMPORT_BACKUP = 0x63fb; - - private XmppUri inviteUri; - - public static void launch(AppCompatActivity activity) { - Intent intent = new Intent(activity, WelcomeActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - activity.startActivity(intent); - activity.overridePendingTransition(0, 0); - } - - public void onInstallReferrerDiscovered(final Uri referrer) { - Log.d(Config.LOGTAG, "welcome activity: on install referrer discovered " + referrer); - if ("xmpp".equalsIgnoreCase(referrer.getScheme())) { - final XmppUri xmppUri = new XmppUri(referrer); - runOnUiThread(() -> processXmppUri(xmppUri)); - } else { - Log.i(Config.LOGTAG, "install referrer was not an XMPP uri"); - } - } - - private void processXmppUri(final XmppUri xmppUri) { - if (!xmppUri.isValidJid()) { - return; - } - final String preAuth = xmppUri.getParameter(XmppUri.PARAMETER_PRE_AUTH); - final Jid jid = xmppUri.getJid(); - final Intent intent; - if (xmppUri.isAction(XmppUri.ACTION_REGISTER)) { - intent = SignupUtils.getTokenRegistrationIntent(this, jid, preAuth); - } else if (xmppUri.isAction(XmppUri.ACTION_ROSTER) && "y".equals(xmppUri.getParameter(XmppUri.PARAMETER_IBR))) { - intent = SignupUtils.getTokenRegistrationIntent(this, jid.getDomain(), preAuth); - intent.putExtra(StartConversationActivity.EXTRA_INVITE_URI, xmppUri.toString()); - } else { - intent = null; - } - if (intent != null) { - startActivity(intent); - finish(); - return; - } - this.inviteUri = xmppUri; - } - - @Override - protected void refreshUiReal() { - - } - - @Override - void onBackendConnected() { - - } - - @Override - public void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - new InstallReferrerUtils(this); - } - - @Override - public void onStop() { - super.onStop(); - } - - @Override - public void onNewIntent(final Intent intent) { - super.onNewIntent(intent); - if (intent != null) { - setIntent(intent); - } - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - if (getResources().getBoolean(R.bool.portrait_only)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - super.onCreate(savedInstanceState); - ActivityWelcomeBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_welcome); - setSupportActionBar(binding.toolbar); - configureActionBar(getSupportActionBar(), false); - binding.registerNewAccount.setOnClickListener(v -> { - final Intent intent = new Intent(this, PickServerActivity.class); - addInviteUri(intent); - startActivity(intent); - }); - binding.useExisting.setOnClickListener(v -> { - final List accounts = xmppConnectionService.getAccounts(); - Intent intent = new Intent(WelcomeActivity.this, EditAccountActivity.class); - intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, false); - if (accounts.size() == 1) { - intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); - intent.putExtra("init", true); - } else if (accounts.size() >= 1) { - intent = new Intent(WelcomeActivity.this, ManageAccountActivity.class); - } - addInviteUri(intent); - startActivity(intent); - }); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.welcome_menu, menu); - final MenuItem scan = menu.findItem(R.id.action_scan_qr_code); - scan.setVisible(Compatibility.hasFeatureCamera(this)); - return super.onCreateOptionsMenu(menu); - } - - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_import_backup: - if (hasStoragePermission(REQUEST_IMPORT_BACKUP)) { - startActivity(new Intent(this, ImportBackupActivity.class)); - } - break; - case R.id.action_scan_qr_code: - UriHandlerActivity.scan(this, true); - break; - case R.id.action_add_account_with_cert: - addAccountFromKey(); - break; - } - return super.onOptionsItemSelected(item); - } - - private void addAccountFromKey() { - try { - KeyChain.choosePrivateKeyAlias(this, this, null, null, null, -1, null); - } catch (ActivityNotFoundException e) { - Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG).show(); - } - } - - @Override - public void alias(final String alias) { - if (alias != null) { - xmppConnectionService.createAccountFromKey(alias, this); - } - } - - @Override - public void onAccountCreated(final Account account) { - final Intent intent = new Intent(this, EditAccountActivity.class); - intent.putExtra("jid", account.getJid().asBareJid().toEscapedString()); - intent.putExtra("init", true); - addInviteUri(intent); - startActivity(intent); - } - - @Override - public void informUser(final int r) { - runOnUiThread(() -> Toast.makeText(this, r, Toast.LENGTH_LONG).show()); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - UriHandlerActivity.onRequestPermissionResult(this, requestCode, grantResults); - if (grantResults.length > 0) { - if (allGranted(grantResults)) { - switch (requestCode) { - case REQUEST_IMPORT_BACKUP: - startActivity(new Intent(this, ImportBackupActivity.class)); - break; - } - } else if (Arrays.asList(permissions).contains(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show(); - } - } - if (writeGranted(grantResults, permissions)) { - if (xmppConnectionService != null) { - xmppConnectionService.restartFileObserver(); - } - } - } - - public void addInviteUri(Intent to) { - final Intent from = getIntent(); - if (from != null && from.hasExtra(StartConversationActivity.EXTRA_INVITE_URI)) { - final String invite = from.getStringExtra(StartConversationActivity.EXTRA_INVITE_URI); - to.putExtra(StartConversationActivity.EXTRA_INVITE_URI, invite); - } else if (this.inviteUri != null) { - Log.d(Config.LOGTAG, "injecting referrer uri into on-boarding flow"); - to.putExtra(StartConversationActivity.EXTRA_INVITE_URI, this.inviteUri.toString()); - } - } - -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java b/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java deleted file mode 100644 index 9857dcd8a..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java +++ /dev/null @@ -1,170 +0,0 @@ -package eu.siacs.conversations.ui.adapter; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.text.format.DateUtils; -import android.util.DisplayMetrics; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import androidx.annotation.NonNull; -import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.RecyclerView; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.RejectedExecutionException; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.AccountRowBinding; -import eu.siacs.conversations.services.AvatarService; -import eu.siacs.conversations.services.ImportBackupService; -import eu.siacs.conversations.utils.BackupFileHeader; -import eu.siacs.conversations.utils.UIHelper; -import eu.siacs.conversations.xmpp.Jid; - -public class BackupFileAdapter extends RecyclerView.Adapter { - - private OnItemClickedListener listener; - - private final List files = new ArrayList<>(); - - - @NonNull - @Override - public BackupFileViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - return new BackupFileViewHolder(DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()), R.layout.account_row, viewGroup, false)); - } - - @Override - public void onBindViewHolder(@NonNull BackupFileViewHolder backupFileViewHolder, int position) { - final ImportBackupService.BackupFile backupFile = files.get(position); - final BackupFileHeader header = backupFile.getHeader(); - backupFileViewHolder.binding.accountJid.setText(header.getJid().asBareJid().toString()); - backupFileViewHolder.binding.accountStatus.setText(String.format("%s · %s",header.getApp(), DateUtils.formatDateTime(backupFileViewHolder.binding.getRoot().getContext(), header.getTimestamp(), DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR))); - backupFileViewHolder.binding.tglAccountStatus.setVisibility(View.GONE); - backupFileViewHolder.binding.getRoot().setOnClickListener(v -> { - if (listener != null) { - listener.onClick(backupFile); - } - }); - loadAvatar(header.getJid(), backupFileViewHolder.binding.accountImage); - } - - @Override - public int getItemCount() { - return files.size(); - } - - public void setFiles(List files) { - this.files.clear(); - this.files.addAll(files); - notifyDataSetChanged(); - } - - public void setOnItemClickedListener(OnItemClickedListener listener) { - this.listener = listener; - } - - static class BackupFileViewHolder extends RecyclerView.ViewHolder { - private final AccountRowBinding binding; - - BackupFileViewHolder(AccountRowBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - public interface OnItemClickedListener { - void onClick(ImportBackupService.BackupFile backupFile); - } - - static class BitmapWorkerTask extends AsyncTask { - private final WeakReference imageViewReference; - private Jid jid = null; - private final int size; - - BitmapWorkerTask(ImageView imageView) { - imageViewReference = new WeakReference<>(imageView); - DisplayMetrics metrics = imageView.getContext().getResources().getDisplayMetrics(); - this.size = ((int) (48 * metrics.density)); - } - - @Override - protected Bitmap doInBackground(Jid... params) { - this.jid = params[0]; - return AvatarService.get(this.jid, size); - } - - @Override - protected void onPostExecute(Bitmap bitmap) { - if (bitmap != null && !isCancelled()) { - final ImageView imageView = imageViewReference.get(); - if (imageView != null) { - imageView.setImageBitmap(bitmap); - imageView.setBackgroundColor(0x00000000); - } - } - } - } - - private void loadAvatar(Jid jid, ImageView imageView) { - if (cancelPotentialWork(jid, imageView)) { - imageView.setBackgroundColor(UIHelper.getColorForName(jid.asBareJid().toString())); - imageView.setImageDrawable(null); - final BitmapWorkerTask task = new BitmapWorkerTask(imageView); - final AsyncDrawable asyncDrawable = new AsyncDrawable(imageView.getContext().getResources(), null, task); - imageView.setImageDrawable(asyncDrawable); - try { - task.execute(jid); - } catch (final RejectedExecutionException ignored) { - } - } - } - - private static boolean cancelPotentialWork(Jid jid, ImageView imageView) { - final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); - - if (bitmapWorkerTask != null) { - final Jid oldJid = bitmapWorkerTask.jid; - if (oldJid == null || jid != oldJid) { - bitmapWorkerTask.cancel(true); - } else { - return false; - } - } - return true; - } - - private static BitmapWorkerTask getBitmapWorkerTask(ImageView imageView) { - if (imageView != null) { - final Drawable drawable = imageView.getDrawable(); - if (drawable instanceof AsyncDrawable) { - final AsyncDrawable asyncDrawable = (AsyncDrawable) drawable; - return asyncDrawable.getBitmapWorkerTask(); - } - } - return null; - } - - static class AsyncDrawable extends BitmapDrawable { - private final WeakReference bitmapWorkerTaskReference; - - AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { - super(res, bitmap); - bitmapWorkerTaskReference = new WeakReference<>(bitmapWorkerTask); - } - - BitmapWorkerTask getBitmapWorkerTask() { - return bitmapWorkerTaskReference.get(); - } - } - -} \ No newline at end of file diff --git a/src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java b/src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java deleted file mode 100644 index 2f7963cf6..000000000 --- a/src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.siacs.conversations.utils; - -import android.content.Context; - -import eu.siacs.conversations.xmpp.Jid; - -public class PhoneNumberUtilWrapper { - public static String toFormattedPhoneNumber(Context context, Jid jid) { - throw new AssertionError("This method is not implemented in Conversations"); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java b/src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java deleted file mode 100644 index 593291d95..000000000 --- a/src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java +++ /dev/null @@ -1,43 +0,0 @@ -package eu.siacs.conversations.utils; - -import android.app.Activity; -import android.content.Intent; -import android.widget.Toast; - -import java.util.List; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.entities.AccountConfiguration; -import eu.siacs.conversations.persistance.DatabaseBackend; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.ui.EditAccountActivity; -import eu.siacs.conversations.xmpp.Jid; - -public class ProvisioningUtils { - - public static void provision(final Activity activity, final String json) { - final AccountConfiguration accountConfiguration; - try { - accountConfiguration = AccountConfiguration.parse(json); - } catch (final IllegalArgumentException e) { - Toast.makeText(activity, R.string.improperly_formatted_provisioning, Toast.LENGTH_LONG).show(); - return; - } - final Jid jid = accountConfiguration.getJid(); - final List accounts = DatabaseBackend.getInstance(activity).getAccountJids(true); - if (accounts.contains(jid)) { - Toast.makeText(activity, R.string.account_already_exists, Toast.LENGTH_LONG).show(); - return; - } - final Intent serviceIntent = new Intent(activity, XmppConnectionService.class); - serviceIntent.setAction(XmppConnectionService.ACTION_PROVISION_ACCOUNT); - serviceIntent.putExtra("address", jid.asBareJid().toEscapedString()); - serviceIntent.putExtra("password", accountConfiguration.password); - Compatibility.startService(activity, serviceIntent); - final Intent intent = new Intent(activity, EditAccountActivity.class); - intent.putExtra("jid", jid.asBareJid().toEscapedString()); - intent.putExtra("init", true); - activity.startActivity(intent); - } - -} diff --git a/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java b/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java deleted file mode 100644 index fb088234a..000000000 --- a/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java +++ /dev/null @@ -1,77 +0,0 @@ -package eu.siacs.conversations.utils; - -import android.app.Activity; -import android.content.Intent; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.ui.ConversationsActivity; -import eu.siacs.conversations.ui.EditAccountActivity; -import eu.siacs.conversations.ui.MagicCreateActivity; -import eu.siacs.conversations.ui.ManageAccountActivity; -import eu.siacs.conversations.ui.PickServerActivity; -import eu.siacs.conversations.ui.StartConversationActivity; -import eu.siacs.conversations.ui.WelcomeActivity; -import eu.siacs.conversations.xmpp.Jid; - -public class SignupUtils { - - public static boolean isSupportTokenRegistry() { - return true; - } - - public static Intent getTokenRegistrationIntent(final Activity activity, Jid jid, String preAuth) { - final Intent intent = new Intent(activity, MagicCreateActivity.class); - if (jid.isDomainJid()) { - intent.putExtra(MagicCreateActivity.EXTRA_DOMAIN, jid.getDomain().toEscapedString()); - } else { - intent.putExtra(MagicCreateActivity.EXTRA_DOMAIN, jid.getDomain().toEscapedString()); - intent.putExtra(MagicCreateActivity.EXTRA_USERNAME, jid.getEscapedLocal()); - } - intent.putExtra(MagicCreateActivity.EXTRA_PRE_AUTH, preAuth); - return intent; - } - - public static Intent getSignUpIntent(final Activity activity) { - return getSignUpIntent(activity, false); - } - - public static Intent getSignUpIntent(final Activity activity, final boolean toServerChooser) { - final Intent intent; - if (toServerChooser) { - intent = new Intent(activity, PickServerActivity.class); - } else { - intent = new Intent(activity, WelcomeActivity.class); - } - return intent; - } - - public static Intent getRedirectionIntent(final ConversationsActivity activity) { - final XmppConnectionService service = activity.xmppConnectionService; - Account pendingAccount = AccountUtils.getPendingAccount(service); - Intent intent; - if (pendingAccount != null) { - intent = new Intent(activity, EditAccountActivity.class); - intent.putExtra("jid", pendingAccount.getJid().asBareJid().toString()); - if (!pendingAccount.isOptionSet(Account.OPTION_MAGIC_CREATE)) { - intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, pendingAccount.isOptionSet(Account.OPTION_REGISTER)); - } - } else { - if (service.getAccounts().size() == 0) { - if (Config.X509_VERIFICATION) { - intent = new Intent(activity, ManageAccountActivity.class); - } else if (Config.MAGIC_CREATE_DOMAIN != null) { - intent = getSignUpIntent(activity); - } else { - intent = new Intent(activity, EditAccountActivity.class); - } - } else { - intent = new Intent(activity, StartConversationActivity.class); - } - } - intent.putExtra("init", true); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - return intent; - } -} \ No newline at end of file diff --git a/src/conversations/new_launcher-web.png b/src/conversations/new_launcher-web.png deleted file mode 100644 index 76057f9fea7b2eded734a58069a67c575d466167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19483 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelak3Kk{^O45_&Fb}oBKXzIT0 zdsFS^uDUFg>5`Me!qy26PEO)Wnmd{_zUeVBEz(%9AR%3a&n0e z-{cD-0rQ=i=kR#)-4>W6Waj_-xw45I_tj%brfQdcj^tOCB;MGXJL&fJ>;E!>C3Y|@ z`1w>`N%7=djXL?0P2cLhIeq!E*PlGF)kG|_?#Zh9%l`uYd%k3DSU>-d^CauwC;yaH zRZQQ^&*E8rqT~9}_5SbU=Uqxaz{D_rTD|)z`+zwir&&4}GDB{umF(FXn{>jCO^e}! z>D$Rpn*S3fNNro6oHac<(;_H6>RjJ0H|>AnwV&GO2`J?XSurrgJp8n!UOkp!!OIr2 z^usAxKUN2NFIuK|C`JX%v;KRem5&Fc@T8GrLTVJ&lCG?XI@z6 z9NabEk(WWr$yUK)`QL*UMi&fMZr(EUx?M;qgK5U$N8wxk8l@=s|7Liw{?mJhpVGlB zTk6;TJ=AxptnP$Bx_m%)nbv<-MPD6L0e`Q89jsI@ze}2Bg&)|FOW&U(0^W_FR&NG$# zFbcU;kc)lp9)O>LG+E!ilZGQxX5*B{C{-gZu%73P( zX@9>A!GRFw-IZ|DRR1id^u#btYGzfB(-PC08Xq8eC89|N8uG{_;PJ4WHQk zg#;!oFk@*uk^Fx9G%@|HIgKnc;u-$^UA1BLzr_c4|Bd|2&T#7fwHHhV@o!l(wEOq` zypecS)}vwO>G;KGoA}mh)H8f|dv)KG{YyP|=`hIdd!ds1y!FK6%k!p)O_t{={>H(S zaA@WK)lqR@=kxBpH2okC!=C*Q+AnQc#j+x@K|O8T#A)kog4S8JL^2pp`yU$q_qg!< zt$W))u``^Km)goRVMQNH+pF1(^0mvS-Z6goFKm_f1cqYYzpM4%*x%N9HR0G5dj^x; ze}rep|I6Ae*;2px^SuR|8D5z*+~QfG&+JoGF!Pm=$^n&kwkZR*dqb3T13&oHa}pnpe;O6jtW zToukNNrzmvkkbtPd%o`Yll^6H?MzmKi&yp^`~GV7zw`v=hGRBAga4ULVLNWrV8#33 z2Kxr5(k^yR1-9y6|L?7T|MTnjng2k3nx({c&b#r7UBmDA3{CTYkB`Y)s5C5PXtw|R ze}8p+-4FgL_6!04E~s#N@J#08wmLa^^KI|b)8(gH|GN9J{HpF5CW(s2^ABHGS66dw za;_i)L&hcVT8(-SuIUr>t-WXWTW2tR=(uC|B7Se^b_4E&56kO&v!m+o<>}1+&(NS= zpYch@!D)swgWS}5zWvW-A?CfkpO|sK{!{li?uuVvCn_`KJ};Z#ey<|ton&$TyjRn# z(iklS6P7Hm@0H&YDYA)^k%8fq{48aLx6ewa9KWBf``vFx{rp#AX^cI(45u#C-7r&J z!o$eGV7%sMx!1cS%{AKuKXks#ox%{ZBCoK7hbdvf+4}!4jsC9Zd3!wSX1o&v!-47k z|H8Dhjw}+CX59ZmXKnhnslU~10#@%jdeJa^_Z{v7X%5W3|FxZeb4oKX9+>@Ud4eE| zzdEBH_kq8QKx%ZDC43mxmHC|gp!&h#kYCBei_d4V0m9(p*`;bJBGz;{%8N;VPt5?pIU$DscF3z?<^&T?>!f% zGt?ckV|Xn0|M$e?-e=D_7#ITnJxFH!VfmY(XXn57A`DyIK6A4$Flf|&*vRnb&_zT0 ztOsEZLQ8lXvU;CQ=U`ya&FQix)81B5BaO32> zqq!z)v>C4Nh~+rq*`P3&VaF!MfX7uV3$X%pHm*M*L&4LpqGq_nWHh`RP zcGum0BR8Qv;tbOmn{*hiTa{)0<6>mkp#FBU(|*l*F5#dWEr$I?mYfX?5-&Ium>3S| z)(g!N@_X2L{>TDG#s_B`+;%fFFfwd-IJth&Y7KQ_9$Ny^7J1}rCF(hm*tuMWHKSxz?+9h5a zuq=br*R1$cvYuf11AXP`2gO^;Rd${ToM{!Fo% z`hN@0rGJGE_Yz*tzU=@1`j!3b-K&O7 zZrYqP{f+fr|FWrXr^%*Tr(XVe_SgPxk6vg+)}^#Qk=MHLe{<$7Bk@=B{$=0#Db_PW1;7q5*#7+MnT~0Jt&g9qEq(8C=$%Sr zzS6}?UJ5^l!>6M?s zK{1g!?B{D#Z~MQykeYb!+xgU2ufkJ3{u#WSc&~dCd$2bnD41EktcaO@MedUI>h(Nl z<@GL``A$E2OZdmS;N43%?F!OQjGwk^f53lh{i|`4jC_T*$=uhH{JrT(Z)yI?j;4!3 z^Q|3}j2CU0zuEdIa~m5drT^)grPhD?rM~bqTXp%oSquGdu73GrRrhn>z;E{!q-mH< z%bWDXR`b)pW0^*UM^$1ub}jw7px{73iQfg5gtY3N`8ps+{peU1^{`h*LRmg{rfy}t z?lfKXZC;tFEB{@|*?Q^wk)N|Z7kznScr##^qtW;DlkC#=QvzF)msD5zb5Hjw7k2mv z%7P94%fC5KKAdvtl(@?K2T7Izbq;=WtQW4oe*N0DTg$%KF8roFXRY1p_sId$!op?h zr(PT?6qcz&Cd9Ov2xcWcRo;bGcqLmeEfb|T4VF}8lBbM*H3NSe6;A}C0DLH{J+`0 zO_!h0blCf=E%U2?%w58XpybZNz*MIfA6sah__O#ItM$_7eXm(v1AohJjokF(9O1AM#~Wj?KPKCo_hunW-liI{l4Eod3q+ zuO90ufmzxhr3?kFb~kHNe=VE2XCUT=jbL)oQMLasSu-TXuL|rr;E5lUe6DV@(-ffNV%uZu+mW zyZyv-YcUT`)%5Rcm6%_xZGXR}K7N1I4sWSymIKm^72v3PwZgutbdS&7qvs9nUN7|H z)3M*>6sJ=axqtmaL)8UlB2JGX0q67c%KCTD;;T|-hJ=I%OcT4Wyr3^<)p!0Q&-s?@ z5M%*W6T8LgbNu!!dE-0v)90smPUmm_&M&jlV$u9pFJ@nkzc26Lsmu;4u*`NGQP(nd zyBG6)n~YWQ45uxISu5S=O3aA*vg)6;qa;L;Se@tjB~yb_eqNj!RJn1I5X;=jp{bL$ zna9R+y_$Ay@*`IvPy$%fBBe3u`;u4dABAQg6p`N%RJ$^YZ;JesOzCuw?^`^&u08{Y zcfv&DzmKQ+T{zzo{O7`qzl=ZIxl%4XT6l)-Mg+K8@bUZpW!|TY({2U@MLO+l3}4PV z#bDo_U#6XBI+oewYOsJ@t)`~8e1D4UiHq@K&MO^*^#ru89Vt9`PTz#{g>T|59+3Zq zFX?Su+!Oz8O^)rxUhdijH&=+;i^|1m{r$`q++(JsvvBs7xspn{AcvoEba9(f*Q;;+ z=iv1f)y(&zzUv)l6=VRJ;vD;GvWS-R=XURZ3v1$TG1o2r?rYa~P+nFo9#Y zW%FPCHC2IS)81YxF9;5K@cwi&7r*}Ghu&_U*SE-RV+EJ(9KWjeSH0hDb^CniK7kX9 zo1*=4CKjGn^Vt4{Bf7gGR25WJAGjd?JEpE$KK-|1#&4!`a#O>v?O7&ozVyRdRZ#uK zz_v8qZOgu!?{mIJc5yVF`dEDYX>V!1r;D5Zsk=@^V7Hu@`){vGa=qA7{?&u8pr<#IX_+bXL;)9kGe9SnVs*;&Ddxk{HW-6@F}(FOrXGNp7MXk((@;_O}>5e z1N$-y#R=60{%ueA7q|H8fMba*q2i#%&H7&q$NwBKiCM8zfwi4G^}!=Wk@cQWL3Svt zNdM!kVpqOEX064kE%q}$9a_+I*jx5Aqo8A3(|0iz2F3=3xDUoA|1)nE7O6kwU#9jx zVc(IIMb7xZPmFoS7W2) zUmp#|Z=xJv!!9V>28GG$J__BJAbCabVC8N5>-SYM^f?XIgEKgbgsH(AtFR+^^&4bD zO+!DO{8lM6^XBYN=8fRy0gHgCL7MD|hbQHAbQqtf{(3gEFS}W@Mj2cMIWz>A|51JC zIqg*Ua}BNyCaIyRpU(aIZo=8I=nk(AxGBQ8z&S{L=I*z_r{r^rqaRG{TKp;KqV^@- zwdzlE12jPyo8v&?{_yL2&TX;3(bxQxJ@w8ePLZvSsi3eraQ^t;HhoFel_u`*rQ0B()_=-hB6 z?^CPUhn3csHJLViU3TE}a!|d@7Q!&0wT;vNO&@~-!-L=3f0s_loSo+Jb!iqCgTvzs zGY=bOJ{5U6@!shTN(ttkJ9HRiO&Kc$7#$c6g!kx3C@WT}jdrAd^XK-N zK@4j&z-5b_+g_2>#~*!pele8pu?>iAxoWF>sYocnEfD0{4=+vk+o~kjtGWMUu-R*| z;#t$4z5i@)do@giBtZ8Twf56**21Ft4seMGQ4#l z><|P0g^tCIu1B*|KuN1kU@162+_(Q-`S~BuJBD88vs2FAGIFmtU(WyC*GW-ABbh^myGE@^Jw-@nY` zbvpPvj003)%yO*AD)+oK`Alv-gYT1?vz3*(XQg|E8lE-rfGUa~X|Ljc-%(#TLuKjn zKH~|@CXbsItX1E3^1+{lj1w82Je1z0@@>L5P&sx_cf>f{052Zxt7EP8ZRX!`B@LQDy4p5T!Fb!@*u>@axW)tdJ>?R{hy(3(XXJbXYPLM z{I|W0;YT<`v&FaXe@>kY3JX2v!27_xY|7gy%RjXT{-~PB?-=>LuSVap`T6)A;|41JrVJP?n6f@LQ!Ho6^9>!7#f&f8xTQ%2EOh`HpO$fZnsD zHfe>9?WUeaNri@R7XSMu!S&G#@>LJqn*=KE9;hDXcJp>EWo0&YV7M8%E%?{7FZ>%A zZn%r>Qu{iAZ!^dU8=*;8B0urzP4nJ5U1AC&Q%BX&Z?|9HH{QT7BbsLp(+5y9-Qn)@ zf9h-JC>^hS$nOwfQSofSk!MF{2Qc;MgIf|`FX-wzZQ_6O=?lNWk-ZGYX6H9GFi7}= z{r@V_<)DP-N}WUnHjYQuOxLEanZDx=qu7*&2VCG1_xRTTen#o9)ouPVv&_6yd>qt# z%~fOgCk_rC{uTDSYL|aEW?+^`5K~CapXHKz^hOL*jW#nV+T|qnzlogpkCErlx=pd4 zzD$}pWj{Y8yE9v|f0C$R5Nj`Pv1v^!}(Rk>-$}cS6952Z(y9cxpZAP zQ-eYU8>0img1+tlWY<|7O5jd#0L5*b#xl{ib)JH=7+RDVI2bgnR7xlLZ>v=^ zot`C;!^q?Dv$d!)@#>WYoDEYUIk|Pl8;hG2HNwog4URi2UM@;`cYfLlg>y_1uHXtk zMq+zOQ%G32(FG=n8E@6gPh9x(uuY7?m;)Su&EGl~f?5MS8yMJ@FWD3lr&V?I3R41$ zA}D1S2+Wev%kI8zcz{V_&a7KfKTCe6Uouv{6(l5(Aqi11QBXBqZ%$$Zs{x}opQu;N zIRWK?C! z;RH@_mCOl2E8f^`ZEqAk;G%QqYpY9|o4FU$8zl}14O=^L(Kn$aU3 zwpSvA(O|Uzs5HrNNk94`xRYlY!!zaF_+1NG4)_FJ&|SH_<;<%V1_g$1p!R#wl1CcN znhl=!`6Q-ZJ^n!`!A0?h8-tt^g8)PIr(3hkpX$8+&#-LCj!hA5Pxy_eGDx_Bx{3#` zZSj7iv3c8>iMMV=u>~^-7j0U#=Hhoo1#mGK&f)!1>tuDXqz9wVshh7h8|7Xu@#bpS z53Y`KdaGuh*rcp20g`N;#r^5%I@f994D}~K+3Cit8*}P5ZO##A)@<+$JYD`X{^@IT zrf+9DK1o@FE6W?R9J||3br!3Gw4a$Zsq~V5dBS9t16|;Of(snS^lIC<8yI~0W*wCd zwK%q%DM1um7_E5C=J2+-I{oi&o&^kQ&pnO`&fM~ebw78*Oh~qP%dy~=%@GE!guGMd zr=OmkeV=Ow!;DB!XY|0m^$dPIQ>VIjOE@t4`1$7cp1EaoyMQU7MDfMEJHb}x+!zEH zq=hD3@$8%Tlq-Qjd%_m=$X_YnP4}=!c(To5`tYEFg@JK{sa zv|o|_^Yy1MdUSPCtwFfhyI)TAR(Aq+d7e5qf0DP@u5Xc?Z_aI+8}(E4g?W_Tou92b zwwrwTrpRCUx3zoQufK88oBY`Hwe^3Gkh1aLIpSNB>|+XD?Cu-J|Mr`I zZTa4>^G!GR`;~;P`B(hyytIzK*j^pY>dQ}F+)SQk|85ma{)a~krwK9Cp9ZIhY0Ibg zZ22R)GTJ|9YNxiE=j|2&{WP~rU{X2D~d?ls4D{6~> zopg^*JN@qy^Rl0Q+N;i=5_+2%e>Yxm=Edm!r*|nKV12FdC~^!z%P-Rj2)# zd%wDBKF?|Si%ZTQd$R~!DyY7CB%saLlBMV# z+Q@rxUeRpx4E}TSTA9BueSKM~{BO-~zxUUde_m{qJS#M(cGKf0TTSypeP*#eJTF%C zXh^(OW;9q2E&)uMR<4fUct>HywMy}~ei@g7_p8r4RUdUfByG$5($Af1?e2atb(zet zRsTRn_S4kRd0>6>kIk6*q&| zYn$I)ncr4h9q*L>ce7RT!b1V?8|LpR>N?MU=H%))lPi}u&YF0_YQp0ETQ5z2y3~wo zoyD$GLHmEdQaL?i>3Nm_hBM0Gq9X6iEu-T>%n6a9GxtQ8gzkTI|+q z{Exq?cm6bQN}B)g>RZAeUVb~zWBPTy+3H`5HyqQSow0H$!`3gRWiMM4xEda*Ug$S%?SXdV!)eLf>7*@w|!87LJrIJ#8l$9q4I`_mOS z-Yl$>7P%_*^G@!3w!a)HPmg+aUcX=Xe!o#rYvz%^vc9ge|1EPd zz5MX?*81{a&-o^ax`#(Sd;g&HZ*RjzHE@@(p<&~f6Gf+aYF>TYcVkY){`xfMPxJXc ziSA#%)$yP2e9^t?ZTga;Us4<1Fz>u%y*j_y`qymd^*wfzHmP4V+Rn0X`$J}7Ziffp z=59{+tt)Awi~;FiuWsG<@86j#mR}OqNy=;3E1cJv|6=;3a@S734f>8jvqP?~?K!La zv+YOD@0!zh1b#eRHdC(N58Om}!1YQS(ew-S_c_+TXdX|1@gD z*`DxnzPhqw*VGS77lr?c`#1eP%M9i8)!Mq7SUzkEx8HpiQZIO4nkRCaqoL}dw}PGV zR!!X*>jT34pT0^`s-Ln?`<35MUG;5jU#A^j>AIfHg+c7ipF>mh>p!(JM1Y5c8=SsN znSO|T%CR8o9LJILZ$TGNJKmQtUv=UC_PxE4R&ieEr?P!buPy(}{!41F{b_r%-SeN+ zPtD(DuJkLI;fyZ04(@%l`0Qrg&Fl`oz3ofOzP^6GR8PW->(j-P%A)Qmlj@ik)UyYf z{*`;vTll$LXUdB+5&Ngzy!=y{_x~aF^(+ZzqZwzK8n%P8UB#2Vyq9&pDv5ked2{}} zwuxoTws|+izJ$xH4*#+0Y~epCi?6+f*3a1gTHmco+WqD1%lFqm1wDUu^?hIHKR&hf zHHHtE5^BKBlplQS*Hqp$VxC{Mv3u6VjQJ9;rl0rP8?&N3Y|WfCR+3-lZ+%d(Fkb&e zV9~~16}^i4E(f+g{u36GRr&Dk*Y_tax%Y~A?7d}qgDIiL5Y(udpt(A3)0N!}S1wo9 zykpp36ZWdrVe|I7oQ|_ePsPuj@LnDN_4eieEve^UZvP-3uc(ye56pga>fHQG_opq7dwBcK>Y}T{-(F|mn{w$?(BZ#x#PwsR9F2c^ zx?#^j--=8B^WH z{(aWw*YRtA&%e}lZN>U}+nB-#yBj|qZhvEfn0CyGwT{QdnldlCPu_XQg!G5m-IwX+Xw11%Al(_D zjaSgUh~LwWJpJ~4)sNp#`7XG={IT=#wCYdgn^xy+=ZQ9Ybn1K$2dLe6#d_~rwh(Q; zwsoLU#AEu^Ve$I!r(9Zk?@|BdE+^lg;^AVm-5W?!DmOKH(jrS4AgPDnzTTpQGgbsoiV-n|*TK`|Iy1%-oaJWmlar^>v-?#(gQx z|0=JjJAvDN4Sv6u1k@JKzRKz#Iwwj#Hh!05{jIsXbLaW!R=M71S$VBlecg;D^V!4S z3*V@z>0a6W=u9iuU(bT47ejBIpR9G+ymm=E-{&`HT31``N4PV%5NQ+{osmG zf7HK-=uLkA{p{}>#@~zizRf4XE-)_Q>!N?>pXdIM3Coz@yvz2Y*Y3Zz3-^6)>~1&7 z%sj#cX+{QUuhqW1t1kuHhritUI4CA^(cd}h zU(F@sw%pj%AN4LU``0ULUAyQt{-0OZ$E7ahu9G@E$(i+6k9#re0WNTV;6lgkw^t@l zy34|FpiAYw@6;P}D(1slqYLD&MBjg7V9S+|dPQ!6|F-j!SFEwC6K60!1!@sF$nu<% z*Gdgd?%K;uEP-A18 zx{|WjG`YxQ3S0?EeBm+|`(3318G3Y>1y2TovUL2Rpk1$Kw@bJ%o;m$4xH{#{rH^gm z42w@T2sK=|`EVA4O%o`G+HkGV+h_PnbOXZ$gI96vrOR7)J$Y%g*OwDKq{;Yft7-m; zo3A$WEMZV{jja%wefhjA!z(61Q0Y^UT=LMOmUm*K$bp&_<&I0<`DQQpa~3@2-oWrf z&{QBt=kAdNt^_Bo)!I)N>u#Q{!SHM%sJH9D@aLmn!;yfKH|8I0bzo4lW%`kH@wA-? zLvaVFMWVo9_h@bD`xpK~JS!NUIqlu~Y2}}Xi~3 zT;l>~8ZwG8Jmv)Hbr60z;fiP3l(#7ktOk-l+o!SY{L`xr?!3os$|zT2)@nF8WB1$O zX0C>huHdfULF3bEUb@U$4J+?4{dn`~IjuE|LS21pr`bgo{!%;e%Yo~a7)Uq6^I8Vag`Yld^OuNV z^f|Qrw%z0xYi_Wy9*A)guz&<#;+sq9PwpHo=2^$U=KgoCUzFw1*PqP$MSjFHR4sGy zR0p}?^p}(Gv|oFh8ysMo@j&!|GWW4xJ`8U(nEe8p{!fy@8H zL_pqbuXjoG?Dx|Q}3VFd`9sD4cq_Q?oZm} zl74iC6H^mpSi?7|y$mxv`IvM;PGb2%=rA}0tk@T#+g+yak>ghrz;eI?JUGeW&>$IU5q2(YeyRZ*2UELt--#!o!92nL z+$MlR&w+u-L%CNZ$l+qi-)tP3nGH~d;%71s&bbU6f z^lLXBrwcyd)RXb1v*F6SU)Coir!X?re#v)`WfI7i(ll5FF7i#j{bk@({B)=5u>CZ&Qd`P zP~pO+gVG1Y-!ob4@%iwuW40Z9H3LFb=%B-|dY8L0u z-o!A&ovTS1qGXwWS$r+CFtdfj=YagXGP_Hf{8x3B|pK?e5XO08@+gbc>Tg0B*AkVNMa*f3{Zo>Vyx<8!bO>+LkhR-?Wnnd=G5XSD!z%WNL7e8pE+kjQ719 z^g(6Te{#gRyn|7l+cz6k-u!L95qcwFC~HfL(`t-?o@|+3F|?5Ji!GVoE(=v9xy$c zEqQ}c>f|)x=+uyhGt#&n3|tRn2!XPafXbs{_EWPamFDoUWUwqhH-DO@tNu?Ph9*sB zw~64gM!`s>enyVXK2Q5sM-=!2&KDk7pPl;bS)|Zp;pgI<8`go7p2VbWoQi$jP5Y82 zuxB(JjeqJLlUKi=(_ur4LWB~?o&<(ty0aBjr!M9B#PGFX!Jh?R&P$6JFmBid(Vn6P zo`$O{Vy|Xmc(qfsz~|wP25tw1RD}s(XC`cT+OQ~j_1CX{Y&8wg;3}FHTlykZ#xR^Qd{(@ZQ5= zL+XJZh`|B7mVCXi-d=ZqL0hBzfrBqUFHgO6N>h&Yz$s`P^}d*MDRf!>EKSj?qCEc? zq+V^kC7=IyNg$JekEFrj9&pk-2&(Gd=l==t3!A%y;lQ_;ReM!_woiL;J+oSy@t^>c zvNu?nr^bZYsm>PKZ6` z?5k88ZI^%hprp9rX?NqMZ|R`Eg`IeV1DE55>8zl7%E#;Xk$_r(llCD8CNbRT(^cPg z>O_-aop^)887>xYCa@B}<4+8JW}MEkEc&J)&2rFe&ZkFq4A$q^Ky}~^52kt1hMs1! z_j_0xa^rYRavzuMf5XhNjE5x%T>k1fWfbkGGwIT9IjEQN_WZ1h zyb&G@RjJ=5?zqGF>C>z0DW^Mgf33|FVU3u|{FGhQu6)6429`LMGg{!1N6bo6VCnwn zzdy-;KXBClZRMYjLKd<_t;!(;-H;e7N$iH0ocmwwm|3 z#u&@eezZtxs0$~F~uCUV=?k1bHU%#H0)>*%{(%EeOjYabp zF0(kGm6BcbdM*QtA4`uO#0d*xliXjsn6PR z8Os=c#Iy8hFa~PYfV?mm z-rnanNIIEe&(UBB$!E{X8BDhSS^q}x0^1bOVyc_b_S1NmN|y>Q$mu=Y>V5T>+PSMo zv!7gkJOAYE*Y~Hk-0j>1TCTEt)t0B}MLQmC@QF0N+RyaBUXbG%q`+qFV<_`{`*5l)TzT%a2x|A=ej& zHhy}zOmfqcg2pMKQ*UN{b35DObKk_6fhnN|TEiH7#0wy5ZN)pl{2({_k=8^}GR`&~CUfR4sG=z2}GRLa%3^UN(lr zvRygDVDv!xTz2bvujBaRw-yx<7aM^qvdxCufxxY}{8k;dJXB_qQ7Z-e(7> zuJudWv*DHN-W{`p|GYc$oNvPPuDEGeYF}=8{KT*J)SayPk58_eY?S!ZrGI{-ETl=r zww}yLop(7;FF%z8X zH{WNPAtCkQ(|41Mm5gN%9x49PYMy-@yq zb+q_qzLe9_ukTF?Y)$@p=>2-pP5V#nvwKwZ>-2;_iNAvUF3l6MEc-UYt~&YKd$rFF zVT;pUCxGp`eA&=aN5lW`y#;3Jdm~Ij#oqc&*n0H!7tQyRXNg4Qo^+Ud+`e{UjP{kJ zo26OXbu436y!Q)leSc?0k{7+@c?v2p?1)2{$mAqQz zcfvZm#|!%&?cMTARC1R6oe8P&^37uQs_WNP#!mXa?9{x=)n6l}jX52*s_A8=E!F(3 z@BNe1P&mrvSg?|n^V{nh*5 z!UAIjuOwM6{`-Ib`!9C2i|199H&sQ|)xMqm>Cmd_DR(xdr$qeYsI9%5)B3(}y~8_) zx4$d=((>jlt!GaYV%&P<(j4B&Zeon_kSgiq%UNQHr#`Lk2NlmkQcF%B6nNX27xB*{ zR^Z-k1K(%a{x?0VgH>KT^yyfJteE;K>t@6*&?=%UsSB5Ea=D*U{_9WX-;PH!xzoSY zhpfmhzPi6`!=D9jEVqW6$=_e&U%mSOygSX^UyJ@1l{e`rWH~Rs6=GI+RORoM=3N!( z7al22zy7xPcjU4+ubt=01$^gPao+B?!@7SrwImHb#WimED`{tGnaB>w8J4z}s(bt)Fz4O(oG&*S;yuB2@&L(8O?8!Uxm+JRk zi81QqSkXP@if_lhf3X`DfiwGzIdPJ;I??~8?AsW)S?ATKx&3D6udUY!bC+w@Wym_| zo_plW@%L>P)0k)JGOPqOJ(lfb@wm&B(et&g%f8}EzS`M6;R@UL*EJ=87D^V^Z3~Gr6gLdnZ~cG0nXycBm_BGQH83>%haFo zb`xb&t^evVyxPZBdbLoYZv7b@NJ?E+>=piUu4wkDPuuHWerGp-^yRlK+pFtN`j#OJ z_BSthl{D4=bbM^`oL%~FqwlxwbWtdPw6mT?GX(GUeE%jQIQPrucf$6p@6VobhOG@*nFx*JoHGh-2zB2c*7u#)~ z$(*=+{-e1&!!)_LW%`yCzuuiOmVQtVNhgMPFDd2xzvBNfy8U2x`^lE4=U;DTdiC|> zy*#Oq{6v{pi*%StU zuUapET8qCb=QsKKd)sPA>Ir4o^4?Zy@$`rDew~f{qjuAE{_FUjznl3d2(m6t&APby z)45;YpWOZW{-1I=!D@?!YaW|vTg$PJEYRXPNtfFOn%;;(Uvq#Hc^lC64 z6K_m_0aTyV>r zu}YgEEcW&C4-*>?bTx!R`g3dYnS5Sq)o%KAtK!uBOYSUdjHLy7{xV!#X$UebO~qzw zv~oX#)Z#y94esV|Thw!2_JQb$hK=dWpoR})gBzDa`TnW<4d?$_8~y8^SmlC^>o{&i zGfiPA`Mbj!l(uiaxU_&F;^oTwR!j50Y%<>^puo6Kyy3Xo7SNglgUhoSb}#$7;pCM4 zKfCX9EzMVvGKbAtH6} zeXFDP7hEEoS(jry+pVMYxsKf)l%PK#kCs7QRKS?6VcK?%|*VrpQh z5NLQXZU5Eo`95$l^E>#DnGoaV^DHdY&I+Jd@?=%eGH(0yJ^N$u ztui6TYF$=P|02ST;Y`#&5qqJ8a!!tCI^d8$$$DVjQ~!_3%;3^afnl2{!>RkXj^5WV zpK#uRiAj<1*(`|fRx_j=y|M1k+NeMKbgGKG8x2(s=s{DcXv2#%u7=vv_v=*i?F=`} zXJJVe1CM^RF(sV;wEW9iRpzv548>=dT$UdLtsJ`H$-or*?^wk9&#=0hEA3T zLdFan4(rd{vlC;ep1%Jo_k9kdg!fAsn$I$2FbPbRQGU4Dlu_b;g)UQq5M#z>jVB^Z z3FV9&Yr`2d>K}{j5A?Q=Fgl>qV3@}EE9Hpi`XhEiW}8>r*nHdQ#d6>VQ^DF`hIuhJ z61ABU@^57`3A}Vt=}QW{`+rh}!cb!Q78Yfx*^zk;Z?8srzNS@6T6C2;($(Yt-X6w)OHk@Gsbtsm6U-aj1 z%)f(LR~RdsXY&Xh&~ezy^kBxn_upPV{rdlR`?fnvtd3sP1y?aa5zO8qzK7aR-qv0gWgYfTv zeoa%i%h&c|+E*+hz`4QZ)$ez542%Z1XYIc@{}*%MH#Y%hWABEgtO~C`eW~yNxp&Fq z-*cZnH0(c>pZEXlT#kl~tPk4rm_FQ>+F$);u{u|je#ZB;kqj&c)R-2WjN86to|tC+ zYrC(~YdyPvI;IcKEC(c* z3VPWYf6TuH`n%Se#@inQ7@yznR52= zOsK7VzCY@BxcmPrm;b*N{4cT8>c~Y^b29~o|9uQBVN6%r|Jfd&{(-qyKKoC|Xa(&i{`Amyct|GBM+G}X8e$2_;3F=_@76^epLmD%?x2tY#k?i zCZA}z_v@(r^y~kkr)6IKCoazTL*IS-pDPzl?F&lIe~)2#a9^O|fF5(r`9jg;Sf&rs zyrq?gNN< zUDP!EwfFz4qxP>J&7Xby{+;O3_QlS1j~yA-m6Zrw{_iNp@I3IqYngD#AF20@1Ad#oSs_vydqm#Y7F zu=o1Cj|Zgr>;GQ(-5)!xp>n!E`wO81MGda33%b9Ye3!jwWqt9q`UhNP9sCCE90uG1 z42&1n|LL7Nk9)C7j+=Ppr=#00JzB}W@88M%x}xc?c-+gcl(I|^XPo&!|w}}iAwRi8&dTOu25aG=v z&`=jQwf@QUi@$c&-wwC-I4#J3GCun6*5$9b+|&QuyQs*U%izMmQy}z!y-$Dnxmt!k z&AI#U-ueDM`Tfj0kGfd4{F*Y8VYSdK8MVEelXT<%`HC_mi~XOVkfg)OaZaZ}a5`g+ z4nyA4`|q~$eY)_%{Yl@u@_h@e4qX(TckO@uqfLwxgc;cGaJIyQm+3vHP#}`4>vL@tOL% z?shumZvQ_gUuEs{%QyqFgY6FcgG|W>;eDEO{ujP^@#mUO!?E1@&Rvy{Vw2yCZMFQc z@Vorg=`8E!2qiQx*vYD}aj_c1UR}$t`TIV}Co!H;W!xs-@FsuWFJ*C8@9qA|OD=CQ z$h2MBYh$ox>79FD<@Hzct$6(MKY!o3jErCNzt%I$v41JiEttER;g$G%N@7*!SuCmoM+@{_5v5n4C0fc)hk^-E79Y z>5MU|55B#R|Nr>+Ke_VkYxZt`f=dJ|oI4LBe|q8WA0yUy{+5w)!XfbD)=hse*MB%w z-{ET5&cae8-=N6ip#AU0nTnT_uZ8Q^ZM}9s)vx^Jk399tN3CYR4EOK;eQ)yj$I|t8 zoO*xeJ&nJAdH?UP`#BmMSr+VzW?Wx7leOS3_k${>2d9D>9*aNfyKnn(_l{`xdv&kY z8J3^ktAA(xd5$eL-va~R3svO!z0TJYND4b3^2Ou*(JS`;f7>Q8q%qcLF!WvO_w2vi zZEv-)-{s8vrTL$@Yxi%i+u48XMS1>zvE~1N9f|+F+VGy?wcUPycfb2n9{anz_E-Lk zZ}uz)8a6Ymt7eSxXW608TI0>MW&QVa|6hMu&RPGyJbLOZ!5!6)YK!iB^S@AMyRxQ1 zk9l+S>vE12s!X+)A2@CAZSH7Pd@)Z$zwlG{ zwtlEye#C1^*e_dg7tifG1%=EOuWs2Rs^#xf7j*wgdH(<3=k5!Yoi5JuS-<$t-R1x8 zmjBzm{_p26`47%EyaPLJjyltv?@U*=ihRiB+@Zr%{&(Hk_w#>6&yU`A-|Pq9&f+us zpTrBl+iPR|;h6KURHv-{2M%AByKK(CN|NcXUt{I;qYO>{H>TfJiIP^STK*+hq&8@; zvYP2R??>G`ipKcCzGeYfwsieG*^lYhi6O5^xv`A;sED{9ZD1$u1!dp>Tki(U}$ zU#7`@b@^?N=b5ov92aFT=9qo2;?VMPZi(1s<=?y38P9UtE@?ZJyNr#$m`**uf z{`l?p$8X;q1XtV-%>P#=())MzpSA+dT6-U-dpuLO>2IGNcHVxa|9g9bElcm1Kd9Te z{QX|*{MSXdPhbE4^jFxq!rg*T-`jnCf9J>d;(7nh?iODFN;T7&>TY{*{^;Y-*!TVK z`@gTJm){lmw?FsahePuZ{h##V`icFyKcdg9J-YqK-LO*c{kQk+Q~hVQQ}tcg&YkPs z-rQI0xFh(Te`mO~%sc5H4$WIWO!~d|*};a72No>5u!+;=iLjiEj7`mF<1IN#_v-x{ zf7^a~_x<+m{qukCc~-Y|T70ShelgYZ?|aJ+&kg(^RpR|TTK(^{clS#JlQ+GVcpLVo zSM&em%f|7yngZ-rXBelC3|IFw7Gd5SX+9A?asq*-eKb9ObiY285w`}F78|Y zFIqbCpZN~ozq|AQJbrm!Wi!J&Z^m`Ynd)AanQYMG+;Q{kyau%{1_lO}wq0HKzs~u8 zR_@gOuP5&7-!1!VZt}ICL88Wa!SA|;T`C7k)gJiw$u2anoWZ*yJCi|^fq}#C=5^Dn z@z;a@`}S@8>!0WUuXO7E-@ELC|BFR%{aAQ=*@0ctn6LOoV)F`_|j%9Jyl8lrU*2gTK%RV{^^`Ylr&st4}vCShtz+ zozeqOwpWvw7#KdtzI(j3`sHr%{jY=nzn4w^lm9B>^YTBrYK-enGiE)1-kbNEY0hTG zbxH-3*(HDMo-MMYSek*MqILPlE2U>j_5aSk({=yr%KJO-)h|vyQ$GJ&xo-Wnzq(uG z5A4*uFqvgVviv#i=DC|0OFIwDe?5V5xxk$_YHSP)529m^-`amQ@K^n}fIsJ!*F6{A zzyHIcKatydGY=Jn0deI>#mwV|1)>@U+Lg~91X2152VaFcbv;Ld%!k5 zmGODcf%h>f5BT$(9!y~h|Hs6@aQ0Ab%-_k;5C0!r`lbH)rz7v@yxV{9?aKdF+du6; zc6gTk)BHrv0y)8wSfLf(EOk#enLN;AUgz{+N|XJL6O0TDCi2%ee*K=;`abU0xs`SP zN8ejLeP4B@|I_w`EIZDz?RdxgV`VqU>3IczlJ34xW7%ICsaG(SnStR0@Bha}YyU@Y zKeYei(l2v^|DJpFf936{{jY=VpXMub7TC%@$TT~!Q|Ez|@`F3d52iG}zT0vjlQv{<=;7FLj%x>Z zV=&j8qz9ex3=9r?ub8*}JG1o7UGD$tdj7wAHS12zS8c3vU7!asb4Pch`Z{KYhN_kM zJf*t7hClwX$shLz|2ZPB^uUwjl`trn zZRZ_(`0H4nQ;imLuOLW3w^w#LC+7|x1_p-$1r|#Nh6PVJ6$jzTR*&}ossFh4rB9sd Sc4-C%1_n=8KbLh*2~7Yr!0W95 diff --git a/src/conversations/res/drawable-hdpi/ic_notification.png b/src/conversations/res/drawable-hdpi/ic_notification.png deleted file mode 100644 index 32325e5f79569e3034e4f7ddee5fd07978b85a86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 798 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 b!M^<0jlKW&O}1uWU|{fc^>bP0l+XkK==R(~ diff --git a/src/conversations/res/drawable-hdpi/splash_logo.png b/src/conversations/res/drawable-hdpi/splash_logo.png deleted file mode 100644 index d8efc71af8f681b051ba33d9dd335a4a9c275073..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16643 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 HDWM4f!{+UI diff --git a/src/conversations/res/drawable-mdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-mdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index 8ec62cd34b2c63234ff5593637d5105bdb253343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#HJ&bxAr_~T6D0OL*#GVS z@&AR5?*B_KPVN4)|NDO4<%!1s@Bi0t(%SOYUU36!=;8P#secQy6qo`c4>K#MI38~P z&*ku=A%fT8X@a4N?hX@&smWOf*D-op?h?z9x-eyN*1^Y_e->T2;4pbcoom2f?hsza k|M8E)|J^UY@T`_0yh34S1N(Io1_lNOPgg&ebxsLQ05eKS{Qv*} diff --git a/src/conversations/res/drawable-mdpi/main_logo.png b/src/conversations/res/drawable-mdpi/main_logo.png deleted file mode 100644 index d81b7363890164455f6f73f7c0a36c7779a786b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15309 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 diff --git a/src/conversations/res/drawable-xhdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-xhdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index a0a1509a16df382eb674cddbaf52e6e70292b30c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZsBH#}V&Ln;{GUUl?pHWYDv z*v+wP(xL}REau7_Mc)HrnmQH-9nJ0h72a;^C*xsKfB8wO!m~S>4^F?yys}vE_?-`@ z_U+yHgk!0&eYt;bx#|H^hUppWWed0uT-AHfl>2M)A=ytHIhOO8&s8kn+IiXLgNw^+ zn-7jIvuy;fGO!s;FZ4ga@i4C8;`KYs2EWYQncYsxa7z3&a%Xg#X~|?TYi2a#V%cKu zgb;)4Om3~kq7ziK?(sd~zt_x|(~)tCncrp0DQ5LO7j7AMvv_ov3UBpY6R|*~<37Vb c@eiC9CU2k4G%FVdQ&MBb@0A>$tRsaA1 diff --git a/src/conversations/res/drawable-xhdpi/main_logo.png b/src/conversations/res/drawable-xhdpi/main_logo.png deleted file mode 100644 index 19fbe70b8da72d1ccdccb95bad73bd5991b960b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33496 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

#SJ=7GkI^EQ| zTLnDs%$9OeI>K&g=GoC9^5log6RUg2%YVgvd&~Ub@R85W5b5M&jPgY0koz`YAv2RcB?2owb@>h>_%hcJICTS~Gd8N8a zdd628O4Xi-a*$|sVKGXx%HLrA!m8-iiNcwGxsIKX+PI@)Bgjt^GJfS*Jy{aw!O=F0 zdB0TIldjGH>7+k`NzqyIRlYl&CBnUL)+Gtr=6wV+_ODlu-u z2|M^zTU~niU*>r2jmtC9dTHxsF;&z`=2pYRjgl;v!x?sRsMMKF<8S!?U}E!ZjxV}1 zQdLhI{pz1NNy0eW@0YQui*oc4Ck_=g$&QV#oBY?hxP+-Jchc(S|6F&zdmgVuuU*HP zeO*pY4h@}~H`ZAH+wl0IgN4J2-(N&#aT^+!FU$I-@hah&8dpaU>#dJ}h1UkJ_~Cja zzVnb~)&+H$-WQ=RTYOSmcOSa#eB9|S!_BYqfgY|37d2EGIu^%WuM59^ao%ECmS5s$ zHa$wsnzeX^!=8qYvx~hw*G^c)t6{j}^jGJw`BL1S7yez^dU1{3rbF2 z%;e-_!>~!v<4=x`Jj45Y{onpg4*1`+qVURsQ*ld|d3H4!BqXHtbcrN1p4_h2(z3tH z?_#K?)Wz8y8e*+KE^rtwI{x+NudJN6JWjU;>xEpF zadkX1XJ*a1m_->Wvm!Vg-`Q#^suW!>;K*H`nrNFi-}BGJRdS>^wD%i}I`}alI$&AJDtRZi(Z17bR&%ll?o7cPWc?B*1p4OeP#QD`$IuW zg|(#N&GMTrf3B+{K&WM;7xt%oGW$5qWgj zLt<;~;cx03x4llcrfw0Nv~o#QBcDd_4&TyTwXRlyC->$@C<`Enbx2l5=6DaMMIi%B!A=he47;~ z2Uj7@?<e2`ip{Dd7Cm)tNTzXXL#^v$nU&O_=zBUXtv)|vT*&h{nV&A>m5AA=mW-Jm=x+xdo zwbb9^3j34}z9kNa)HR))R;>+EQqpcxlx*}8Tw)UF@gd?v?}d#4;vutkN%vn8Jn`c) z*Iou2kkk5Vt?z~2F#GkV_Qr*Mj+w?HO%f8!5ovF32Ze|z23Z_gV7^hHD`fuEs3kMk zt(_wo=5^KiNZjIEzm+-Gzb?GqE%CSE-O-GXF&AGj2e>;t^4IQhRgC^udpdqfkCR`u z-{Y0a{s%=1G*g=vF?=-M@I^spriR4I3EFB-zr-JVTg?ty7wY8lMXHshpDmtOmb;Xx zK-p;9DzRFIQ`{UAD!kTPUy+x(wJ-g*+ofZNIFh}ui~V_f;r@l!;icb2xEL3`)Sh%m z(ahI%&9ViD#5Mo3#4mO*QMx)WNJ(j%|Jp?Yb|-en^zVv0aARip5r0{q)+i>SUZ-PM zoVMND`SqY(zWhdwCrf^-$YoZsE%CP=kR7g_%JgO^Di!@vyeQ7u___XByttL*tAiO|7XCQ(`Qr-P{Zk!XwpcK*-8)}=@YjOm zYg-~WKP`F1S-D|jt#Vv$?bKy!jON%R%kjK968a)=iV&Y+hN4K)gvaukih{T12PrAt zoOhxzzW2N1p4@xqzkm6^>wo>j;|dLq40=7+>_dbFOqB!_Ttzm0J~y|2JMY$=OG{5B z=f97;bHBoVTUjpa`PEfkZVFUEF_kzj%kM z;>BO>t1>0le*2N&wl6u*qq_R{K~`k%-y`bWQK}G3&VOQ2Ob0o{0 zpBTIBV(c#Y7aO$KL2;o#cZ|FTcc+}I%Irk~3<*6x`@j3XpDnSrc7 z?l9=sN>}l{x7$?xf6`3vXTAGZoWI|09(Dh~!h_DQs=NcIz7Ttt#S@Tpi*xI0@ngR= zx0p%P$~oE1F-!>BmMo#R^lr)Z<=KY*Q+W(ho$L!@S%gx3 zv{t7UpPu*g`nmnL&dii#;P|MR^Zs7nb3dDQzx?IP`hun$&)ahNP~@b4F(U5U@cyIegygu4$TUUhGd^x#mIu z$Df*g8E#*Db_pL=-|+25)SI`ry9L(2dbU@j_k`gymHX`8X;&20e3vfEFnGLAWV?HW z$CG7So?M%Kxlotw5`l_bimZnX7~1X5 z@3+Z!IxI3R>b1kM$uDk1n>Qr3JjknB@UmXOEkOCchLm9)F9+vCfmvx2gHu9nyA(2l z-`tv6l6&dqq?)xXf)|rToId?M7%_9RASY9VL#ufl(-)z}p1D)6a_LJYxC*AM4OpJS zr*l~8zDOjql6kqFo5hj^%OW^j*ZD8mrhd`O<%p7MQ9#fH6p9dd45MHRf&~e3% z|DiTft_p#V(od_iHod!T&ZQ<1+VTJ9E4 z7JTI@S(&6%-rM`c!=q87CFO5Zi^haC$%U+UjCz)BRJyym;~Eo_ik-EslG5vq(&`@@ zr=1JD(&+m!Y>IGchiuDJo*h~19Hw9CKk<9g>`Rk^wtJMvu9}}6bvwYKcj^}@?aeF` zIX!etB+h?TQMecqX3}fQbD(+ugTNmbmoKar5%t)@+<3=-XHbiCL3MBVg3}xIpT#|0 zwq=Tt;Kq!pr=iPhddwV--IKoS< z*2^ggDEt&tpBQp2xkCKyjYSLVMOr)k6HiL^bgbVN=3z3UFy7^NSb)Rjuc}YeRn}h= zTB{Vets%DS1pB)c%&ROHi8C^~xvErs$=xC*-XGAM|^okm-as{;O|szT9=WCHu`8p^PnZF8Z2lTnr?1c?u<* zBy?_FXy9IOaf)eI(UTcP32A3J>(x|Jr}8N_Z@6MIVbVnxt>{JTL?ccMXsvtsOR!t- zaue6`jU5LUX1C*cM2}s|#ly>IU1;BV!kO{amg3$;ES1Y_{`~*8 z&%`3{v(M*)SHIugGs|2vaEXi8A{FmxIj+}^bhq3HG6g=a&gXHn_LkuTe6Hhu$ zU-Ob_OH;lJZ(mwLY zF?G9GvS&EOPjLCRG=isc#a63N3nMNCEY5zhw7lbYNNJ9wr%QJAQzezXauPh(9dnM9 zO>tyj86qymUs#cUY_4esM-*erhJ`wdjTTz}5&N&yso~4vI{oH_K<)`v?)u(KZ+zSG zLh|S&2gT>pFHh2D*OcIFQg8@xnIM}W?|0Y3HNZ)B$t6w~j)g1y9&@aF=vQ*E@s?5l z=@z~Z(SK%2FYH);GU$csqh#-w*R+=S>$)tu;%4|fJ9m4|PD!gUJ`GW(YYe;g#NLS7 zJGJZTQN7;1c4bnkR~)_eE?FDaQS2;sJ-}VcMDCFONB$p{Z&v6%SMU|-Pdc$UqI~MK zlRG9I=y!iBwB=`?D#y>%Bu)y-$%F*nGU%KP@SeQ~Kd$c()ur=>!P5;PU!_VK;@+GKDZ5nHjLcf

Jb$tz!25qIY1Y%5`pzGm60`y=lg2i=o?=aj|A-MlkwhnzzlM^E(}jfN{L zSSRe#3rLHfWbu#JU%AT=6gt-mJ@xeV*e%f(y)DFd;YR!ESKYhLvK&9YMnI`n=k?Q% zWecixWJK65H_Mzk#XPAf?#`nS#wpP&T6A9ga2CJA$FDLDCS(bX+` z?ZOtSR=p9^F8k&l#3A{1`j?GsoD%)MFikzAw{V3v{|W88tqgYx8eRlGJ|eRqrs(Rj zs>nZ1wF@@SIB@rcgRaT;lL8zS%kM?U7pO`khEiCr_NGBvVp32RJU z@bs&qYR#HMn{QlX&iuW$Z*`z`M3=(u!lEB%c~ssvFTehHhmFE=ZiTfiFYd%FXbrf* zk+y-`e}hqo!UiWrMwi2{4>x}(-1I<`b!GPE%hE2!Te8ykyRc}upS+;D*TXDJV5i$Y z@mrP-cm4@l$1we#9FF3EC3@uXQKVkT_;glk~#`H%&9i|tGeSdhkU}4w7UZ%#p zm`U2%(mZ=7&x?(d*Pd*k4a(1(uF7>kPWUP(@v{9zVaxk!%c@2h7l*tl@xAh0{Rb5* z9iBd73|h~1`Uz9!Q|6?PE|WqPQ?~hE zs+}O>==X)`X6sc0iIe-Czh`Y<{HfuTD?@5Px5C<84%`nnJTG8quIL8^E~61s$FU>H z&(5A-^+Ay}dp&Qibi^Hb<=P20eJXn@8a;X^PTu2NG$bcJY$?X88m8>yTGEzIdT6n!D;-LBGI7&dSS6KA;;-8Rvx>v8fjx$$&nVrutf*9pQ8T@Oro)!tscpj>B_SxD+D#=^PmA?M^2 zOn2s4teu)@5fSQxN4hhOv=Veu->N8Y5a{s>3Of@Kb?)l~inyi}9XWLe1 ztb3sJbmqd3Jkf90%V=mW(CBOCk<9&Pwq|{NKl?3thy3FF`yc1a{1=?2<+MCs_S97M z6K8KR%no?Y^tA23ofA1z4VwG1!G^gQdkoM(=?ZWwAnp9;u>u=icbzDSIEwdX!f%? za44eD!FOZo2g!_9yEhtL>Ct_y=du^tPMrCb%hHqO<1^NxCU&+5r_WWz+fHMjuD@^9 z9d2&JFSo8&`@cWTEb+p<>=dWGczL&%po8QU&x?}!6RNiVSQ`6yf9LU!p=%r%=C0`x zXT=aI0vZ^NA54-

kfmF9WcO;;Wr=XE&7^6W#fP1pVd_3hlPwY5x)sa>3` z%RA+hw3kY(?Kt^%`jM0rw;Bn{_BM`3C%IF^{WzK>CC^*s%kE-|1+7n5zl{ItyR1dq zbh!1R8P9!g(DGzpy!q2XNNm!g)T`RUT+srq)rG9uA0+I${K5W&EeK`Ot~iQ62&5Ua2@CUth&B?k2B)=vp0snUFYV$fcf<5>5I4T65l#6YSmxU z5Yvij|F3@9x4J*xmf7!fgO)GD%9EmwdJKXo)h#JD&EGHfUfsc4f8b0|qXPS-NA2P3 z`TG|wmyoPp%b^&h)N%b=1b1`MQSIuDtI|ZPR#jh+ed9KFIbXw1(N4)8j&t|=zx?}n z_4xXK#ujIpSGh1wk>)zB(|caU?fG-&zy5zj{x{{BBu~D3jEiL_Q`6KR8@+#6_st~#F#!O`jc-@Wxbe&1PFmoP3-xGg+I&|xNT@YT2l z8Vwe8UEd3Z&Tlph59r(=VDEN>A^V|o)QKC4JsIzAA9c#v@U4cyDTR^yD0iiF+q`r0 z{1vJ#Z4Pu!ovPQ+@TX=$jGzdsKwA_`Ewlb3sWPLDVF86Ne2r8!>%M$TFJIwucfG9K zY^T3M*_YdzCWrmnc9}cn`d*#%g;RXgBWF)=ch5bZ8^O_7IGtUEA z-h5+EiQR>0cn|gZV6A(ZCaPe z<^NFHL+Qw|6i3y7EmdoKC(l{9M}b>dH2_jJ}b zHhQLEeS zrw^_walSQ(SSsv&v>^O)?3%MDoF=LCg!T8u)c^dIsH1Ck%0haEqK(7S!0INWpAIvZ ze$4U@km-NO8*}9K8XnOp>O18W<{jz3d8lrgt@0EW{M>E&;%71PVJA$S)ZPJe91_3<&dO{H9KYl%M1n1jA4_qx3|z$*z&7t_|Ha3Z^AoPj z5G`-(+rBc6-*BVqwzUad{c;M^pB#E+ANyDGNq+Z19>s<)3)53)SgC8YWuAHb`bYeX z!=Yws+^1Mw13RAlozk@RhvF_K@2#h6R*Gw8bSns1xK>yk^^2R?<)3J0dHz<9&93TQ z{{_4&9T<`YRahp}aXn>T*{!n5H9%(ZjHBis^f{7SdQUcaHMEpBZ24iRl%}(uZL>y} zN0-v#>q##n+Cy`fb)E><;_Xk|&^N2kH{uh6;eEw84u!`lEfeGfMGiBleURAKr=ccs zQ@g;T$~mDmL9s4FW_GC@D?i`KZ*z5Av{Y+C^{xkYEW99)E&M5idt2!CniWgM=CmAe zkyUs+Wmo3Tn{S1V2^-O!GfkI#Kj>h93OOF_yJ(AU!?5U}F_WyR}_wDU-Pepdf1(jWp5>`L(Y2MVw6;e;r z-l!?Pbxqyg;d@$S_O%<;fYx4Godk zM+!Kae{lX|E&MQjk^TcAUH%DIFNmK!*?#5IucOJ9qINqk2y`r2pj&r3a?ccD8@={? z?k!ita@TM*G}|alWOkXBR6RRIWL=NrnIxIx8wH~uHkB2%I}~vDzj5qcuJ-zWmv2DX zv%eGO-0)m`!02=8F8@PLXHP_MvMlw`&dkZVbK+KyPKxKTh|@P(ABMO4Cn{D=x+#99 zE;^zlDs76^6p6MlzYBFShlPL4I>9M4Md>k$fB(;Zf;`h^S;dAE3$_O&m07$|Soe_qN4ksQ(IZ)n${wr5JTLIo zS~~ujAYilP_VYj%PDVu!<=%w`^_32HzuqlR))br-DK|mD;fY45M&M~-k;92RkM4g6 zbul=1B#ZI;l1sN%ABb@D`ZL2*ZCkX%gt$fPw#Qrl5@za@>pG;eXfbC$(~7mb*6v%i z{S^PPN(UwO4xQG#C6hiE*Uep!ZPBK?Ls*U_Q##Z9G}Gx1)@%1Szg>HK zdubNABSqZJ%H6Mjk6Doz&*z2~1||P@yWQ6PIB8qv$ujq_?WOS1);!=|q^|k?S2(_@nB- zdYvo(x{-Um=aE7g_CoP%i@172beHsme|t1Bv_B#D?yaW$XOmPw`(br`qXXWrJ^uAV zsmdkJ*}A1{U+-0&2zuDDRra3z?xX#Z8F>v}MkcOa4>%eXHCmZiPdA?qeE#%J@z$1Q z&i-=0^rmIK|0~t6A5P-_ztigA@5SK~Gdvy4=J=2$@e0^CBdvQl{rs&oW3{wTGTm!yY3NG2m-@buWc7>yQD7R*T|7Y7B z>%ZC^e!er+JnZ_qW4Cr~ozdZ+V5O(UlCt9Kl|#zaCiUsAGd`%*eQ_#^H@G%+Zl+W9 z);R|xJtnn${rWm`_QbCTuc_`_GW)H$f6pGnBDtPV4J{0d{51uaJdxS`!Aqex)}pI- zg}ZIojRbW;soLHjmqqKdH1EZ{U3u);v9m8YN)j||RD_mpG*FA19{#y}%U*k%PWfBb z2VUDvbJ)@E;t{BD!P!Fa*tKbECvfWgQF}Reev$7<@p*eca7ln_h7|r*mkCXW<|#;K zYTW32{K82@c8BtE*>@8ZA8*#S?`F$qp7?E6jqi@#Kl51bI`Xu!ap!SGaf;j$+$Xcg z-llcxoK3v!?^*6Jnp8*&l&}hxuq%2BO?tV6BlmX0HHqaD-Qr8*<6JARX-v9Q@#Ey- z`^<}N6t>Tu8)`5!M*i!*#GU3*uaD{fxnKT4>YvQ#AF_W~Q|jK|WX|PZpnbu0i|_O& zhqg`2-Ldy!*&CUAoywElcdXi&D1Nf!(g#Zw8xETed9fy!NlPZ3pUL9s^J06(2h#-C zuUub3zAsq2iZ{;ke)LQabptWU!(Ts?f|kagyrIJEeRJ{inF~M0@V2pE6nvp@Z=LA0 zQ2p#Sc{vvW=4SpMhnQ3Jqr9IKPd}M$`%|bdQ6MwsSndvPqb-viB`&?oKkj^5UTas- zNiMsa?VyGBvu>G6^!FvJ89FbOkGpt>zh~q3<;`!RA^NZ!o4Lj@B92eX1aCz2J#ygv&=fD0vNB7-T zDSuuw^IW&d>p7J#3c3UbzN-Dy;9d4qH@URx9skO!nOhW$+){U}-o+!C{rcJ?;k)w> z{QC8E+5dOV?-Ztm>mPr1>}AHLsaKg-n>0Gj4$x{@dp3G!^|NJ$y0JfgwuT>6 z0M#C5B2`S@>jieVNzOT}m~$-ZhlAS9V@mtCzxiHJ{rBy*uj-CYv-k5x&)&Z1*kxNGKl?&k)CAvMh92b$r02i;X)@Vgbd$>ByZ8Ino{bKCzV>iI zg~Z2_J7v~y6oPrJnBRU7_kGWw`7zn$&WDiLTbd~?=hdz4J9&AfO(uWzd|3SRg5ZmY z2v(^#4ql##YIe#tR$6PGIGFvC+IgD!)2=-Szt5|CAE+{+VI?ad3c?iqxtQ(r&ByZJyB2y-HPp<_`>5Rry{G@wYr2uzmt8> za0o8x7d6%X@UgEyIry>KkGtR8?!LAujfmYXB`s~X=w5XH&Lc91R&LO(jTV%&(Z5vS zskdfr^yww*)=allOlAJbBJP zDfF$D^=_Rm@1lj;H(Gbke&2Tf>EYfFylN+>ZUGfpy81dyC94=Vt=2Lj4OJyknROS1(E*nPe`HZPfyWAkaTvVFtZ zN(U!~kDb%RS6tvSWSCIEIoYD|`$o>%4~u6mD-2zyRa5u$`O0TZ6Ama>UkJb44oWJI zS01b=xpT2|>dd5$sc-%&>ejW)V6vISE-hvD;PG7fcps-{veTb9Wru3N%h1{rWpzSMQc%eRCERB=KCG^PQ4B4)Hvy;Ah{! zC1;Xss(aY(?&nM$e!b;aZ3^#fl8!y7cjs~u|E)i{Gdj;F=oucrrE@rB=PH2$_7;Xq zg*_f+aSLv=NEfhgSX#(!ckw6Zm#bd{qpzl#*G-qVy=r^o(hku z{>jlqx%Bnh>-Tr>{QOKI=Z-`uhr;s(=cT8#G}&78R{1Pom-cwhx^``B zcYjGuOUmSJirz+1tD_3TFUP)E{nFV&^q5Od)7HpcA9sA}R(uw8?xDWzwx@E3cXK2e z&b(Iry3qf#?T?7#$1jM!i8`ZQYz3+CK}F@Swyz&{|DDl$-s;xt+1#BhuRXMy)}D># zjBuXDS*cX{Q+)dUre09|ST@I8ocz1siMogU;nJ2uvFr_vAs3G$iYh zMm59Re`VgGw=4Ijt$*X1zCd`kw0Ux5!pz*$FDv61rzuYKONjkz^&|G!GS*vhn_K2& z*!+6DxL?_xzvI>dF2*DFQPpiz`Pvx|r20Ix_?F1LOVDL@sPn%a-}`s2R!p3le|E0j`?~Y!DYvMSA4#fXlL0UU=;E}M!iEqx986JYpcSx{M7a5boscm_Ui6^ z`T3x>>7T`+28N&amfT$ssq#UOZ;^1K&f&Kc5?&?We|GF_#e%Pl#>=gmw8BMyW&JA1 zf4w&%Zm-PA5+UJ>oa@v&w@f;>iggNi_Qb?6hMR#iCW=mbb@D~UH?FPsWnUbtUHkpv z;nQ|K^Ah;Wf7)(2?#jLWjoa+~yr4p7{Vsk61KIi8axHCF`vz=XQ52e3s=L)BF!|1| zl=-LC`M2=yvD{f)Bw+?>Q9SYCYCXKgbpjJBd!Zy}%z>;si6tv*)-D(Ozwo{N0p;TD z?AnDY9vL6Z5^DceTmW?TEu~`I{g50P2EgGf^BLpS)JS_eR zifg-T9}RQzqHe@{n|-fbz9w*i!VAtt>zDDDo89Z2wo2^CB*R!~ozGtyPjGzV?*uk`wW1F{-FGUr|YBft9jG^_m=3d`=OUt8T7Gl_ez>E0XHHu3Ur zv+vk!#}x5R3^`I3U9)L@g5c&NF^8qM44Nm~pEa+N-ng^S*lyDsef<6n#idEdw%vVkchl|%K^2M(Uy_e6akDzV^jL5+XqfTgH~!@8 z(_vfKZ#^uWS|1VBEBna1sl_T^_S%)T2Y>zg`r(9}&(Y;OzHp@)80*zdm)Fh?3)*nZ zCUl+FPp`{U@B6)-CDqDX>5!DBE$>y?bg43(Cqb%uBm3%y?#jQe?4Ja0s+Jy}>vcia zCBIaEn`!>xQ@5sm*jY2f&nGz6bz0=rML(_ExfE=lzs_~%Uvi{hc7E60Nz&P`uRm(M z#=c>1uJx{_*k5L)ZENGuTAHqL}#DE+9&&`PHS4u@`8s`wNbY> zI_Ir1f3LUP^kava_siVilzs&oWU&+BYF`;z@~>IMnQQlj{;Zw_?Ax8MwCEm#5qh2zb2mptCK% zs82=u)WgB+e%e>9{CH)-#p@l#o1bs`ci%Hk*YxzC(-+<>-d?(7=JTU(i>}|83Ua~E ziL=G0?6z97fn$~%PyXWrpLS2H4*R|~E?7_XQ{=?R#7(=(OyA}16o38t`r>=h{Uuht zH;=4&c~a#CXI5QSa%}c-FU2E4&u8aeKO+$>YOiwS^0H&TFZjx)+pKe7zjJ8OKmJUq z+TI-o)r}{WICR(acwg8Xz}FD=JMF{nzw5m3d9U}8pCQNo)J8$E;gq!Q$H~%S%tdnR zK9(OlFJoQ%raASy-tB7-@*kYGf0fYmP63qr?`)C$zV%-Fy9Dz+o5Vk#taPq)uG=2J zxySZAQ^%2?We0vuu1VXpbMLz{lkm)Xqvx(17QEi`*3WsKq+`~$@rA_3y2!hiQ>;4A z_RgO9CHBoE_q~gY!{c}C;+_KPrEBF+nKQq%y7|%dN1Kn&xBTap;=H7?^7$vZjY2&- zdMCH;D12P2`#rJrZk9=v^utN99I8&Pt1nlj>aVi>$^CtfUc;9yj>5K&j`O|e->|`@ zGBRQ2y5wGkL-8p);#npw2-Th_%F8F)z+gjd#Z2MNFP34@VvhZ4P_qkB)-UNcQPN=WWHgtMI@0-4_{go~-bETWZtS@D%+Fii=$-uh zo!=g9-Me50D5E@GxYbKXx#r5pu(Q5l!iPIQtW5XYTe|mK)rxfA^S`vpr$%U>XV`zc zUoBqPib*yibT^l@v{{n(V=;0tI z6(6sFMwD!?+D3%$=PNh6+qv(R-Iia`4~u^a__cNKdbgHKp(|!lM(_mcuVLkR zt&%wD^!L zPj}VbtDxLka?Y%7oO#7UllZs@PD-C_xY!1rStW|O7z=5 zTvrm>urRUt<-ZKWC|j$-zeivHcGLuQ#v5nF==CkBO>D!5!fA!zhb4Ope zeD#v*p`KO zLMZ`7b$V08r#K1bPY?>5#H`Qz#{ORYpMtm3ZdpfVM}5}*#@X>;qU{OofXo0E(+X(= z@%hm{uXIXcR+gFcZ%nM$7n*QK*(blc>h~P~Gs(`6*+lM4Yb$>5Z>ehkUh;Nx=M9#P z-zs+P+cL>5zjS?Ct>Ls2c{|_zJ%0bcnFgq>sd7Q-y6}>h&t9~{)&hic=-SQMc<{!Z zm-FYJ-4^HhF;HHKN}ykn(Lv}RPJ^!(x*;u^@r=aulAHa`#%42x8r4|c@4|| zr~MCJczK~^zzJrd$&(zob@M0O3%|x}Rh#hZ)k1mss@zT4L9brCjfj1^>XGujKsJvF zC8|!(=S}wBx?JjS@ZZSQhdnqI8qTRLPcyW(oUlqVWm&!Fqz${uwm$s4=D@Ar&PVuqIwEtp2Hz^RZuTU+=W+Z)pAA`0>Gy8xPjA@i#hwx&=)^BA?h+es1on zY!=Z7aJw&STm4~abNT=(o_ z9i8OuT5TD=5=(w*Tzwx?#5Y^oTv>bhx-)z2_uTyd?85AhWp6#}(p)V>k6nAVHYUew zjhaepmY;3yt4NT~nLGlxO8fj57R-p^5Y<_>qGjrntMT!+e-8fR|MqM9kL%m6ZoS&+ zlKEL9;FIt|#^AUGt3QW}e>c-An{)4*N&n&x$7a2peXPYZ>dy?{O@7*$TYldTe82j< ziOUlCsOQXYT$xTjf0*?`tItnP^;(=}#8cm;Q%%CItaIpHeyl{=)i86GiZ}1?`8WJk z!MP#uijqb+&(aC+Wlw$PP<5aD@Uy-3|9c;UkMoDGUB7GX+I?%MO`q!E*X*KX!Z2s1 zW%4e)2@@YPY_s0?y0K(whVyaJ7q@kHZ(NktnzwrnPxgENceXcdcS%qF=vn*R%H+?~ zh4;ey*Evkz`Asu6{DANWnZ0#ij!*nNu~Gmu&f$^3;`+FHAxq{~bC2Sq5pSY$-rYHW z?yZe&)vuDbZ?|qYXPwRD#3AWC?a7|53u%WE{$Bn&!~fiCt7~rzBaatrG-ZTznU%y$ z{P$e=^NmYeSSJP5+-dpVzNUd|sZ&MykGn_BD*fuz8l#Iq17pj~o+x<=9m_htj{k4g z3l6R)vu3$+C^SZHahY(7dC64eC0{>iJ>2~8w_roMY z*RA^V-{b|Wl~rMh;qir6HdfufQp(5f)G_UYVNs5z^dv8#*v55>9&*YZ=?{&#J)v5@ z&rjy))(fV!&o^zG>+pYJ2*>v=cbw}4n_MqD1+Dn?#dvvrTdRSDq5cE`2d32-svhFP z&aB@hX4_lZS3O!OoIi(muI!rV;PU9?1slC8TDm5?N!4w?Um$nkkfQfb|E(o^?W%GE7c4jx+B$E6?`_c;D&M2d`OoX$^X2yRds5!L3-@l^d(kuW zk*G#R?TgYQmp``F3x7EGLFQl30)?eZHtZ@hZF;w0<2TLt=_=m5?DH%>L{~J zIH1)!X-VEu?^|yi`_uVz;$;81HJ{J?n91E}+IaP>=~+j`7OurJ*;!tQIX+B@ z2%ofkp^ZHE_wH#Do3wXM`O&o@`mJk_U{2Nzm!p6;fB*f( zX>ZQ_Jn-s(lw!-4iK)Fd3J%*DW_9^K6?M`n+Y{$;SKGL$BSnwZ_haxWztZZBAw1gI z;m_VO9`F7UD8lOA*5_mQz4`gPJ0H!h>rA%RXEB_*bbpIb@TAGr>iY95ULA@4?f>51 z?50)Z^(!~7M7>@4tVr|4x{0xs+REGqi$84+w9(_gc5UYUI#qtAWv3_gJpA==wRzmm zLY|w&ZK^E{LKhsoIWnKJh(?(%Q*F6tSM}~i;PtHQUDJL|tMcu4Z&h-$Um1cKN>D@BiQZ{^rcZ znTk_B{BdJnWE>v9ud3j_@$WeMX5-+M(?Y7#bJMqqzL)oWe?BIO&)ThQitDG%7vDx7 zI%)7ObEkX#Z!^x_k(Jl#zs=lyKKW(krZ=oYn>!lRq7pZrkxo>b>3dpviDpX@^TwOp z`*&=3{Xm+%{K&5)-nF@FW&KWRE^v*~oWRcVLdYTf`T9pyKXxs&<6Zx&XoA2Z%^HTk zljnx*?kr(?{rdXsSK;~cRh>(dE8gF!4xj(;)#d+HKUTNbOInFa9X)hE|I;Jn4Ge z&a#yM+`sS7dOv%8US9UQPrLud?7H~&(CbfG&lwq2T`&B+`B|dBPx{^EE35SVS|_~J zHOdjOXAtmeE2#ea_Gk5hnFrpO_O~7nTK}&4>)-T$=hOEUzWTlVUPnxyk5crPBl&xi zEbkY$23%w6dXiye^X1lsjo<6P{9CQ=q|SD@_u;m4ZRe_NLmzuq)n};KM<48a@;oML zRn&!d`Q~@^d70idu*hY~livIHEb1P(v&Zdy zveV?{`%mjLxXePIoHCrgWTRnLo6zBl_E-B~{@Aj%y6j_7{~IB@hSHCd7oLl5zqTsu z@ZadCZ=T%zz`cIYhu72pUq1c6>g&|d80dEIx>)5uS!;?}H;cHUaQ z`1z?xJ+n{e#mW6U`@vJ-6tfVMM*@4-vGZAmOQs5kXqjwV@=tV0I{%qC>#tu{n)k)q z)Wt-u)5*@u$oq6c&Mqx-w#E#077QK7wd=QqSp@=X&;N<>V0qeh z@bkZI!IxLwI5As!Ip6;mAF|o?RSzQ6H5zmLJG(m~YJkzV&t{VP`crT;B^bG`TV=j+ecJm2^JP8)0CT+Y?A*74}tI51sHk&F7OzTYX)@UG|O zmp4mlUTj^M+&<6d%d4F~i<#Hyg_j4H2CwzjyYId)LoT3g&Pk<7fBxUL{`^2=opt~J zUDfX-Jr_$)Xi?$gER>MR@hi5tcVo8BLC)DqukY@d6w-HU-P|Rgjz8=FvvI0d=)W7Q z)`q+d^h?@pc3f>nYO}0$>IP1U+YSf#jHVxSYG@VUnsmXk+~2?az5L>7_x4o2Fa0ia z$)jris&(&XzO1}!9JK%Ex9{J7?-g%9H}Tw?yJ?XuQ-zj3__g5o%LUF`cT26hd-dD- z&O)8g@P~V?-}B1Vz5KB7`o5pHip&2MEH^ft)aA78#ze)-9}kL~{AuMtu2M9Bauej>^;7r>3*SG**7!fBp=!(Sa`~D~e>+^~I~cpXKiPDMs9>vVU#x zlbKIk1rl9kPV@7!e-0jeZuNid=dByRAIoc=7kW08L(=)i4MDq# z9o;HbB5zFhWc8S=U!eE>)WUn=)&Fb0nWy*H&G=Oiu`*1|G{j^|XVc$V9KP2dMEp1O zc;$JyHr@LBa)I30wQSp;v`u}g&0Xrn>L{clu|{f-T|vnMsRG6$Gusz9bxhUi7R#t(IwjPG8&~WB335^Z5N%6+G`&zrle`bRyVe8uCL=JVeFc8*Uk zQjlzWna##lWe_xSI=w7O9G>C5ir z{@3te^OSy>Bg3xFXg)g_c4a6uM3Lb?rnH?e$sB|UF)2K{0|*_)yryMx9_=~ zqOZkn{*wJnHzsiH++w=DO8s0-`&8wYXPlCjEE(?@bnQ=czL`H!orOWE;=sjU{cCs2 zRsC70e(TlkEbhQKo7o{dS39t9+jmXA|KaGw?t-)zJk{5ke0&2>IjxwWtSJ6##+tw1 z%-(LbF`vO_^86B**ud399so4d)v2uxOn#?zk)(H z$IME{7hikh55Fkw+t;^0f0r-kkzf1Q$M64mvUmR7d)xMk%3g2#vi(==`}Ygu;$MEn%mp1{7aF(pY>mC%I;Hd_ue-#)!6@ft@$16ZZ)qXCIfPeYj@F!X`EM^BX=GMo7nS?-qY+mizqIiLW13$B}aay&dL5O!3cE_d8R&N$zboj9DQ`owH$6l#l%Zb>$bm^|8HS0PQ zw?AoXP)>+Uk$Gv)WcyI=^jq=dMVDp@xE$q>yumwJq)M%F{*&hQ>;7nc{QbM)Px8*s zSmPb0eI;Tpe`dTjzx}R%u9;a# zZo_eDx$Sjzu4VN-W_)t?Kel?`-~FZ9qdm5Ff~L5`oXSp7#g=Zx#mYxczw}hyp2A(b z>9Ef2plv%IzwFx|w>$6cv16ay;x)S!9R(Jg3Y~gyTS4XiE1!jWPA%TnADHt=(A9XN zd}4OJ^z-DO>}8*1zHNWgUX}lM%H`sZr;eVM|NCySecwEZy}WNGUiV!3X2)x1A-gp; z)(UGPFRaUcd`r!8pHNEN?j^Hj!z}k+oTd=gF;DdTnu?Og>w4$E>M3J;oE7unoqwA2 z)puDxqHbT;*}we;(}{}zFYjGmzklEJuj>z#9IEx>ycok!_)KcaIid5yPRFGdKIOjX zl)S|H_)5N;dk@Lx{CE4k{F=>)vZBvM?N_vok#A17o;P=v zc+R%N@ov(4h4(7kS3gP5R+!7)GW|%j-GxK14qANX44Wr#+A00!iyhi6<{EM zB}QvX+;=Y$SC5Y3YEF53tfCH|tyI{K&5- zw~6M;_KNoYi#evG$-;M#QFL9`%Ht-9#yb3m56)|jJYTFhMeTaf3#V>*({+8P%Ac;j z*nN@v@%rBQ%Sur~MzInhUmonVH96k??8}DdFOB@Hi(_@x#N1vJqj)Rh@|IT@dS2h& zc}0?=#%{yW-wodb7y3lxlx;f7Q#*5SoX&T4hJ@s^ZWTEnlT{!8llb$k_rBfVhxYXq zET2v=&x*GdOIK{Z{i5uhjAwbjiDJqVA%V}WJ;{~VtF))Tjo-F7*ZKD0vtQ4Cbu2G% zJAUWT@}mlBr`+t@lxy8P-k(=zPuJsKICIX7N!#`>%h>oN;FH@Uw?|noTwXZ+Is8Lo zLadzjPFt0S&DKs~cjOe-q;suaCy>2@M?0xw8n?!e@4v!-mj5cZlAbf4fwQCV{m&Qw z7?!xV{QK0UKihQP^^I#AwtqZ#{QaI!$0q032!mX^+g7yQ`S`oJ%BLj{9Tn6L*UdtRHhbFJ*lmmVF0OTU4s{OQcsP|YU17D1oVe-qV|oWy9t^%>#uYf%RQyQ5zUF&R zwQEXT`_GS8>nlTvkn()jN6C`gi;ezoh<^9p8RX*RbvSjKuHk3=7it zq`&wndwzZMOGb;_=ZsV9-XD4R#80ohZ_OU2AoY`5E-K!Z6=HB$QM0Hh@^t*xoV>Rg zvAdU4dFJ+RU$%g6qIZeo%*{HlD?_f#k+b3zch{e_Ep&sYpSKH-Xckvfj8&Oz$%RQ# zK9a$C>hD!{E6<&{dg0@Ra$OG+TenB#_1}z%{vlJfWY4^tMb&GPrdh;(DXKcJ=O6sw zN&Bc=+2yHqh<}`ElyZ(dwrqyoPlViE|r%R=CZq zG|jF5$U~9&F-HYfK04ARP~`Azu0|*iV}rmAk%&8A%zdS!uWebAzbZc}==J)qPmHy; z8d}@D{<`?D`@^sw)7F}CpY-8eC)S;K zv*e@Yx{S-N7mBLa_~~`+wpse_Tg1`4MYV=iYt0_N_V<{B+CYh}d^J>3)4xFTN@6n7<=` zr)~30i5(Z#S!g{wGAa1D!T#=RS9VxUlJfnk&OW(ZD7G{D;pB(Xr#h6Jx1Dw>s?7MD zJW*?B26y(PgvSvKDG!aOyYP2L>Mt+PEx5{NCw=2-+{=4f6)mTdy5t*X7S@+sNbD@< ztjRn&-9!IbX^!@WTNc-g-+fqJ9sgJC$qe=*tODtZ&G#*(ZdbHxI&AAu# zlOzt^RZMa+t*g6dmhbv@@z&L^!mh8)$;gWclU=iJ<(KeZr{+Fo(&br}!S!d)@8>7l z&o6$JEmx-Oc6{~nFD+8R?pIb=E#lGs{-o~bx;whx-OszdU&VQK!)?Yj);3|T{MoZr zD?BW1i*1ig)!!-R8d2DK=JZSHxs3Pi?u&h|`mU#`U@D<*8h%H<`LFKpg-h44)*7x) zjy|}i_jl*-PyTZMJhd5)D74!w_<6m!(BfxuIL}3)l^?CWCwUy&URc;#e(6W74nw3& zWBJH-8l8B2k?adTOZnSe zVYeg~&c=T)DVcS{*TZKhWZ5Hgj9$jc*%&xioz>Qu7_-lsiE)Ux=P|X_pXCY0S7Aow)7j zgmtfHt$QJ8y0C4_4zZxcuXads-Yy{${c-Z_Tt=6w z{K@+{=S6*+ve7y2__n62W_{&y{||PqpHsnjDbc{0A@UUSsh!1-3&a?H@OL^?_%?hw zdTiJ1EsumIvP|N*+0>!Z7NIAY$(ZUBIJMYI=A5H_%6|!;higi!?w-Eu_&h1SHAHo) zH{(hDDwp|Brq?t@f8feHsJ>IR|AoNb2Mo&RYn!sc zXobrYIZKJq&U3pjyf5}#*mJdms#DHx`?0W4 zzm7k|m(??+|Ayh@N9+s-!e8EIm{}|Dvu-EDqXI6DU(T8W+dTWYwNu)-rK92mwBtLb z`S=#KM?B*2$bPy{DDa(jAj6B}am=TZg(QDlXwTKtXny%=i^dW)?WF;0zBQyNG1T`> z-P~+#qjJ1erOcyQ_)?3&TU(WlhhyhGa{m49!hhzdM_Z;ARh8r@COs;7`UQ0=4i zhXeno{f)ip_TBBfa?si+jz@x>Cy*rZ{$pVNq5)rm3^rGds=aK{^f&B z9FLef4xi+`)Y`h+rOlefVD9>4wGIzOlUV_qv|0)RU4+~iuC)ki>vTAaxSyIasmbt? zwoAr+NkdeK>aB%+{w|lGlyiadl4M+dbh^YeX{l zLhoO{d>f?xrT)nIG5z6pnbopa8_%%}dh2;ot@@lp$=b!F?73qQ7goX+?_ z^#0?0sqftH_FK)KJKMo!&Sj+pHM?JnYBy{x%Qo~sXy$kEW&4|dXM|!H3N2dOuQpy{ z5%kTuFliq5&I>FOo-z~9iE?D$Dh^9*t;$eTjMC^jgJV(ZBv_idGZkfyGLK9NOZ||-|dm@zAGf&$i_*@S^`~^QzSfoHr{SHb4Bwz~Hf{#p+RoL=UI9gN$EcVr`GPX)Onj zDCm6D+gNl$@}QzcQBgg^4u(esX;Rir90zu37zul>F_;~CvAON7$Mc5y$_eMATh$so zZZ9#IG}9n)r%6}~Z)W0L<(I`1<%*xNE!i*q>dB>5CtOaP`)|nIKk=F3WTE#eRl@I8 z-gQiU^#1Sfzq4cbcgP8@KKgXR?AuvfT7AD3)kZR9Y`Zi6wmg94N^1sdREp=Bt z)1l7}74x?Ai@G28x?PrdH}vwilV7*S%zs`GabaEHV=LFwFMADJKddZV)q=%mwKd?z~nR(Th9cobhq?M*M9in6tOJ@CZ0SqTaRT-{^YlH_32%!VglZ&^r@WFxIWc5X{Lm5 zbJE-gB1SQaQ=gcYhpQFaIa6M!}A8<~#mZ43Ve)Gd^JIIQ+1{V$RO4NK0F-jyKaTr$6OlY*<&e z`tYa1pUqEhpWN>BRdMg0eR~XF@L6@oa^JGPCvExVuJe8Q-9}~{mmeJ$aM<>_o*`|0 z%~X&VwtJ9rnA{ z9bS5Sdfxs&S5E(53#bX-EVK(Hn+E1diu4WujU-oc zi*o&MCx7Mry4LjItW#3?y}<%EHYqQ1`EqaJy@l(7V~?Nv|Km@gNB1n1C9-md{~F3D zIRBC0ypZv4(pvpakdtN3{W;X7?J|4rJk^#DA0m#u`7%Ls3k!q5spwP8Ykx;w57$|n z@nKqZv)=sE{8kP|(|Fw7ln*mMXSdt+_tV?F(7=l|Dy)|t9WSU)GI;yvNTUsd5;WEe zmM!R13|TYbh=8t3+B2@ymg5^(+1IBTAL$qT)pd9agOSjJ-aYcs3-y`p#3jI?$IX1p zCgsJOFH9-tou{#6f1dEL(uwbc-x0M=g)NtOWOtw7s9hKuzon5s_pq!2C`T2D>8%lv zjB`wT!u_y2)ZD}AmT6yVhxncp`O^9euJd9pT>3lb8OIYy%8}`tTU2FJC?)Eo(&)n7 zDfvJ-N_)af21#$BO~rLN?fX3BXMn?l?|9ZD6T58!dL0*@2MV^dALL}Bf(gTe~DWM4f&T!Af diff --git a/src/conversations/res/layout/activity_easy_invite.xml b/src/conversations/res/layout/activity_easy_invite.xml deleted file mode 100644 index 8bbf11c03..000000000 --- a/src/conversations/res/layout/activity_easy_invite.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -

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 diff --git a/src/conversations/res/drawable-xhdpi/splash_logo.png b/src/conversations/res/drawable-xhdpi/splash_logo.png deleted file mode 100644 index 9458b791c2369075087d76d7e0491bd354847e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23030 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 ZZrb--mz^zUGcYhPc)I$ztaD0e0s!22GUWgO diff --git a/src/conversations/res/drawable-xxhdpi/ic_notification.png b/src/conversations/res/drawable-xxhdpi/ic_notification.png deleted file mode 100644 index 6adbc8f648ad35bc7176b6ac5e6c989634068647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1619 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84mJh`hS0a0-5D4dSc;uILpV4%IBGajIv5xj zI14-?iy0W0gh7~b*5yYo3=9mCC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2 zNHH+5Uhs5r45^s&c1~`GXsE>T`u??HS`$|XihPe3vt~7;;e|7YJT69=1bZq)c3!#>Y97Ds@ArpydUroRcgNcJ zdum$x--CaP=2i+x@AoQAdggWOoC0CE6MH8e3oD-AY4>^3tj6;Vt5?0; zAw4Sn|v^e=XELCgc&sy+JUe_jVxL3${Fy&H0Z) zx^yNixp;srp~&a>CKvS!X=%}m!#Y$Z+{yW>oe<`9eA5xT2SLWawND*&Rx##4F}Je?c%9{5pJHN~*1kuz=Ed2^QD1!ip1EgqEYP(Jg( zc>lhADbp$)TOIo&tP2Y7-aRR2dmzL3wU*u+^Cp$KtUj4b!X+1R?l`9ZMSf%E5{cZi z443~f#V_ENe&P|f^ML*bR;`^069SDK{%pwg7VTZnI*qxW$++=&<3qvMatv|I+n63V zv^Tyq{1wN#=E%_xw;PUoZ1d5QXPmf2FR|jOZoRE?=BgN;y+ZXKR@YbGR>>?qvTr{B zj(#&wTh4cnJyaXb)HAkt=iS#>u{T`#O1wl+c}&Z$YSB%`8ZZB{d{?SGDe%u)|(jVUy~24TJ}epEO+<3owMZY(?iD=zrM5G zU;l#s`xD|Tx_@l(n)O&*tnJla!B_X?gX+`+G?zXt@(gDFCC7M2Y+?TVJmcUMp_jT^ z&gZr-dEI?0bJ~}{o?qUfQ|>FjEc2Wz`1;+n64$`HVxHMaUt-VH#S8yG{aNTk4Aax! zFAmf`Qy2bkTrF~=@wTVLfrX9s{J&Ha57%y)P@`8W#Tfio z!e_;zJo(*!nf}XuDdx43JTZkwAb!DGmFmFft)G}?M)C`2|5i-T`Oe)`CUV{Ez(k!- z<{z5lB~&gPcewG!%uP%L~@SxWqdFPuxwV1qsd*4^u8*XMzJa*wt-y!M0j&lxGE=#El z^ts8RWqiBgcKSKv)M9<@V+WpWdbRz5AKSBuatm&r;bWE5Rx6x!(=mbZo?mod#v#{4 zrp_sBF&57^tO%1!op3X;ZAIm!88@vRJUdj?W2DnOie@}5jR`RDpL1YuJKyiN6Ur<2 zjjNd=eD>M>cjmObB^s^3U>wbLhh1jjLDa!TGK-cObaCS?&b@KIC&2ofPR- zecNHsHSNl-|BS6mA}85t*!Vft%-GgH)8UeYr@z;&r<_;bpE>3*@5WV@olh>C-Eq9{ koA#~pl-^vG@IUPR0Y{pj-&rt$fq{X+)78&qol`;+0LcXKi2wiq diff --git a/src/conversations/res/drawable-xxhdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-xxhdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index 20d015751f5e7a7654fecd4d1beb6ccdb1033f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84i*LmhW}5h&oD4B`gyuIhEy=VJ#Xm6Tqw}` zv0lNY`2izS*L031g}6hPZt1nkIeZYf=g6uZ?V2O3+A5bI?YJ>sq{O~;uGOBFlM|Bm zUFYAgSv)m0a@xl8vZirY?-V=C+8*5-U6)b4z`O8{n*Wx&7cM%cyOgYJD$DFxk+`C9UFWMH z=31evyV<%{N16(7dIdDy@d|L=>b0P2?*Gt4g~nhFH!g-u8D-Xnl)i~f4o1g47!_tF zFJYK)#xRJ%5y|}chz$QIV>!v{`J2*U8NBfY77hv44$rjF6*2UngC0BoKye+ diff --git a/src/conversations/res/drawable-xxhdpi/main_logo.png b/src/conversations/res/drawable-xxhdpi/main_logo.png deleted file mode 100644 index cc091c437a05eeac10cd0e823a10a8667707d642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52900 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 Kb6Mw<&;$T|6j{Fj diff --git a/src/conversations/res/drawable-xxhdpi/splash_logo.png b/src/conversations/res/drawable-xxhdpi/splash_logo.png deleted file mode 100644 index 83c2abe6a7bb0d1ec76c00b6c991bc312b7b57e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36548 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 diff --git a/src/conversations/res/drawable-xxxhdpi/ic_notification.png b/src/conversations/res/drawable-xxxhdpi/ic_notification.png deleted file mode 100644 index 65d106b8c3bb408e7385900b93ff5481e9ce6e93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2117 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 diff --git a/src/conversations/res/drawable-xxxhdpi/splash_logo.png b/src/conversations/res/drawable-xxxhdpi/splash_logo.png deleted file mode 100644 index 349070ba2635f2f10f88b3a329b43587d0fdad6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50538 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