gitextract_qxi8ntma/ ├── .agents/ │ └── skills/ │ ├── archunit-rules/ │ │ └── SKILL.md │ ├── crypto/ │ │ └── SKILL.md │ ├── dto-mappers/ │ │ └── SKILL.md │ ├── flyway-migrations/ │ │ └── SKILL.md │ ├── gradle-build/ │ │ └── SKILL.md │ ├── java-conventions/ │ │ └── SKILL.md │ ├── javafx-patterns/ │ │ └── SKILL.md │ ├── junit-testing/ │ │ └── SKILL.md │ ├── spring-boot-patterns/ │ │ └── SKILL.md │ └── ui-testing/ │ └── SKILL.md ├── .aiignore ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yaml │ │ └── feature_request.yaml │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── analysis.yml │ ├── build-docker.yml │ ├── build-installer.yml │ ├── dependencies.yaml │ └── qodana_code_quality.yml ├── .gitignore ├── .run/ │ └── All Tests.run.xml ├── AGENTS.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── SandBox.wsb ├── app/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── xeres/ │ │ │ └── app/ │ │ │ ├── XeresApplication.java │ │ │ ├── api/ │ │ │ │ ├── DefaultHandler.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── board/ │ │ │ │ │ │ └── BoardController.java │ │ │ │ │ ├── channel/ │ │ │ │ │ │ └── ChannelController.java │ │ │ │ │ ├── chat/ │ │ │ │ │ │ ├── ChatController.java │ │ │ │ │ │ ├── ChatMessageController.java │ │ │ │ │ │ ├── doc-files/ │ │ │ │ │ │ │ └── websocket.puml │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── ConfigController.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── connection/ │ │ │ │ │ │ └── ConnectionController.java │ │ │ │ │ ├── contact/ │ │ │ │ │ │ └── ContactController.java │ │ │ │ │ ├── file/ │ │ │ │ │ │ └── FileController.java │ │ │ │ │ ├── forum/ │ │ │ │ │ │ └── ForumController.java │ │ │ │ │ ├── geoip/ │ │ │ │ │ │ └── GeoIpController.java │ │ │ │ │ ├── identity/ │ │ │ │ │ │ └── IdentityController.java │ │ │ │ │ ├── location/ │ │ │ │ │ │ └── LocationController.java │ │ │ │ │ ├── notification/ │ │ │ │ │ │ └── NotificationController.java │ │ │ │ │ ├── profile/ │ │ │ │ │ │ └── ProfileController.java │ │ │ │ │ ├── settings/ │ │ │ │ │ │ └── SettingsController.java │ │ │ │ │ ├── share/ │ │ │ │ │ │ └── ShareController.java │ │ │ │ │ ├── statistics/ │ │ │ │ │ │ ├── StatisticsController.java │ │ │ │ │ │ └── StatisticsMapper.java │ │ │ │ │ └── voip/ │ │ │ │ │ └── VoipMessageController.java │ │ │ │ ├── converter/ │ │ │ │ │ └── BufferedImageConverter.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── InternalServerErrorException.java │ │ │ │ │ └── UnprocessableEntityException.java │ │ │ │ └── package-info.java │ │ │ ├── application/ │ │ │ │ ├── SingleInstanceRun.java │ │ │ │ ├── Startup.java │ │ │ │ ├── autostart/ │ │ │ │ │ ├── AutoStart.java │ │ │ │ │ ├── AutoStarter.java │ │ │ │ │ └── autostarter/ │ │ │ │ │ ├── AutoStarterGeneric.java │ │ │ │ │ └── AutoStarterWindows.java │ │ │ │ ├── environment/ │ │ │ │ │ ├── Cloud.java │ │ │ │ │ ├── CommandArgument.java │ │ │ │ │ ├── DefaultProperties.java │ │ │ │ │ ├── HostVariable.java │ │ │ │ │ └── LocalPortFinder.java │ │ │ │ └── events/ │ │ │ │ ├── DhtNodeFoundEvent.java │ │ │ │ ├── IpChangedEvent.java │ │ │ │ ├── LocationReadyEvent.java │ │ │ │ ├── NetworkReadyEvent.java │ │ │ │ ├── PeerConnectedEvent.java │ │ │ │ ├── PeerDisconnectedEvent.java │ │ │ │ ├── SettingsChangedEvent.java │ │ │ │ ├── UpnpEvent.java │ │ │ │ └── package-info.java │ │ │ ├── configuration/ │ │ │ │ ├── AsynchronousEventsConfiguration.java │ │ │ │ ├── AutoStartConfiguration.java │ │ │ │ ├── CacheDirConfiguration.java │ │ │ │ ├── CustomCsrfChannelInterceptor.java │ │ │ │ ├── DataDirConfiguration.java │ │ │ │ ├── DataSourceConfiguration.java │ │ │ │ ├── EnumMappingConfiguration.java │ │ │ │ ├── GeoIpConfiguration.java │ │ │ │ ├── IdleTimeConfiguration.java │ │ │ │ ├── SchedulerConfiguration.java │ │ │ │ ├── SelfCertificateConfiguration.java │ │ │ │ ├── WebConfiguration.java │ │ │ │ ├── WebSecurityConfiguration.java │ │ │ │ ├── WebServerConfiguration.java │ │ │ │ ├── WebSocketConfiguration.java │ │ │ │ ├── WebSocketLoggingConfiguration.java │ │ │ │ ├── WebSocketMessageBrokerConfiguration.java │ │ │ │ └── WebSocketSecurityConfiguration.java │ │ │ ├── crypto/ │ │ │ │ ├── aead/ │ │ │ │ │ └── AEAD.java │ │ │ │ ├── aes/ │ │ │ │ │ └── AES.java │ │ │ │ ├── dh/ │ │ │ │ │ └── DiffieHellman.java │ │ │ │ ├── ec/ │ │ │ │ │ └── Ed25519.java │ │ │ │ ├── hash/ │ │ │ │ │ ├── AbstractMessageDigest.java │ │ │ │ │ ├── chat/ │ │ │ │ │ │ └── ChatChallenge.java │ │ │ │ │ ├── sha1/ │ │ │ │ │ │ └── Sha1MessageDigest.java │ │ │ │ │ └── sha256/ │ │ │ │ │ └── Sha256MessageDigest.java │ │ │ │ ├── hmac/ │ │ │ │ │ ├── AbstractHMac.java │ │ │ │ │ ├── sha1/ │ │ │ │ │ │ └── Sha1HMac.java │ │ │ │ │ └── sha256/ │ │ │ │ │ └── Sha256HMac.java │ │ │ │ ├── pgp/ │ │ │ │ │ ├── PGP.java │ │ │ │ │ ├── PGPSigner.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── rsa/ │ │ │ │ │ └── RSA.java │ │ │ │ ├── rscrypto/ │ │ │ │ │ ├── RsCrypto.java │ │ │ │ │ └── doc-files/ │ │ │ │ │ └── format.puml │ │ │ │ ├── rsid/ │ │ │ │ │ ├── RSCertificate.java │ │ │ │ │ ├── RSId.java │ │ │ │ │ ├── RSIdArmor.java │ │ │ │ │ ├── RSIdBuilder.java │ │ │ │ │ ├── RSIdCrc.java │ │ │ │ │ ├── RSSerialVersion.java │ │ │ │ │ └── ShortInvite.java │ │ │ │ └── x509/ │ │ │ │ └── X509.java │ │ │ ├── database/ │ │ │ │ ├── DatabaseSession.java │ │ │ │ ├── DatabaseSessionManager.java │ │ │ │ ├── converter/ │ │ │ │ │ ├── AvailabilityConverter.java │ │ │ │ │ ├── EnumConverter.java │ │ │ │ │ ├── EnumSetConverter.java │ │ │ │ │ ├── FileTypeConverter.java │ │ │ │ │ ├── GxsCircleTypeConverter.java │ │ │ │ │ ├── GxsPrivacyFlagsConverter.java │ │ │ │ │ ├── GxsSignatureFlagsConverter.java │ │ │ │ │ ├── IdentityTypeConverter.java │ │ │ │ │ ├── NetModeConverter.java │ │ │ │ │ ├── PeerAddressTypeConverter.java │ │ │ │ │ ├── SecurityKeyFlagsConverter.java │ │ │ │ │ ├── SignatureTypeConverter.java │ │ │ │ │ ├── TrustConverter.java │ │ │ │ │ └── VoteTypeConverter.java │ │ │ │ ├── model/ │ │ │ │ │ ├── board/ │ │ │ │ │ │ └── BoardMapper.java │ │ │ │ │ ├── channel/ │ │ │ │ │ │ └── ChannelMapper.java │ │ │ │ │ ├── chat/ │ │ │ │ │ │ ├── ChatBacklog.java │ │ │ │ │ │ ├── ChatMapper.java │ │ │ │ │ │ ├── ChatRoom.java │ │ │ │ │ │ ├── ChatRoomBacklog.java │ │ │ │ │ │ └── DistantChatBacklog.java │ │ │ │ │ ├── connection/ │ │ │ │ │ │ ├── Connection.java │ │ │ │ │ │ └── ConnectionMapper.java │ │ │ │ │ ├── file/ │ │ │ │ │ │ ├── File.java │ │ │ │ │ │ └── FileDownload.java │ │ │ │ │ ├── forum/ │ │ │ │ │ │ ├── ForumMapper.java │ │ │ │ │ │ └── ForumMessageItemSummary.java │ │ │ │ │ ├── gxs/ │ │ │ │ │ │ ├── GxsCircleType.java │ │ │ │ │ │ ├── GxsClientUpdate.java │ │ │ │ │ │ ├── GxsConstants.java │ │ │ │ │ │ ├── GxsGroupItem.java │ │ │ │ │ │ ├── GxsMessageItem.java │ │ │ │ │ │ ├── GxsMetaAndData.java │ │ │ │ │ │ ├── GxsPrivacyFlags.java │ │ │ │ │ │ ├── GxsServiceSetting.java │ │ │ │ │ │ └── GxsSignatureFlags.java │ │ │ │ │ ├── identity/ │ │ │ │ │ │ └── IdentityMapper.java │ │ │ │ │ ├── location/ │ │ │ │ │ │ ├── Location.java │ │ │ │ │ │ └── LocationMapper.java │ │ │ │ │ ├── profile/ │ │ │ │ │ │ ├── Profile.java │ │ │ │ │ │ └── ProfileMapper.java │ │ │ │ │ ├── settings/ │ │ │ │ │ │ ├── Settings.java │ │ │ │ │ │ └── SettingsMapper.java │ │ │ │ │ └── share/ │ │ │ │ │ ├── Share.java │ │ │ │ │ └── ShareMapper.java │ │ │ │ └── repository/ │ │ │ │ ├── ChatBacklogRepository.java │ │ │ │ ├── ChatRoomBacklogRepository.java │ │ │ │ ├── ChatRoomRepository.java │ │ │ │ ├── DistantChatBacklogRepository.java │ │ │ │ ├── FileDownloadRepository.java │ │ │ │ ├── FileRepository.java │ │ │ │ ├── GxsBoardGroupRepository.java │ │ │ │ ├── GxsBoardMessageRepository.java │ │ │ │ ├── GxsChannelGroupRepository.java │ │ │ │ ├── GxsChannelMessageRepository.java │ │ │ │ ├── GxsClientUpdateRepository.java │ │ │ │ ├── GxsCommentMessageRepository.java │ │ │ │ ├── GxsForumGroupRepository.java │ │ │ │ ├── GxsForumMessageRepository.java │ │ │ │ ├── GxsGroupItemRepository.java │ │ │ │ ├── GxsIdentityRepository.java │ │ │ │ ├── GxsMessageItemRepository.java │ │ │ │ ├── GxsServiceSettingRepository.java │ │ │ │ ├── GxsVoteMessageRepository.java │ │ │ │ ├── LocationRepository.java │ │ │ │ ├── ProfileRepository.java │ │ │ │ ├── SettingsRepository.java │ │ │ │ └── ShareRepository.java │ │ │ ├── job/ │ │ │ │ ├── DhtFinderJob.java │ │ │ │ ├── FileIndexingJob.java │ │ │ │ ├── IdleDetectionJob.java │ │ │ │ ├── JobUtils.java │ │ │ │ └── PeerConnectionJob.java │ │ │ ├── net/ │ │ │ │ ├── bdisc/ │ │ │ │ │ ├── BroadcastDiscoveryService.java │ │ │ │ │ ├── ProtocolVersion.java │ │ │ │ │ ├── UdpDiscoveryPeer.java │ │ │ │ │ └── UdpDiscoveryProtocol.java │ │ │ │ ├── dht/ │ │ │ │ │ ├── DHTSpringLog.java │ │ │ │ │ ├── DhtService.java │ │ │ │ │ ├── NodeId.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── external/ │ │ │ │ │ └── ExternalIpResolver.java │ │ │ │ ├── peer/ │ │ │ │ │ ├── ConnectionType.java │ │ │ │ │ ├── DefaultItemFuture.java │ │ │ │ │ ├── ItemFuture.java │ │ │ │ │ ├── PeerAttribute.java │ │ │ │ │ ├── PeerConnection.java │ │ │ │ │ ├── PeerConnectionManager.java │ │ │ │ │ ├── bootstrap/ │ │ │ │ │ │ ├── PeerClient.java │ │ │ │ │ │ ├── PeerI2pClient.java │ │ │ │ │ │ ├── PeerInitializer.java │ │ │ │ │ │ ├── PeerServer.java │ │ │ │ │ │ ├── PeerTcpClient.java │ │ │ │ │ │ ├── PeerTcpServer.java │ │ │ │ │ │ └── PeerTorClient.java │ │ │ │ │ ├── packet/ │ │ │ │ │ │ ├── MultiPacket.java │ │ │ │ │ │ ├── Packet.java │ │ │ │ │ │ ├── SimplePacket.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── pipeline/ │ │ │ │ │ │ ├── IdleEventHandler.java │ │ │ │ │ │ ├── ItemDecoder.java │ │ │ │ │ │ ├── ItemEncoder.java │ │ │ │ │ │ ├── MultiPacketEncoder.java │ │ │ │ │ │ ├── PacketDecoder.java │ │ │ │ │ │ ├── PeerHandler.java │ │ │ │ │ │ ├── SimplePacketEncoder.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── ssl/ │ │ │ │ │ └── SSL.java │ │ │ │ ├── protocol/ │ │ │ │ │ ├── DomainNameSocketAddress.java │ │ │ │ │ └── PeerAddress.java │ │ │ │ ├── upnp/ │ │ │ │ │ ├── ControlPoint.java │ │ │ │ │ ├── Device.java │ │ │ │ │ ├── DeviceSpecs.java │ │ │ │ │ ├── HttpuHeader.java │ │ │ │ │ ├── PortMapping.java │ │ │ │ │ ├── Protocol.java │ │ │ │ │ ├── Soap.java │ │ │ │ │ ├── UPNPService.java │ │ │ │ │ └── package-info.java │ │ │ │ └── util/ │ │ │ │ └── NetworkMode.java │ │ │ ├── package-info.java │ │ │ ├── properties/ │ │ │ │ ├── DatabaseProperties.java │ │ │ │ └── NetworkProperties.java │ │ │ ├── service/ │ │ │ │ ├── BoardMessageService.java │ │ │ │ ├── CapabilityService.java │ │ │ │ ├── ChannelMessageService.java │ │ │ │ ├── ContactService.java │ │ │ │ ├── ForumMessageService.java │ │ │ │ ├── GeoIpService.java │ │ │ │ ├── IdentityService.java │ │ │ │ ├── InfoService.java │ │ │ │ ├── LocationService.java │ │ │ │ ├── MessageService.java │ │ │ │ ├── NetworkService.java │ │ │ │ ├── PeerService.java │ │ │ │ ├── ProfileService.java │ │ │ │ ├── QrCodeService.java │ │ │ │ ├── ResourceCreationState.java │ │ │ │ ├── SettingsService.java │ │ │ │ ├── UiBridgeService.java │ │ │ │ ├── UnHtmlService.java │ │ │ │ ├── UpgradeService.java │ │ │ │ ├── audio/ │ │ │ │ │ └── AudioService.java │ │ │ │ ├── backup/ │ │ │ │ │ ├── BackupService.java │ │ │ │ │ ├── Export.java │ │ │ │ │ ├── Group.java │ │ │ │ │ ├── Identity.java │ │ │ │ │ ├── Local.java │ │ │ │ │ ├── Location.java │ │ │ │ │ ├── LocationIdentifierXmlAdapter.java │ │ │ │ │ ├── PgpId.java │ │ │ │ │ ├── Profile.java │ │ │ │ │ ├── RSIdXmlAdapter.java │ │ │ │ │ ├── Root.java │ │ │ │ │ └── SslId.java │ │ │ │ ├── file/ │ │ │ │ │ ├── FileService.java │ │ │ │ │ ├── HashBloomFilter.java │ │ │ │ │ └── TrackingFileVisitor.java │ │ │ │ ├── identicon/ │ │ │ │ │ └── IdenticonService.java │ │ │ │ ├── notification/ │ │ │ │ │ ├── NotificationService.java │ │ │ │ │ ├── availability/ │ │ │ │ │ │ └── AvailabilityNotificationService.java │ │ │ │ │ ├── board/ │ │ │ │ │ │ └── BoardNotificationService.java │ │ │ │ │ ├── channel/ │ │ │ │ │ │ └── ChannelNotificationService.java │ │ │ │ │ ├── contact/ │ │ │ │ │ │ └── ContactNotificationService.java │ │ │ │ │ ├── file/ │ │ │ │ │ │ ├── FileNotificationService.java │ │ │ │ │ │ ├── FileSearchNotificationService.java │ │ │ │ │ │ └── FileTrendNotificationService.java │ │ │ │ │ ├── forum/ │ │ │ │ │ │ └── ForumNotificationService.java │ │ │ │ │ └── status/ │ │ │ │ │ └── StatusNotificationService.java │ │ │ │ ├── script/ │ │ │ │ │ ├── Console.java │ │ │ │ │ ├── ScriptEvent.java │ │ │ │ │ └── ScriptService.java │ │ │ │ └── shell/ │ │ │ │ ├── History.java │ │ │ │ └── ShellService.java │ │ │ ├── util/ │ │ │ │ ├── DevUtils.java │ │ │ │ ├── GxsUtils.java │ │ │ │ ├── XmlUtils.java │ │ │ │ └── expression/ │ │ │ │ ├── CompoundExpression.java │ │ │ │ ├── DateExpression.java │ │ │ │ ├── Expression.java │ │ │ │ ├── ExpressionMapper.java │ │ │ │ ├── ExpressionType.java │ │ │ │ ├── ExtensionExpression.java │ │ │ │ ├── HashExpression.java │ │ │ │ ├── NameExpression.java │ │ │ │ ├── PathExpression.java │ │ │ │ ├── PopularityExpression.java │ │ │ │ ├── RelationalExpression.java │ │ │ │ ├── SizeExpression.java │ │ │ │ ├── SizeMbExpression.java │ │ │ │ └── StringExpression.java │ │ │ └── xrs/ │ │ │ ├── common/ │ │ │ │ ├── CommentMessageItem.java │ │ │ │ ├── FileData.java │ │ │ │ ├── FileItem.java │ │ │ │ ├── FileSet.java │ │ │ │ ├── SecurityKey.java │ │ │ │ ├── Signature.java │ │ │ │ └── VoteMessageItem.java │ │ │ ├── item/ │ │ │ │ ├── Item.java │ │ │ │ ├── ItemHeader.java │ │ │ │ ├── ItemPriority.java │ │ │ │ ├── ItemUtils.java │ │ │ │ └── RawItem.java │ │ │ ├── serialization/ │ │ │ │ ├── AnnotationSerializer.java │ │ │ │ ├── ArraySerializer.java │ │ │ │ ├── BigIntegerSerializer.java │ │ │ │ ├── BooleanSerializer.java │ │ │ │ ├── ByteArraySerializer.java │ │ │ │ ├── ByteSerializer.java │ │ │ │ ├── DoubleSerializer.java │ │ │ │ ├── EnumSerializer.java │ │ │ │ ├── EnumSetSerializer.java │ │ │ │ ├── FieldSize.java │ │ │ │ ├── FloatSerializer.java │ │ │ │ ├── GxsMetaAndDataResult.java │ │ │ │ ├── GxsMetaAndDataSerializer.java │ │ │ │ ├── IdentifierSerializer.java │ │ │ │ ├── IntSerializer.java │ │ │ │ ├── ListSerializer.java │ │ │ │ ├── LongSerializer.java │ │ │ │ ├── MapSerializer.java │ │ │ │ ├── RsClassSerializedReversed.java │ │ │ │ ├── RsSerializable.java │ │ │ │ ├── RsSerializableSerializer.java │ │ │ │ ├── RsSerialized.java │ │ │ │ ├── SerializationFlags.java │ │ │ │ ├── Serializer.java │ │ │ │ ├── SerializerSizeCache.java │ │ │ │ ├── ShortSerializer.java │ │ │ │ ├── StringSerializer.java │ │ │ │ ├── TlvAddressSerializer.java │ │ │ │ ├── TlvBinarySerializer.java │ │ │ │ ├── TlvFileDataSerializer.java │ │ │ │ ├── TlvFileItemSerializer.java │ │ │ │ ├── TlvFileSetSerializer.java │ │ │ │ ├── TlvImageSerializer.java │ │ │ │ ├── TlvSecurityKeySerializer.java │ │ │ │ ├── TlvSecurityKeySetSerializer.java │ │ │ │ ├── TlvSerializer.java │ │ │ │ ├── TlvSetSerializer.java │ │ │ │ ├── TlvSignatureSerializer.java │ │ │ │ ├── TlvSignatureSetSerializer.java │ │ │ │ ├── TlvStringSerializer.java │ │ │ │ ├── TlvStringSetRefSerializer.java │ │ │ │ ├── TlvType.java │ │ │ │ ├── TlvUint32Serializer.java │ │ │ │ ├── TlvUint64Serializer.java │ │ │ │ └── TlvUtils.java │ │ │ └── service/ │ │ │ ├── DefaultItem.java │ │ │ ├── RsService.java │ │ │ ├── RsServiceInitPriority.java │ │ │ ├── RsServiceMaster.java │ │ │ ├── RsServiceRegistry.java │ │ │ ├── RsServiceSlave.java │ │ │ ├── bandwidth/ │ │ │ │ ├── BandwidthRsService.java │ │ │ │ ├── BandwidthUtils.java │ │ │ │ └── item/ │ │ │ │ └── BandwidthAllowedItem.java │ │ │ ├── board/ │ │ │ │ ├── BoardRsService.java │ │ │ │ └── item/ │ │ │ │ ├── BoardGroupItem.java │ │ │ │ └── BoardMessageItem.java │ │ │ ├── channel/ │ │ │ │ ├── ChannelRsService.java │ │ │ │ └── item/ │ │ │ │ ├── ChannelGroupItem.java │ │ │ │ └── ChannelMessageItem.java │ │ │ ├── chat/ │ │ │ │ ├── ChatBacklogService.java │ │ │ │ ├── ChatFlags.java │ │ │ │ ├── ChatRoom.java │ │ │ │ ├── ChatRoomService.java │ │ │ │ ├── ChatRsService.java │ │ │ │ ├── DistantLocation.java │ │ │ │ ├── MessageCache.java │ │ │ │ ├── RoomFlags.java │ │ │ │ └── item/ │ │ │ │ ├── ChatAvatarItem.java │ │ │ │ ├── ChatMessageItem.java │ │ │ │ ├── ChatRoomBounce.java │ │ │ │ ├── ChatRoomConfigItem.java │ │ │ │ ├── ChatRoomConnectChallengeItem.java │ │ │ │ ├── ChatRoomEvent.java │ │ │ │ ├── ChatRoomEventItem.java │ │ │ │ ├── ChatRoomInviteItem.java │ │ │ │ ├── ChatRoomInviteOldItem.java │ │ │ │ ├── ChatRoomListItem.java │ │ │ │ ├── ChatRoomListRequestItem.java │ │ │ │ ├── ChatRoomMessageItem.java │ │ │ │ ├── ChatRoomUnsubscribeItem.java │ │ │ │ ├── ChatStatusItem.java │ │ │ │ ├── PrivateChatMessageConfigItem.java │ │ │ │ ├── PrivateOutgoingMapItem.java │ │ │ │ ├── SubscribedChatRoomConfigItem.java │ │ │ │ └── VisibleChatRoomInfo.java │ │ │ ├── discovery/ │ │ │ │ ├── DiscoveryRsService.java │ │ │ │ └── item/ │ │ │ │ ├── DiscoveryContactItem.java │ │ │ │ ├── DiscoveryIdentityListItem.java │ │ │ │ ├── DiscoveryPgpKeyItem.java │ │ │ │ └── DiscoveryPgpListItem.java │ │ │ ├── filetransfer/ │ │ │ │ ├── Action.java │ │ │ │ ├── ActionAddPeer.java │ │ │ │ ├── ActionDownload.java │ │ │ │ ├── ActionGetDownloadsProgress.java │ │ │ │ ├── ActionGetUploadsProgress.java │ │ │ │ ├── ActionReceiveChunkMap.java │ │ │ │ ├── ActionReceiveChunkMapRequest.java │ │ │ │ ├── ActionReceiveData.java │ │ │ │ ├── ActionReceiveDataRequest.java │ │ │ │ ├── ActionReceiveSingleChunkCrc.java │ │ │ │ ├── ActionReceiveSingleChunkCrcRequest.java │ │ │ │ ├── ActionRemoveDownload.java │ │ │ │ ├── ActionRemovePeer.java │ │ │ │ ├── Chunk.java │ │ │ │ ├── ChunkDistributor.java │ │ │ │ ├── ChunkMapUtils.java │ │ │ │ ├── ChunkReceiver.java │ │ │ │ ├── FileDownload.java │ │ │ │ ├── FileLeecher.java │ │ │ │ ├── FilePeer.java │ │ │ │ ├── FileProvider.java │ │ │ │ ├── FileSeeder.java │ │ │ │ ├── FileTransferAgent.java │ │ │ │ ├── FileTransferEncryptionKey.java │ │ │ │ ├── FileTransferManager.java │ │ │ │ ├── FileTransferRsService.java │ │ │ │ ├── FileTransferStrategy.java │ │ │ │ ├── FileUpload.java │ │ │ │ ├── SliceSender.java │ │ │ │ ├── doc-files/ │ │ │ │ │ └── filetransfer.puml │ │ │ │ └── item/ │ │ │ │ ├── FileTransferChunkMapItem.java │ │ │ │ ├── FileTransferChunkMapRequestItem.java │ │ │ │ ├── FileTransferDataItem.java │ │ │ │ ├── FileTransferDataRequestItem.java │ │ │ │ ├── FileTransferSingleChunkCrcItem.java │ │ │ │ ├── FileTransferSingleChunkCrcRequestItem.java │ │ │ │ ├── TurtleChunkCrcItem.java │ │ │ │ ├── TurtleChunkCrcRequestItem.java │ │ │ │ ├── TurtleFileDataItem.java │ │ │ │ ├── TurtleFileMapItem.java │ │ │ │ ├── TurtleFileMapRequestItem.java │ │ │ │ └── TurtleFileRequestItem.java │ │ │ ├── forum/ │ │ │ │ ├── ForumRsService.java │ │ │ │ └── item/ │ │ │ │ ├── ForumGroupItem.java │ │ │ │ └── ForumMessageItem.java │ │ │ ├── gxs/ │ │ │ │ ├── GxsAuthentication.java │ │ │ │ ├── GxsHelperService.java │ │ │ │ ├── GxsRsService.java │ │ │ │ ├── GxsTransactionManager.java │ │ │ │ ├── Transaction.java │ │ │ │ ├── doc-files/ │ │ │ │ │ ├── transaction.puml │ │ │ │ │ └── transfer.puml │ │ │ │ └── item/ │ │ │ │ ├── DynamicServiceType.java │ │ │ │ ├── GxsExchange.java │ │ │ │ ├── GxsSyncGroupItem.java │ │ │ │ ├── GxsSyncGroupRequestItem.java │ │ │ │ ├── GxsSyncGroupStatsItem.java │ │ │ │ ├── GxsSyncMessageItem.java │ │ │ │ ├── GxsSyncMessageRequestItem.java │ │ │ │ ├── GxsSyncNotifyItem.java │ │ │ │ ├── GxsTransactionItem.java │ │ │ │ ├── GxsTransferGroupItem.java │ │ │ │ ├── GxsTransferMessageItem.java │ │ │ │ ├── RequestType.java │ │ │ │ └── TransactionFlags.java │ │ │ ├── gxstunnel/ │ │ │ │ ├── DestinationHash.java │ │ │ │ ├── GxsTunnelRsClient.java │ │ │ │ ├── GxsTunnelRsService.java │ │ │ │ ├── GxsTunnelStatus.java │ │ │ │ ├── TunnelDhInfo.java │ │ │ │ ├── TunnelPeerInfo.java │ │ │ │ ├── VirtualLocation.java │ │ │ │ └── item/ │ │ │ │ ├── GxsTunnelDataAckItem.java │ │ │ │ ├── GxsTunnelDataItem.java │ │ │ │ ├── GxsTunnelDhPublicKeyItem.java │ │ │ │ ├── GxsTunnelItem.java │ │ │ │ └── GxsTunnelStatusItem.java │ │ │ ├── heartbeat/ │ │ │ │ ├── HeartbeatRsService.java │ │ │ │ └── item/ │ │ │ │ └── HeartbeatItem.java │ │ │ ├── identity/ │ │ │ │ ├── IdentityManager.java │ │ │ │ ├── IdentityReputation.java │ │ │ │ ├── IdentityRsService.java │ │ │ │ ├── ValidationResult.java │ │ │ │ ├── ValidationState.java │ │ │ │ └── item/ │ │ │ │ └── IdentityGroupItem.java │ │ │ ├── rtt/ │ │ │ │ ├── RttRsService.java │ │ │ │ └── item/ │ │ │ │ ├── RttPingItem.java │ │ │ │ └── RttPongItem.java │ │ │ ├── serviceinfo/ │ │ │ │ ├── ServiceInfoRsService.java │ │ │ │ └── item/ │ │ │ │ ├── ServiceInfo.java │ │ │ │ └── ServiceListItem.java │ │ │ ├── sliceprobe/ │ │ │ │ ├── SliceProbeRsService.java │ │ │ │ └── item/ │ │ │ │ └── SliceProbeItem.java │ │ │ ├── status/ │ │ │ │ ├── ChatStatus.java │ │ │ │ ├── GetIdleTime.java │ │ │ │ ├── IdleChecker.java │ │ │ │ ├── StatusRsService.java │ │ │ │ ├── idletimer/ │ │ │ │ │ ├── GetIdleTimeGeneric.java │ │ │ │ │ ├── GetIdleTimeLinux.java │ │ │ │ │ ├── GetIdleTimeMac.java │ │ │ │ │ └── GetIdleTimeWindows.java │ │ │ │ └── item/ │ │ │ │ └── StatusItem.java │ │ │ ├── turtle/ │ │ │ │ ├── HashInfo.java │ │ │ │ ├── SearchRequest.java │ │ │ │ ├── Tunnel.java │ │ │ │ ├── TunnelProbability.java │ │ │ │ ├── TunnelRequest.java │ │ │ │ ├── TurtleRouter.java │ │ │ │ ├── TurtleRsClient.java │ │ │ │ ├── TurtleRsService.java │ │ │ │ ├── TurtleStatistics.java │ │ │ │ ├── VirtualLocation.java │ │ │ │ ├── doc-files/ │ │ │ │ │ └── search.puml │ │ │ │ └── item/ │ │ │ │ ├── TunnelDirection.java │ │ │ │ ├── TurtleFileInfo.java │ │ │ │ ├── TurtleFileSearchRequestItem.java │ │ │ │ ├── TurtleFileSearchResultItem.java │ │ │ │ ├── TurtleGenericDataItem.java │ │ │ │ ├── TurtleGenericFastDataItem.java │ │ │ │ ├── TurtleGenericSearchRequestItem.java │ │ │ │ ├── TurtleGenericSearchResultItem.java │ │ │ │ ├── TurtleGenericTunnelItem.java │ │ │ │ ├── TurtleRegExpSearchRequestItem.java │ │ │ │ ├── TurtleSearchRequestItem.java │ │ │ │ ├── TurtleSearchResultItem.java │ │ │ │ ├── TurtleStringSearchRequestItem.java │ │ │ │ ├── TurtleTunnelRequestItem.java │ │ │ │ └── TurtleTunnelResultItem.java │ │ │ └── voip/ │ │ │ ├── LockBasedSingleEntrySupplier.java │ │ │ ├── VoipRsService.java │ │ │ └── item/ │ │ │ ├── VoipDataItem.java │ │ │ ├── VoipPingItem.java │ │ │ ├── VoipPongItem.java │ │ │ └── VoipProtocolItem.java │ │ ├── javadoc/ │ │ │ └── overview.html │ │ └── resources/ │ │ ├── GeoLite2-Country.mmdb │ │ ├── LICENSE │ │ ├── META-INF/ │ │ │ └── additional-spring-configuration-metadata.json │ │ ├── application-cloud.properties │ │ ├── application-dev.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bdboot.txt │ │ ├── db/ │ │ │ └── migration/ │ │ │ ├── V00_0_10_202407122208__AlterFileDownloadCompleted.sql │ │ │ ├── V00_0_11_202408021538__AddEncryptedHashes.sql │ │ │ ├── V00_0_12_202408021849__AddEncryptedHashIndex.sql │ │ │ ├── V00_0_13_202408121618__AddLocationToFileDownload.sql │ │ │ ├── V00_0_14_202408221303__AddAvailabilityToLocation.sql │ │ │ ├── V00_0_15_202409220053__AddChatBacklog.sql │ │ │ ├── V00_0_16_202410061715__AddProfileValidation.sql │ │ │ ├── V00_0_17_202410112205__AddProfileCreation.sql │ │ │ ├── V00_0_18_202410201950__AddLocationVersion.sql │ │ │ ├── V00_0_19_202411171309__AddExtendedFingerprint.sql │ │ │ ├── V00_0_1_202001232214__InitDb.sql │ │ │ ├── V00_0_20_202411212150__AlterShareLastScanned.sql │ │ │ ├── V00_0_21_202412142109__AddRemoteOptions.sql │ │ │ ├── V00_0_22_202412211327__AddRemotePort.sql │ │ │ ├── V00_0_23_202412242306__AddChatRoomLocations.sql │ │ │ ├── V00_0_24_202502252128__AddDistantChatBacklog.sql │ │ │ ├── V00_0_25_202504051643__AcceptNullNamedLocations.sql │ │ │ ├── V00_0_26_202504152033__AdjustBacklogMessageSizes.sql │ │ │ ├── V00_0_27_202511240013__AddBoards.sql │ │ │ ├── V00_0_28_202511281815__AddChannels.sql │ │ │ ├── V00_0_29_202512212323__FixGxsSizeLimits.sql │ │ │ ├── V00_0_2_202312151830__AddIncomingDirectory.sql │ │ │ ├── V00_0_30_202602161830__ImproveGxsGroupsAndMessage.sql │ │ │ ├── V00_0_31_202602121929__AddLastActivity.sql │ │ │ ├── V00_0_32_202603092327__AddIndices.sql │ │ │ ├── V00_0_33_202604260021__FixVotes.sql │ │ │ ├── V00_0_3_202401151840__AddSharesAndFiles.sql │ │ │ ├── V00_0_4_202402211850__AlterTimestampPrecision.sql │ │ │ ├── V00_0_5_202405122038__AddSizeToFiles.sql │ │ │ ├── V00_0_6_202405242209__AddNewFileEnumTypes.sql │ │ │ ├── V00_0_7_202406181840__AddFileDownload.sql │ │ │ ├── V00_0_8_202406191850__AddRemotePassword.sql │ │ │ └── V00_0_9_202406201855__AddSettingsVersion.sql │ │ ├── public/ │ │ │ └── index.html │ │ └── public.asc │ └── test/ │ ├── java/ │ │ └── io/ │ │ └── xeres/ │ │ ├── app/ │ │ │ ├── ApiTest.java │ │ │ ├── AppCodingRulesTest.java │ │ │ ├── api/ │ │ │ │ └── controller/ │ │ │ │ ├── AbstractControllerTest.java │ │ │ │ ├── PathConfigTest.java │ │ │ │ ├── board/ │ │ │ │ │ └── BoardControllerTest.java │ │ │ │ ├── channel/ │ │ │ │ │ └── ChannelControllerTest.java │ │ │ │ ├── chat/ │ │ │ │ │ ├── ChatControllerTest.java │ │ │ │ │ └── ChatMessageControllerTest.java │ │ │ │ ├── config/ │ │ │ │ │ └── ConfigControllerTest.java │ │ │ │ ├── connection/ │ │ │ │ │ └── ConnectionControllerTest.java │ │ │ │ ├── contact/ │ │ │ │ │ └── ContactControllerTest.java │ │ │ │ ├── file/ │ │ │ │ │ └── FileControllerTest.java │ │ │ │ ├── forum/ │ │ │ │ │ └── ForumControllerTest.java │ │ │ │ ├── geoip/ │ │ │ │ │ └── GeoIpControllerTest.java │ │ │ │ ├── identity/ │ │ │ │ │ └── IdentityControllerTest.java │ │ │ │ ├── location/ │ │ │ │ │ └── LocationControllerTest.java │ │ │ │ ├── notification/ │ │ │ │ │ └── NotificationControllerTest.java │ │ │ │ ├── profile/ │ │ │ │ │ └── ProfileControllerTest.java │ │ │ │ ├── settings/ │ │ │ │ │ └── SettingsControllerTest.java │ │ │ │ ├── share/ │ │ │ │ │ └── ShareControllerTest.java │ │ │ │ ├── statistics/ │ │ │ │ │ └── StatisticsControllerTest.java │ │ │ │ └── voip/ │ │ │ │ └── VoipMessageControllerTest.java │ │ │ ├── application/ │ │ │ │ ├── SingleInstanceRunTest.java │ │ │ │ ├── autostart/ │ │ │ │ │ ├── AutoStartTest.java │ │ │ │ │ └── autostarter/ │ │ │ │ │ └── AutoStarterGenericTest.java │ │ │ │ └── environment/ │ │ │ │ └── DefaultPropertiesTest.java │ │ │ ├── configuration/ │ │ │ │ └── DataDirConfigurationTest.java │ │ │ ├── crypto/ │ │ │ │ ├── aead/ │ │ │ │ │ └── AEADTest.java │ │ │ │ ├── aes/ │ │ │ │ │ └── AESTest.java │ │ │ │ ├── chatcipher/ │ │ │ │ │ └── ChatChallengeTest.java │ │ │ │ ├── dh/ │ │ │ │ │ └── DiffieHellmanTest.java │ │ │ │ ├── ec/ │ │ │ │ │ └── Ed25519Test.java │ │ │ │ ├── hmac/ │ │ │ │ │ ├── sha1/ │ │ │ │ │ │ └── Sha1HMacTest.java │ │ │ │ │ └── sha256/ │ │ │ │ │ └── Sha256HMacTest.java │ │ │ │ ├── pgp/ │ │ │ │ │ └── PGPTest.java │ │ │ │ ├── rsa/ │ │ │ │ │ └── RSATest.java │ │ │ │ ├── rscrypto/ │ │ │ │ │ └── RsCryptoTest.java │ │ │ │ ├── rsid/ │ │ │ │ │ ├── RSCertificateTest.java │ │ │ │ │ ├── RSIdArmorTest.java │ │ │ │ │ ├── RSIdCrcTest.java │ │ │ │ │ ├── RSIdFakes.java │ │ │ │ │ ├── RSSerialVersionTest.java │ │ │ │ │ └── RSShortInviteTest.java │ │ │ │ └── x509/ │ │ │ │ └── X509Test.java │ │ │ ├── database/ │ │ │ │ ├── model/ │ │ │ │ │ ├── chat/ │ │ │ │ │ │ ├── ChatMapperTest.java │ │ │ │ │ │ └── ChatRoomFakes.java │ │ │ │ │ ├── connection/ │ │ │ │ │ │ ├── ConnectionFakes.java │ │ │ │ │ │ ├── ConnectionMapperTest.java │ │ │ │ │ │ └── ConnectionTest.java │ │ │ │ │ ├── file/ │ │ │ │ │ │ └── FileFakes.java │ │ │ │ │ ├── gxs/ │ │ │ │ │ │ ├── BoardGroupItemFakes.java │ │ │ │ │ │ ├── BoardMessageItemFakes.java │ │ │ │ │ │ ├── ChannelGroupItemFakes.java │ │ │ │ │ │ ├── ChannelMessageItemFakes.java │ │ │ │ │ │ ├── ForumGroupItemFakes.java │ │ │ │ │ │ ├── ForumMessageItemFakes.java │ │ │ │ │ │ ├── ForumMessageItemSummaryFake.java │ │ │ │ │ │ ├── GxsCircleTypeTest.java │ │ │ │ │ │ ├── GxsClientUpdateFakes.java │ │ │ │ │ │ ├── GxsPrivacyFlagsTest.java │ │ │ │ │ │ ├── GxsServiceSettingFakes.java │ │ │ │ │ │ ├── GxsSignatureFlagsTest.java │ │ │ │ │ │ └── IdentityGroupItemFakes.java │ │ │ │ │ ├── identity/ │ │ │ │ │ │ ├── IdentityFakes.java │ │ │ │ │ │ └── IdentityMapperTest.java │ │ │ │ │ ├── location/ │ │ │ │ │ │ ├── LocationFakes.java │ │ │ │ │ │ └── LocationMapperTest.java │ │ │ │ │ ├── profile/ │ │ │ │ │ │ ├── ProfileFakes.java │ │ │ │ │ │ └── ProfileMapperTest.java │ │ │ │ │ ├── settings/ │ │ │ │ │ │ └── SettingsFakes.java │ │ │ │ │ └── share/ │ │ │ │ │ └── ShareFakes.java │ │ │ │ └── repository/ │ │ │ │ ├── ChatRoomRepositoryTest.java │ │ │ │ ├── FileRepositoryTest.java │ │ │ │ ├── GxsClientUpdateRepositoryTest.java │ │ │ │ ├── GxsIdentityRepositoryTest.java │ │ │ │ ├── GxsServiceSettingRepositoryTest.java │ │ │ │ ├── LocationRepositoryTest.java │ │ │ │ ├── ProfileRepositoryTest.java │ │ │ │ └── SettingsRepositoryTest.java │ │ │ ├── environment/ │ │ │ │ ├── CloudTest.java │ │ │ │ ├── CommandArgumentTest.java │ │ │ │ └── HostVariableTest.java │ │ │ ├── job/ │ │ │ │ ├── IdleDetectionJobTest.java │ │ │ │ └── PeerConnectionJobTest.java │ │ │ ├── net/ │ │ │ │ ├── bdisc/ │ │ │ │ │ ├── BroadcastDiscoveryServiceTest.java │ │ │ │ │ └── UdpDiscoveryProtocolTest.java │ │ │ │ ├── dht/ │ │ │ │ │ └── NodeIdTest.java │ │ │ │ ├── peer/ │ │ │ │ │ ├── AbstractPipelineTest.java │ │ │ │ │ ├── ChannelFake.java │ │ │ │ │ ├── ChannelHandlerContextFake.java │ │ │ │ │ ├── PacketDecoderPipelineTest.java │ │ │ │ │ ├── PacketEncoderPipelineTest.java │ │ │ │ │ ├── PeerAttributeTest.java │ │ │ │ │ ├── PeerConnectionFakes.java │ │ │ │ │ ├── PeerConnectionManagerTest.java │ │ │ │ │ ├── RawItemDecoderPipelineTest.java │ │ │ │ │ ├── packet/ │ │ │ │ │ │ ├── MultiPacketBuilder.java │ │ │ │ │ │ ├── PacketTest.java │ │ │ │ │ │ └── SimplePacketBuilder.java │ │ │ │ │ └── ssl/ │ │ │ │ │ └── SSLTest.java │ │ │ │ ├── protocol/ │ │ │ │ │ ├── PeerAddressTest.java │ │ │ │ │ ├── i2p/ │ │ │ │ │ │ └── I2pAddressTest.java │ │ │ │ │ └── tor/ │ │ │ │ │ └── OnionAddressTest.java │ │ │ │ ├── upnp/ │ │ │ │ │ ├── ControlPointTest.java │ │ │ │ │ ├── DeviceTest.java │ │ │ │ │ ├── PortMappingTest.java │ │ │ │ │ ├── SoapTest.java │ │ │ │ │ └── UPNPServiceTest.java │ │ │ │ └── util/ │ │ │ │ └── NetworkModeTest.java │ │ │ ├── service/ │ │ │ │ ├── CapabilityServiceTest.java │ │ │ │ ├── ContactServiceTest.java │ │ │ │ ├── ForumMessageServiceTest.java │ │ │ │ ├── GeoIpServiceTest.java │ │ │ │ ├── LocationServiceTest.java │ │ │ │ ├── ProfileServiceTest.java │ │ │ │ ├── QrCodeServiceTest.java │ │ │ │ ├── ServiceRulesTest.java │ │ │ │ ├── SettingsServiceTest.java │ │ │ │ ├── UnHtmlServiceTest.java │ │ │ │ ├── file/ │ │ │ │ │ └── FileServiceTest.java │ │ │ │ └── shell/ │ │ │ │ ├── HistoryTest.java │ │ │ │ └── ShellServiceTest.java │ │ │ ├── util/ │ │ │ │ ├── OsUtilsTest.java │ │ │ │ └── expression/ │ │ │ │ ├── ExpressionCriteriaTest.java │ │ │ │ ├── ExpressionMapperTest.java │ │ │ │ └── ExpressionTest.java │ │ │ └── xrs/ │ │ │ ├── common/ │ │ │ │ └── SecurityKeyTest.java │ │ │ ├── item/ │ │ │ │ ├── ItemHeaderTest.java │ │ │ │ ├── ItemPriorityTest.java │ │ │ │ └── ItemTest.java │ │ │ ├── serialization/ │ │ │ │ ├── SerialAll.java │ │ │ │ ├── SerialEnum.java │ │ │ │ ├── SerialList.java │ │ │ │ ├── SerialMap.java │ │ │ │ ├── SerializerTest.java │ │ │ │ ├── TlvImageSerializerTest.java │ │ │ │ └── TlvUtilsTest.java │ │ │ └── service/ │ │ │ ├── RsServiceInitPriorityTest.java │ │ │ ├── RsServiceRulesTest.java │ │ │ ├── bandwidth/ │ │ │ │ └── BandwidthUtilsTest.java │ │ │ ├── chat/ │ │ │ │ ├── ChatFlagsTest.java │ │ │ │ ├── ChatRoomEventTest.java │ │ │ │ ├── ChatRoomServiceTest.java │ │ │ │ ├── ChatRsServiceTest.java │ │ │ │ └── RoomFlagsTest.java │ │ │ ├── discovery/ │ │ │ │ ├── DiscoveryPgpListItemTest.java │ │ │ │ └── DiscoveryRsServiceTest.java │ │ │ ├── filetransfer/ │ │ │ │ ├── ChunkDistributorTest.java │ │ │ │ ├── ChunkMapUtilsTest.java │ │ │ │ ├── ChunkTest.java │ │ │ │ ├── FileDownloadTest.java │ │ │ │ ├── FileTransferAgentTest.java │ │ │ │ └── FileUploadTest.java │ │ │ ├── gxs/ │ │ │ │ ├── GxsRequestTypeTest.java │ │ │ │ ├── GxsSignatureTest.java │ │ │ │ ├── TransactionFlagsTest.java │ │ │ │ ├── TransactionTest.java │ │ │ │ └── item/ │ │ │ │ └── GxsSyncMessageRequestItemTest.java │ │ │ ├── gxstunnel/ │ │ │ │ └── TunnelPeerInfoTest.java │ │ │ ├── heartbeat/ │ │ │ │ └── HeartbeatTest.java │ │ │ ├── identity/ │ │ │ │ ├── IdentityManagerTest.java │ │ │ │ └── IdentityRsServiceTest.java │ │ │ ├── rtt/ │ │ │ │ └── RttRsServiceTest.java │ │ │ ├── status/ │ │ │ │ ├── IdleCheckerTest.java │ │ │ │ ├── StatusRsServiceTest.java │ │ │ │ └── StatusTest.java │ │ │ └── turtle/ │ │ │ ├── HashBloomFilterTest.java │ │ │ └── TurtleRsServiceTest.java │ │ └── testutils/ │ │ ├── FakeHttpServer.java │ │ └── ResourceUtils.java │ └── resources/ │ ├── application-default.properties │ └── upnp/ │ └── routers/ │ └── RT-AC87U.xml ├── build.gradle ├── common/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── xeres/ │ │ │ └── common/ │ │ │ ├── AppName.java │ │ │ ├── Features.java │ │ │ ├── annotation/ │ │ │ │ └── RsDeprecated.java │ │ │ ├── condition/ │ │ │ │ ├── OnLinuxCondition.java │ │ │ │ ├── OnMacCondition.java │ │ │ │ └── OnWindowsCondition.java │ │ │ ├── dto/ │ │ │ │ ├── board/ │ │ │ │ │ ├── BoardGroupDTO.java │ │ │ │ │ └── BoardMessageDTO.java │ │ │ │ ├── channel/ │ │ │ │ │ ├── ChannelFileDTO.java │ │ │ │ │ ├── ChannelGroupDTO.java │ │ │ │ │ └── ChannelMessageDTO.java │ │ │ │ ├── chat/ │ │ │ │ │ ├── ChatBacklogDTO.java │ │ │ │ │ ├── ChatIdentityDTO.java │ │ │ │ │ ├── ChatRoomBacklogDTO.java │ │ │ │ │ ├── ChatRoomContextDTO.java │ │ │ │ │ ├── ChatRoomDTO.java │ │ │ │ │ └── ChatRoomsDTO.java │ │ │ │ ├── connection/ │ │ │ │ │ └── ConnectionDTO.java │ │ │ │ ├── forum/ │ │ │ │ │ ├── ForumGroupDTO.java │ │ │ │ │ └── ForumMessageDTO.java │ │ │ │ ├── identity/ │ │ │ │ │ ├── IdentityConstants.java │ │ │ │ │ └── IdentityDTO.java │ │ │ │ ├── location/ │ │ │ │ │ ├── LocationConstants.java │ │ │ │ │ └── LocationDTO.java │ │ │ │ ├── profile/ │ │ │ │ │ ├── ProfileConstants.java │ │ │ │ │ └── ProfileDTO.java │ │ │ │ ├── settings/ │ │ │ │ │ └── SettingsDTO.java │ │ │ │ └── share/ │ │ │ │ ├── ShareConstants.java │ │ │ │ └── ShareDTO.java │ │ │ ├── events/ │ │ │ │ ├── ConnectWebSocketsEvent.java │ │ │ │ ├── StartupEvent.java │ │ │ │ └── SynchronousEvent.java │ │ │ ├── file/ │ │ │ │ └── FileType.java │ │ │ ├── geoip/ │ │ │ │ └── Country.java │ │ │ ├── gxs/ │ │ │ │ └── GxsGroupConstants.java │ │ │ ├── i18n/ │ │ │ │ ├── I18nEnum.java │ │ │ │ └── I18nUtils.java │ │ │ ├── id/ │ │ │ │ ├── GxsId.java │ │ │ │ ├── Id.java │ │ │ │ ├── Identifier.java │ │ │ │ ├── LocationIdentifier.java │ │ │ │ ├── MsgId.java │ │ │ │ ├── ProfileFingerprint.java │ │ │ │ └── Sha1Sum.java │ │ │ ├── identity/ │ │ │ │ └── Type.java │ │ │ ├── location/ │ │ │ │ └── Availability.java │ │ │ ├── message/ │ │ │ │ ├── MessageHeaders.java │ │ │ │ ├── MessagePath.java │ │ │ │ ├── MessageType.java │ │ │ │ ├── MessagingConfiguration.java │ │ │ │ ├── chat/ │ │ │ │ │ ├── ChatAvatar.java │ │ │ │ │ ├── ChatBacklog.java │ │ │ │ │ ├── ChatConstants.java │ │ │ │ │ ├── ChatMessage.java │ │ │ │ │ ├── ChatRoomBacklog.java │ │ │ │ │ ├── ChatRoomContext.java │ │ │ │ │ ├── ChatRoomInfo.java │ │ │ │ │ ├── ChatRoomInviteEvent.java │ │ │ │ │ ├── ChatRoomLists.java │ │ │ │ │ ├── ChatRoomMessage.java │ │ │ │ │ ├── ChatRoomTimeoutEvent.java │ │ │ │ │ ├── ChatRoomUser.java │ │ │ │ │ ├── ChatRoomUserEvent.java │ │ │ │ │ └── RoomType.java │ │ │ │ └── voip/ │ │ │ │ ├── VoipAction.java │ │ │ │ └── VoipMessage.java │ │ │ ├── mui/ │ │ │ │ ├── MUI.java │ │ │ │ ├── MUIScrollBar.java │ │ │ │ ├── Shell.java │ │ │ │ ├── ShellAction.java │ │ │ │ └── ShellResult.java │ │ │ ├── pgp/ │ │ │ │ └── Trust.java │ │ │ ├── properties/ │ │ │ │ └── StartupProperties.java │ │ │ ├── protocol/ │ │ │ │ ├── HostPort.java │ │ │ │ ├── NetMode.java │ │ │ │ ├── dns/ │ │ │ │ │ ├── DNS.java │ │ │ │ │ ├── DnsRequest.java │ │ │ │ │ └── DnsResponse.java │ │ │ │ ├── i2p/ │ │ │ │ │ └── I2pAddress.java │ │ │ │ ├── ip/ │ │ │ │ │ ├── IP.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── tor/ │ │ │ │ │ ├── OnionAddress.java │ │ │ │ │ └── package-info.java │ │ │ │ └── xrs/ │ │ │ │ └── RsServiceType.java │ │ │ ├── rest/ │ │ │ │ ├── PathConfig.java │ │ │ │ ├── board/ │ │ │ │ │ └── UpdateBoardMessageReadRequest.java │ │ │ │ ├── channel/ │ │ │ │ │ └── UpdateChannelMessageReadRequest.java │ │ │ │ ├── chat/ │ │ │ │ │ ├── ChatRoomVisibility.java │ │ │ │ │ ├── CreateChatRoomRequest.java │ │ │ │ │ ├── DistantChatRequest.java │ │ │ │ │ └── InviteToChatRoomRequest.java │ │ │ │ ├── config/ │ │ │ │ │ ├── Capabilities.java │ │ │ │ │ ├── HostnameResponse.java │ │ │ │ │ ├── ImportRsFriendsResponse.java │ │ │ │ │ ├── IpAddressResponse.java │ │ │ │ │ ├── OwnIdentityRequest.java │ │ │ │ │ ├── OwnLocationRequest.java │ │ │ │ │ ├── OwnProfileRequest.java │ │ │ │ │ ├── UsernameResponse.java │ │ │ │ │ └── VerifyUpdateRequest.java │ │ │ │ ├── connection/ │ │ │ │ │ └── ConnectionRequest.java │ │ │ │ ├── contact/ │ │ │ │ │ └── Contact.java │ │ │ │ ├── file/ │ │ │ │ │ ├── AddDownloadRequest.java │ │ │ │ │ ├── FileDownloadRequest.java │ │ │ │ │ ├── FileProgress.java │ │ │ │ │ ├── FileSearchRequest.java │ │ │ │ │ └── FileSearchResponse.java │ │ │ │ ├── forum/ │ │ │ │ │ ├── CreateForumMessageRequest.java │ │ │ │ │ ├── CreateOrUpdateForumGroupRequest.java │ │ │ │ │ ├── ForumPostRequest.java │ │ │ │ │ └── UpdateForumMessageReadRequest.java │ │ │ │ ├── geoip/ │ │ │ │ │ └── CountryResponse.java │ │ │ │ ├── location/ │ │ │ │ │ └── RSIdResponse.java │ │ │ │ ├── notification/ │ │ │ │ │ ├── Notification.java │ │ │ │ │ ├── availability/ │ │ │ │ │ │ ├── AvailabilityChange.java │ │ │ │ │ │ └── AvailabilityNotification.java │ │ │ │ │ ├── board/ │ │ │ │ │ │ ├── AddOrUpdateBoardGroups.java │ │ │ │ │ │ ├── AddOrUpdateBoardMessages.java │ │ │ │ │ │ ├── BoardNotification.java │ │ │ │ │ │ ├── SetBoardGroupMessagesReadState.java │ │ │ │ │ │ └── SetBoardMessageReadState.java │ │ │ │ │ ├── channel/ │ │ │ │ │ │ ├── AddOrUpdateChannelGroups.java │ │ │ │ │ │ ├── AddOrUpdateChannelMessages.java │ │ │ │ │ │ ├── ChannelNotification.java │ │ │ │ │ │ ├── SetChannelGroupMessagesReadState.java │ │ │ │ │ │ └── SetChannelMessageReadState.java │ │ │ │ │ ├── contact/ │ │ │ │ │ │ ├── AddOrUpdateContacts.java │ │ │ │ │ │ ├── ContactNotification.java │ │ │ │ │ │ └── RemoveContacts.java │ │ │ │ │ ├── file/ │ │ │ │ │ │ ├── FileNotification.java │ │ │ │ │ │ ├── FileNotificationAction.java │ │ │ │ │ │ ├── FileSearchNotification.java │ │ │ │ │ │ └── FileTrendNotification.java │ │ │ │ │ ├── forum/ │ │ │ │ │ │ ├── AddOrUpdateForumGroups.java │ │ │ │ │ │ ├── AddOrUpdateForumMessages.java │ │ │ │ │ │ ├── ForumNotification.java │ │ │ │ │ │ ├── SetForumGroupMessagesReadState.java │ │ │ │ │ │ └── SetForumMessageReadState.java │ │ │ │ │ └── status/ │ │ │ │ │ ├── DhtInfo.java │ │ │ │ │ ├── DhtStatus.java │ │ │ │ │ ├── NatStatus.java │ │ │ │ │ └── StatusNotification.java │ │ │ │ ├── profile/ │ │ │ │ │ ├── ProfileKeyAttributes.java │ │ │ │ │ └── RsIdRequest.java │ │ │ │ ├── share/ │ │ │ │ │ ├── TemporaryShareRequest.java │ │ │ │ │ ├── TemporaryShareResponse.java │ │ │ │ │ └── UpdateShareRequest.java │ │ │ │ └── statistics/ │ │ │ │ ├── DataCounterPeer.java │ │ │ │ ├── DataCounterStatisticsResponse.java │ │ │ │ ├── RttPeer.java │ │ │ │ ├── RttStatisticsResponse.java │ │ │ │ └── TurtleStatisticsResponse.java │ │ │ ├── rsid/ │ │ │ │ └── Type.java │ │ │ ├── tray/ │ │ │ │ └── TrayNotificationType.java │ │ │ └── util/ │ │ │ ├── ByteUnitUtils.java │ │ │ ├── DebugUtils.java │ │ │ ├── ExecutorUtils.java │ │ │ ├── FileNameUtils.java │ │ │ ├── NoSuppressedRunnable.java │ │ │ ├── OsUtils.java │ │ │ ├── RemoteUtils.java │ │ │ ├── SecureRandomUtils.java │ │ │ ├── ThreadUtils.java │ │ │ └── image/ │ │ │ ├── ImageUtils.java │ │ │ ├── JpegUtils.java │ │ │ └── PngUtils.java │ │ ├── javadoc/ │ │ │ └── overview.html │ │ └── resources/ │ │ └── i18n/ │ │ ├── messages.properties │ │ ├── messages_es.properties │ │ ├── messages_fr.properties │ │ ├── messages_ru.properties │ │ └── messages_zh.properties │ ├── test/ │ │ └── java/ │ │ └── io/ │ │ └── xeres/ │ │ └── common/ │ │ ├── AppNameTest.java │ │ ├── CommonCodingRulesTest.java │ │ ├── file/ │ │ │ └── FileTypeTest.java │ │ ├── id/ │ │ │ └── IdTest.java │ │ ├── identity/ │ │ │ └── TypeTest.java │ │ ├── pgp/ │ │ │ └── TrustTest.java │ │ ├── protocol/ │ │ │ ├── HostPortTest.java │ │ │ ├── NetModeTest.java │ │ │ ├── dns/ │ │ │ │ └── DNSTest.java │ │ │ └── ip/ │ │ │ └── IPTest.java │ │ ├── rest/ │ │ │ └── notification/ │ │ │ └── StatusNotificationTest.java │ │ └── util/ │ │ ├── ByteUnitUtilsTest.java │ │ ├── FileNameUtilsTest.java │ │ ├── SecureRandomUtilsTest.java │ │ └── image/ │ │ └── ImageUtilsTest.java │ └── testFixtures/ │ └── java/ │ └── io/ │ └── xeres/ │ ├── common/ │ │ └── dto/ │ │ ├── chat/ │ │ │ ├── ChatIdentityDTOFakes.java │ │ │ ├── ChatRoomContextDTOFakes.java │ │ │ ├── ChatRoomDTOFakes.java │ │ │ └── ChatRoomsDTOFakes.java │ │ ├── connection/ │ │ │ └── ConnectionDTOFakes.java │ │ ├── identity/ │ │ │ └── IdentityDTOFakes.java │ │ ├── location/ │ │ │ └── LocationDTOFakes.java │ │ ├── profile/ │ │ │ └── ProfileDTOFakes.java │ │ ├── settings/ │ │ │ └── SettingsDTOFakes.java │ │ └── share/ │ │ └── ShareDTOFakes.java │ └── testutils/ │ ├── BooleanFakes.java │ ├── EnumFakes.java │ ├── IdFakes.java │ ├── Sha1SumFakes.java │ ├── StringFakes.java │ ├── TestUtils.java │ └── TimeFakes.java ├── docker-compose.yml ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── icon.icns ├── qodana.yaml ├── scripts/ │ ├── api/ │ │ └── user.js │ ├── bot/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── bot.py │ │ └── requirements.txt │ └── helper/ │ └── i18n_find_dupe.py ├── settings.gradle ├── transifex.yml └── ui/ ├── build.gradle └── src/ ├── main/ │ ├── java/ │ │ └── io/ │ │ └── xeres/ │ │ └── ui/ │ │ ├── JavaFxApplication.java │ │ ├── PrimaryStageInitializer.java │ │ ├── UiStarter.java │ │ ├── client/ │ │ │ ├── BoardClient.java │ │ │ ├── ChannelClient.java │ │ │ ├── ChatClient.java │ │ │ ├── ConfigClient.java │ │ │ ├── ConnectionClient.java │ │ │ ├── ContactClient.java │ │ │ ├── FileClient.java │ │ │ ├── ForumClient.java │ │ │ ├── GeneralClient.java │ │ │ ├── GeoIpClient.java │ │ │ ├── GxsGroupClient.java │ │ │ ├── GxsMessageClient.java │ │ │ ├── IdentityClient.java │ │ │ ├── LocationClient.java │ │ │ ├── NotificationClient.java │ │ │ ├── PaginatedResponse.java │ │ │ ├── ProfileClient.java │ │ │ ├── SettingsClient.java │ │ │ ├── ShareClient.java │ │ │ ├── StatisticsClient.java │ │ │ ├── message/ │ │ │ │ ├── BroadcastChatFrameHandler.java │ │ │ │ ├── ChatRoomFrameHandler.java │ │ │ │ ├── DistantChatFrameHandler.java │ │ │ │ ├── MessageClient.java │ │ │ │ ├── PendingSubscription.java │ │ │ │ ├── PrivateChatFrameHandler.java │ │ │ │ ├── SessionHandler.java │ │ │ │ └── VoipFrameHandler.java │ │ │ ├── preview/ │ │ │ │ ├── OEmbedResponse.java │ │ │ │ ├── PreviewClient.java │ │ │ │ ├── PreviewResponse.java │ │ │ │ └── SizeLimitingCollector.java │ │ │ └── update/ │ │ │ ├── ReleaseAsset.java │ │ │ ├── ReleaseResponse.java │ │ │ ├── UpdateClient.java │ │ │ └── UpdateProgress.java │ │ ├── configuration/ │ │ │ ├── I18nConfiguration.java │ │ │ └── WebClientConfiguration.java │ │ ├── controller/ │ │ │ ├── Controller.java │ │ │ ├── MainWindowController.java │ │ │ ├── TabActivation.java │ │ │ ├── WindowController.java │ │ │ ├── about/ │ │ │ │ └── AboutWindowController.java │ │ │ ├── account/ │ │ │ │ └── AccountCreationWindowController.java │ │ │ ├── board/ │ │ │ │ ├── BoardGroupCell.java │ │ │ │ ├── BoardGroupWindowController.java │ │ │ │ ├── BoardMessageCell.java │ │ │ │ ├── BoardMessageWindowController.java │ │ │ │ └── BoardViewController.java │ │ │ ├── channel/ │ │ │ │ ├── ChannelFileSizeCell.java │ │ │ │ ├── ChannelGroupCell.java │ │ │ │ ├── ChannelGroupWindowController.java │ │ │ │ ├── ChannelMessageCell.java │ │ │ │ ├── ChannelMessageRow.java │ │ │ │ ├── ChannelMessageWindowController.java │ │ │ │ └── ChannelViewController.java │ │ │ ├── chat/ │ │ │ │ ├── ChatListCell.java │ │ │ │ ├── ChatListDragSelection.java │ │ │ │ ├── ChatListView.java │ │ │ │ ├── ChatListViewContextMenu.java │ │ │ │ ├── ChatRoomCell.java │ │ │ │ ├── ChatRoomCreationWindowController.java │ │ │ │ ├── ChatRoomInfoController.java │ │ │ │ ├── ChatRoomInvitationWindowController.java │ │ │ │ ├── ChatRoomUser.java │ │ │ │ ├── ChatUserCell.java │ │ │ │ ├── ChatViewController.java │ │ │ │ ├── PeerHolder.java │ │ │ │ └── RoomHolder.java │ │ │ ├── common/ │ │ │ │ ├── GxsGroup.java │ │ │ │ ├── GxsGroupCellCount.java │ │ │ │ ├── GxsGroupTreeTableAction.java │ │ │ │ ├── GxsGroupTreeTableView.java │ │ │ │ └── GxsMessage.java │ │ │ ├── contact/ │ │ │ │ ├── AvailabilityCellStatus.java │ │ │ │ ├── AvailabilityCellUtil.java │ │ │ │ ├── AvailabilityTreeCellStatus.java │ │ │ │ ├── ContactCellName.java │ │ │ │ ├── ContactFilter.java │ │ │ │ ├── ContactViewController.java │ │ │ │ └── LocationRow.java │ │ │ ├── debug/ │ │ │ │ └── DebugRequesterWindowController.java │ │ │ ├── file/ │ │ │ │ ├── FileAddDownloadViewWindowController.java │ │ │ │ ├── FileDownloadViewController.java │ │ │ │ ├── FileMainController.java │ │ │ │ ├── FileProgressDisplay.java │ │ │ │ ├── FileProgressSizeCell.java │ │ │ │ ├── FileResult.java │ │ │ │ ├── FileResultNameCell.java │ │ │ │ ├── FileResultSizeCell.java │ │ │ │ ├── FileResultView.java │ │ │ │ ├── FileSearchViewController.java │ │ │ │ ├── FileTrendViewController.java │ │ │ │ ├── FileUploadViewController.java │ │ │ │ ├── TimeCell.java │ │ │ │ └── TrendResult.java │ │ │ ├── forum/ │ │ │ │ ├── DateCell.java │ │ │ │ ├── ForumCell.java │ │ │ │ ├── ForumCellAuthor.java │ │ │ │ ├── ForumEditorWindowController.java │ │ │ │ ├── ForumGroupWindowController.java │ │ │ │ ├── ForumMessageCell.java │ │ │ │ ├── ForumViewController.java │ │ │ │ └── MessageVersion.java │ │ │ ├── help/ │ │ │ │ ├── HelpWindowController.java │ │ │ │ ├── IndexCell.java │ │ │ │ └── Navigator.java │ │ │ ├── id/ │ │ │ │ ├── AddRsIdWindowController.java │ │ │ │ ├── AddressCell.java │ │ │ │ ├── AddressConverter.java │ │ │ │ ├── AddressCountry.java │ │ │ │ └── FlagUtils.java │ │ │ ├── messaging/ │ │ │ │ ├── BroadcastWindowController.java │ │ │ │ ├── Destination.java │ │ │ │ └── MessagingWindowController.java │ │ │ ├── qrcode/ │ │ │ │ ├── CameraWindowController.java │ │ │ │ ├── QrCodeWindowController.java │ │ │ │ └── QrPrintController.java │ │ │ ├── settings/ │ │ │ │ ├── SettingsCell.java │ │ │ │ ├── SettingsController.java │ │ │ │ ├── SettingsGeneralController.java │ │ │ │ ├── SettingsGroup.java │ │ │ │ ├── SettingsNetworksController.java │ │ │ │ ├── SettingsNotificationController.java │ │ │ │ ├── SettingsRemoteController.java │ │ │ │ ├── SettingsSoundController.java │ │ │ │ ├── SettingsTransferController.java │ │ │ │ ├── SettingsWindowController.java │ │ │ │ └── ThemeCell.java │ │ │ ├── share/ │ │ │ │ ├── ShareWindowController.java │ │ │ │ └── TrustConverter.java │ │ │ ├── statistics/ │ │ │ │ ├── StatisticsDataCounterController.java │ │ │ │ ├── StatisticsMainWindowController.java │ │ │ │ ├── StatisticsRttController.java │ │ │ │ └── StatisticsTurtleController.java │ │ │ └── voip/ │ │ │ ├── TimeCounter.java │ │ │ └── VoipWindowController.java │ │ ├── custom/ │ │ │ ├── DelayedAction.java │ │ │ ├── DelayedTooltip.java │ │ │ ├── DisclosedHyperlink.java │ │ │ ├── EditorView.java │ │ │ ├── ImageSelectorView.java │ │ │ ├── InfoView.java │ │ │ ├── InputArea.java │ │ │ ├── InputAreaGroup.java │ │ │ ├── NullSelectionModel.java │ │ │ ├── ProgressPane.java │ │ │ ├── ReadOnlyTextField.java │ │ │ ├── ResizeableImageView.java │ │ │ ├── StickerView.java │ │ │ ├── TypingNotificationView.java │ │ │ ├── WaveDotsView.java │ │ │ ├── alias/ │ │ │ │ ├── AliasCell.java │ │ │ │ ├── AliasView.java │ │ │ │ └── PopupAlias.java │ │ │ ├── asyncimage/ │ │ │ │ ├── AsyncImageView.java │ │ │ │ ├── ContactImageView.java │ │ │ │ ├── ImageCache.java │ │ │ │ └── PlaceholderImageView.java │ │ │ ├── event/ │ │ │ │ ├── FileSelectedEvent.java │ │ │ │ ├── ImageSelectedEvent.java │ │ │ │ └── StickerSelectedEvent.java │ │ │ └── led/ │ │ │ ├── LedControl.java │ │ │ ├── LedSkin.java │ │ │ └── LedStatus.java │ │ ├── event/ │ │ │ ├── OpenUriEvent.java │ │ │ ├── StageReadyEvent.java │ │ │ └── UnreadEvent.java │ │ ├── model/ │ │ │ ├── board/ │ │ │ │ ├── BoardGroup.java │ │ │ │ ├── BoardMapper.java │ │ │ │ └── BoardMessage.java │ │ │ ├── channel/ │ │ │ │ ├── ChannelFile.java │ │ │ │ ├── ChannelGroup.java │ │ │ │ ├── ChannelMapper.java │ │ │ │ └── ChannelMessage.java │ │ │ ├── chat/ │ │ │ │ └── ChatMapper.java │ │ │ ├── connection/ │ │ │ │ ├── Connection.java │ │ │ │ └── ConnectionMapper.java │ │ │ ├── forum/ │ │ │ │ ├── ForumGroup.java │ │ │ │ ├── ForumMapper.java │ │ │ │ └── ForumMessage.java │ │ │ ├── identity/ │ │ │ │ ├── Identity.java │ │ │ │ └── IdentityMapper.java │ │ │ ├── location/ │ │ │ │ ├── Location.java │ │ │ │ └── LocationMapper.java │ │ │ ├── profile/ │ │ │ │ ├── Profile.java │ │ │ │ └── ProfileMapper.java │ │ │ ├── settings/ │ │ │ │ ├── Settings.java │ │ │ │ └── SettingsMapper.java │ │ │ └── share/ │ │ │ ├── Share.java │ │ │ └── ShareMapper.java │ │ ├── properties/ │ │ │ └── UiClientProperties.java │ │ └── support/ │ │ ├── ImageCacheService.java │ │ ├── chat/ │ │ │ ├── AliasEntry.java │ │ │ ├── ChatAction.java │ │ │ ├── ChatCommand.java │ │ │ ├── ChatLine.java │ │ │ ├── ChatParser.java │ │ │ ├── ColorGenerator.java │ │ │ └── NicknameCompleter.java │ │ ├── clipboard/ │ │ │ ├── ClipboardUtils.java │ │ │ └── ImageSelection.java │ │ ├── contact/ │ │ │ └── ContactUtils.java │ │ ├── contentline/ │ │ │ ├── Content.java │ │ │ ├── ContentCode.java │ │ │ ├── ContentEmoji.java │ │ │ ├── ContentEmphasis.java │ │ │ ├── ContentHeader.java │ │ │ ├── ContentHorizontalRule.java │ │ │ ├── ContentImage.java │ │ │ ├── ContentStrikethrough.java │ │ │ ├── ContentText.java │ │ │ ├── ContentUri.java │ │ │ └── ContentUriPreview.java │ │ ├── contextmenu/ │ │ │ └── XContextMenu.java │ │ ├── emoji/ │ │ │ ├── EmojiService.java │ │ │ └── RsEmojiAlias.java │ │ ├── loader/ │ │ │ ├── FetchMode.java │ │ │ ├── FetchRequest.java │ │ │ ├── InfiniteScrollable.java │ │ │ ├── InfiniteTreeListView.java │ │ │ ├── InfiniteVirtualizedScrollPane.java │ │ │ ├── OnDemandLoader.java │ │ │ └── OnDemandLoaderAction.java │ │ ├── markdown/ │ │ │ ├── AltTextVisitor.java │ │ │ ├── ContentRenderer.java │ │ │ ├── ContentVisitor.java │ │ │ ├── MarkdownService.java │ │ │ └── UriAction.java │ │ ├── notification/ │ │ │ └── NotificationSettings.java │ │ ├── oembed/ │ │ │ ├── OEmbedProvider.java │ │ │ └── OEmbedService.java │ │ ├── preference/ │ │ │ └── PreferenceUtils.java │ │ ├── sound/ │ │ │ ├── SoundPlayerService.java │ │ │ └── SoundSettings.java │ │ ├── splash/ │ │ │ └── SplashService.java │ │ ├── theme/ │ │ │ ├── AppTheme.java │ │ │ └── AppThemeManager.java │ │ ├── tray/ │ │ │ └── TrayService.java │ │ ├── unread/ │ │ │ └── UnreadService.java │ │ ├── updater/ │ │ │ ├── UpdateService.java │ │ │ ├── Version.java │ │ │ ├── VersionCheckTask.java │ │ │ └── VersionChecker.java │ │ ├── uri/ │ │ │ ├── AbstractUriFactory.java │ │ │ ├── BoardUri.java │ │ │ ├── BoardUriFactory.java │ │ │ ├── CertificateUri.java │ │ │ ├── CertificateUriFactory.java │ │ │ ├── ChannelUri.java │ │ │ ├── ChannelUriFactory.java │ │ │ ├── ChatRoomUri.java │ │ │ ├── ChatRoomUriFactory.java │ │ │ ├── CollectionUri.java │ │ │ ├── CollectionUriFactory.java │ │ │ ├── ExternalUri.java │ │ │ ├── ExternalUriFactory.java │ │ │ ├── FileUri.java │ │ │ ├── FileUriFactory.java │ │ │ ├── ForumUri.java │ │ │ ├── ForumUriFactory.java │ │ │ ├── IdentityUri.java │ │ │ ├── IdentityUriFactory.java │ │ │ ├── MessageUri.java │ │ │ ├── MessageUriFactory.java │ │ │ ├── ProfileUri.java │ │ │ ├── ProfileUriFactory.java │ │ │ ├── SearchUri.java │ │ │ ├── SearchUriFactory.java │ │ │ ├── Uri.java │ │ │ ├── UriFactory.java │ │ │ └── UriService.java │ │ ├── util/ │ │ │ ├── ChooserUtils.java │ │ │ ├── ClientUtils.java │ │ │ ├── DateUtils.java │ │ │ ├── ImageViewUtils.java │ │ │ ├── PublicKeyUtils.java │ │ │ ├── Range.java │ │ │ ├── SmileyUtils.java │ │ │ ├── TextFieldUtils.java │ │ │ ├── TextFlowDragSelection.java │ │ │ ├── TextFlowUtils.java │ │ │ ├── TextInputControlUtils.java │ │ │ ├── TextSelectRange.java │ │ │ ├── TooltipUtils.java │ │ │ ├── UiUtils.java │ │ │ └── UriUtils.java │ │ └── window/ │ │ ├── UiNativeWindow.java │ │ ├── WindowBorder.java │ │ ├── WindowManager.java │ │ └── WindowResizer.java │ ├── javadoc/ │ │ └── overview.html │ └── resources/ │ ├── help/ │ │ ├── en/ │ │ │ ├── 00.Index.md │ │ │ ├── 01.Quick Setup.md │ │ │ ├── 02.Network.md │ │ │ ├── 03.Markdown.md │ │ │ ├── 04.Emojis.md │ │ │ ├── 05.Startup arguments.md │ │ │ └── 06.Links.md │ │ ├── es/ │ │ │ ├── 00.Index.md │ │ │ ├── 01.Configuración rápida.md │ │ │ ├── 02.Red.md │ │ │ ├── 04.Emojis.md │ │ │ ├── 05.Argumentos de inicio.md │ │ │ └── 06.Enlaces.md │ │ ├── fr/ │ │ │ ├── 00.Index.md │ │ │ ├── 01.Configuration rapide.md │ │ │ ├── 02.Réseau.md │ │ │ ├── 04.Emojis.md │ │ │ ├── 05.Arguments de démarrage.md │ │ │ └── 06.Liens.md │ │ ├── ru/ │ │ │ ├── 00.Index.md │ │ │ ├── 01.Быстрая настройка.md │ │ │ ├── 02.Сеть.md │ │ │ ├── 04.Эмодзи.md │ │ │ ├── 05.Аргументы запуска.md │ │ │ └── 06.Ссылки.md │ │ └── zh/ │ │ ├── 00.Index.md │ │ ├── 01.快速设置.md │ │ ├── 02.网络.md │ │ ├── 04.表情符号.md │ │ ├── 05.启动参数.md │ │ └── 06.链接 │ ├── oembed-providers.json │ ├── retroshare-emojis.json │ └── view/ │ ├── about/ │ │ └── about.fxml │ ├── account/ │ │ └── account_creation.fxml │ ├── board/ │ │ ├── board_group_view.fxml │ │ ├── board_message_view.fxml │ │ ├── board_view.fxml │ │ └── message_cell.fxml │ ├── channel/ │ │ ├── channel_group_view.fxml │ │ ├── channel_message_view.fxml │ │ ├── channel_view.fxml │ │ └── message_cell.fxml │ ├── chat/ │ │ ├── chat_roominfo.fxml │ │ ├── chat_view.fxml │ │ ├── chatroom_create.fxml │ │ └── chatroom_invite.fxml │ ├── contact/ │ │ └── contact_view.fxml │ ├── custom/ │ │ ├── alias_view.fxml │ │ ├── editor_view.fxml │ │ ├── file_results_view.fxml │ │ ├── gxs_group_tree_table_view.fxml │ │ ├── image_selector_view.fxml │ │ ├── info_view.fxml │ │ ├── input_area_group.fxml │ │ ├── sticker_view.fxml │ │ ├── typing_notification_view.fxml │ │ └── wave_dots_view.fxml │ ├── debug/ │ │ └── debug_requester_view.fxml │ ├── default.css │ ├── file/ │ │ ├── add_download.fxml │ │ ├── download.fxml │ │ ├── main.fxml │ │ ├── search.fxml │ │ ├── share.fxml │ │ ├── trend.fxml │ │ └── upload.fxml │ ├── forum/ │ │ ├── forum_editor_view.fxml │ │ ├── forum_group_view.fxml │ │ └── forum_view.fxml │ ├── help/ │ │ └── help.fxml │ ├── id/ │ │ └── rsid_add.fxml │ ├── linux.css │ ├── mac.css │ ├── main.fxml │ ├── messaging/ │ │ ├── broadcast.fxml │ │ └── messaging.fxml │ ├── printer.css │ ├── qrcode/ │ │ ├── camera.fxml │ │ ├── qrcode.fxml │ │ └── qrprint.fxml │ ├── settings/ │ │ ├── settings.fxml │ │ ├── settings_general.fxml │ │ ├── settings_networks.fxml │ │ ├── settings_notifications.fxml │ │ ├── settings_remote.fxml │ │ ├── settings_sound.fxml │ │ └── settings_transfer.fxml │ ├── statistics/ │ │ ├── datacounter.fxml │ │ ├── main.fxml │ │ ├── rtt.fxml │ │ └── turtle.fxml │ ├── voip/ │ │ └── voip.fxml │ └── windows.css └── test/ └── java/ └── io/ └── xeres/ └── ui/ ├── FXTest.java ├── UiCodingRulesTest.java ├── client/ │ └── PaginatedResponseTest.java ├── controller/ │ ├── about/ │ │ └── AboutWindowControllerTest.java │ ├── account/ │ │ └── AccountCreationWindowControllerTest.java │ ├── chat/ │ │ ├── ChatRoomCreationWindowControllerTest.java │ │ ├── ChatRoomInvitationWindowControllerTest.java │ │ └── ChatViewControllerTest.java │ ├── contact/ │ │ └── ContactViewControllerTest.java │ ├── help/ │ │ ├── HelpWindowControllerTest.java │ │ └── NavigatorTest.java │ ├── id/ │ │ └── AddRsIdWindowControllerTest.java │ ├── messaging/ │ │ ├── BroadcastWindowControllerTest.java │ │ └── MessagingWindowControllerTest.java │ ├── qrcode/ │ │ └── QrCodeWindowControllerTest.java │ └── share/ │ └── ShareWindowControllerTest.java ├── custom/ │ ├── AsyncImageViewTest.java │ └── EditorViewTest.java ├── model/ │ ├── chat/ │ │ └── ChatMapperTest.java │ ├── connection/ │ │ └── ConnectionMapperTest.java │ ├── identity/ │ │ └── IdentityMapperTest.java │ ├── location/ │ │ └── LocationMapperTest.java │ ├── profile/ │ │ └── ProfileMapperTest.java │ ├── settings/ │ │ └── SettingsMapperTest.java │ └── share/ │ └── ShareMapperTest.java └── support/ ├── chat/ │ ├── ChatActionTest.java │ ├── ChatParserTest.java │ ├── ColorGeneratorTest.java │ └── NicknameCompleterTest.java ├── emoji/ │ └── EmojiServiceTest.java ├── markdown/ │ └── MarkdownServiceTest.java ├── uri/ │ ├── BoardUriFactoryTest.java │ ├── CertificateUriFactoryTest.java │ ├── FileUriFactoryTest.java │ └── UriFactoryUtils.java └── util/ ├── ImageViewUtilsTest.java ├── RangeTest.java ├── SmileyUtilsTest.java ├── TextInputControlUtilsTest.java ├── UiUtilsTest.java └── UriUtilsTest.java