├── .editorconfig ├── .github ├── FUNDING.yml └── workflows │ └── ci.yml ├── .gitignore ├── .idea ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── dictionaries │ └── krist.xml └── runConfigurations │ ├── Project_Check.xml │ ├── Publish_GitHub.xml │ ├── Publish_Local.xml │ └── Publish_Maven_Central.xml ├── BENCHMARKS.md ├── DESIGNCHOICES.md ├── LICENSE ├── README.md ├── WHATSNEW.md ├── buffer ├── build.gradle.kts └── src │ ├── benchmarks │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── buffer │ │ ├── BitBufBenchmark.kt │ │ ├── BitBufTransferBenchmark.kt │ │ ├── BufferPerformanceBenchmark.kt │ │ └── OpenRs2BitBuf.kt │ ├── main │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── buffer │ │ ├── JagByteBuf.kt │ │ ├── bitbuffer │ │ ├── BitBuf.kt │ │ ├── UnsafeBitBuf.kt │ │ ├── UnsafeLongBackedBitBuf.kt │ │ └── WrappedBitBuf.kt │ │ ├── extensions │ │ ├── ByteBufExtensions.kt │ │ └── JagexByteBufExtensions.kt │ │ └── util │ │ └── charset │ │ └── Cp1252Charset.kt │ └── test │ ├── kotlin │ └── net │ │ └── rsprot │ │ └── buffer │ │ ├── bitbuffer │ │ ├── BitBufTest.kt │ │ └── UnsafeLongBackedBitBufTest.kt │ │ └── extensions │ │ ├── ByteBufArrayTest.kt │ │ ├── ByteBufByteTest.kt │ │ ├── ByteBufIntTest.kt │ │ ├── ByteBufMediumTest.kt │ │ ├── ByteBufShortTest.kt │ │ ├── ByteBufSmartTest.kt │ │ ├── ByteBufSpecialTypeTest.kt │ │ └── ByteBufTests.kt │ └── resources │ └── log4j2.xml ├── compression ├── build.gradle.kts └── src │ ├── main │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── compression │ │ ├── Base37.kt │ │ ├── HuffmanCodec.kt │ │ └── provider │ │ ├── BlockingHuffmanCodecProvider.kt │ │ ├── DefaultHuffmanCodecProvider.kt │ │ └── HuffmanCodecProvider.kt │ └── test │ ├── kotlin │ └── net │ │ └── rsprot │ │ └── compression │ │ ├── Base37Test.kt │ │ └── HuffmanCodecTest.kt │ └── resources │ └── net │ └── rsprot │ └── compression │ ├── huffman.dat │ ├── lorem_ipsum_compressed.dat │ └── lorem_ipsum_sample.txt ├── crypto ├── build.gradle.kts └── src │ └── main │ └── kotlin │ └── net │ └── rsprot │ └── crypto │ ├── cipher │ ├── IsaacRandom.kt │ ├── NopStreamCipher.kt │ ├── StreamCipher.kt │ └── StreamCipherPair.kt │ ├── crc │ └── CyclicRedundancyCheck.kt │ ├── rsa │ ├── Rsa.kt │ ├── RsaByteBufExt.kt │ └── RsaKeyPair.kt │ └── xtea │ ├── XteaByteBufExt.kt │ └── XteaKey.kt ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── haproxy ├── README.md ├── build.gradle.kts └── src │ └── main │ └── kotlin │ └── org │ └── jire │ └── netty │ └── haproxy │ ├── HAProxy.kt │ ├── HAProxyAttribute.kt │ ├── HAProxyAttributes.kt │ ├── HAProxyChannelInitializer.kt │ ├── HAProxyDetectionHandler.kt │ ├── HAProxyHandlerNames.kt │ ├── HAProxyIdleStateHandler.kt │ ├── HAProxyMessageHandler.kt │ ├── HAProxyMode.kt │ ├── HAProxyParentHandler.kt │ └── HAProxyPingHandler.kt ├── protocol ├── build.gradle.kts ├── osrs-221 │ ├── build.gradle.kts │ ├── osrs-221-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ ├── ChannelExceptionHandler.kt │ │ │ ├── EntityInfoProtocols.kt │ │ │ ├── GameConnectionHandler.kt │ │ │ ├── GameMessageCounter.kt │ │ │ ├── GameMessageCounterProvider.kt │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ ├── InetAddressTracker.kt │ │ │ ├── InetAddressValidator.kt │ │ │ ├── LoginChannelInitializer.kt │ │ │ ├── LoginDecoderService.kt │ │ │ ├── MessageQueueProvider.kt │ │ │ ├── NetworkService.kt │ │ │ ├── Session.kt │ │ │ ├── SessionIdGenerator.kt │ │ │ ├── StreamCipherProvider.kt │ │ │ ├── bootstrap │ │ │ └── BootstrapFactory.kt │ │ │ ├── config │ │ │ └── NetworkConfiguration.kt │ │ │ ├── decoder │ │ │ └── DecoderState.kt │ │ │ ├── encoder │ │ │ └── OutgoingMessageEncoder.kt │ │ │ ├── game │ │ │ ├── GameMessageDecoder.kt │ │ │ ├── GameMessageEncoder.kt │ │ │ └── GameMessageHandler.kt │ │ │ ├── handlers │ │ │ ├── ExceptionHandlers.kt │ │ │ ├── GameMessageHandlers.kt │ │ │ ├── INetAddressHandlers.kt │ │ │ └── LoginHandlers.kt │ │ │ ├── implementation │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ ├── js5 │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ ├── Js5Authorizer.kt │ │ │ ├── Js5ChannelHandler.kt │ │ │ ├── Js5Client.kt │ │ │ ├── Js5Configuration.kt │ │ │ ├── Js5GroupProvider.kt │ │ │ ├── Js5MessageDecoder.kt │ │ │ ├── Js5MessageEncoder.kt │ │ │ ├── Js5Service.kt │ │ │ ├── NoopJs5Authorizer.kt │ │ │ └── util │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ └── UniqueQueue.kt │ │ │ ├── logging │ │ │ └── LoggingExt.kt │ │ │ ├── login │ │ │ ├── GameLoginResponseHandler.kt │ │ │ ├── LoginChannelHandler.kt │ │ │ ├── LoginConnectionHandler.kt │ │ │ ├── LoginMessageDecoder.kt │ │ │ └── LoginMessageEncoder.kt │ │ │ ├── obfuscation │ │ │ └── OpcodeMapper.kt │ │ │ ├── repositories │ │ │ ├── MessageDecoderRepositories.kt │ │ │ └── MessageEncoderRepositories.kt │ │ │ ├── suppliers │ │ │ ├── NpcInfoSupplier.kt │ │ │ └── PlayerInfoSupplier.kt │ │ │ └── util │ │ │ └── FutureExtensions.kt │ ├── osrs-221-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-221-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ └── IfButtonTDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ └── EventMouseScrollDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ ├── TimingsDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── TeleportDecoder.kt │ │ │ │ │ │ │ └── UpdatePlayerModelDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedAngleAbsoluteEncoder.kt │ │ │ │ │ ├── CamLookAtEasedAngleRelativeEncoder.kt │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToEasedCircularEncoder.kt │ │ │ │ │ ├── CamMoveToEasedEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV1Encoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfInitialStateEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ └── RebuildRegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HeatmapToggleEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateSiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatEncoder.kt │ │ │ │ │ │ ├── UpdateStatOldEncoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeEncoder.kt │ │ │ │ │ ├── NpcInfoSmallEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongEncoder.kt │ │ │ │ │ ├── MidiSongOldEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificEncoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeEncoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjOpFilterEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-221-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── RSProtFlags.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-221-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ └── IfButtonT.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ ├── Timings.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModel.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedAngleAbsolute.kt │ │ │ │ ├── CamLookAtEasedAngleRelative.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToEased.kt │ │ │ │ ├── CamMoveToEasedCircular.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV1.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLarge.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmall.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ └── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfInitialState.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HeatmapToggle.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateSiteSettings.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStat.kt │ │ │ │ │ ├── UpdateStatOld.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSong.kt │ │ │ │ ├── MidiSongOld.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecific.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChange.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjOpFilter.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-221-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-222 │ ├── build.gradle.kts │ ├── osrs-222-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ ├── ChannelExceptionHandler.kt │ │ │ ├── EntityInfoProtocols.kt │ │ │ ├── GameConnectionHandler.kt │ │ │ ├── GameMessageCounter.kt │ │ │ ├── GameMessageCounterProvider.kt │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ ├── InetAddressTracker.kt │ │ │ ├── InetAddressValidator.kt │ │ │ ├── LoginChannelInitializer.kt │ │ │ ├── LoginDecoderService.kt │ │ │ ├── MessageQueueProvider.kt │ │ │ ├── NetworkService.kt │ │ │ ├── Session.kt │ │ │ ├── SessionIdGenerator.kt │ │ │ ├── StreamCipherProvider.kt │ │ │ ├── bootstrap │ │ │ └── BootstrapFactory.kt │ │ │ ├── config │ │ │ └── NetworkConfiguration.kt │ │ │ ├── decoder │ │ │ └── DecoderState.kt │ │ │ ├── encoder │ │ │ └── OutgoingMessageEncoder.kt │ │ │ ├── game │ │ │ ├── GameMessageDecoder.kt │ │ │ ├── GameMessageEncoder.kt │ │ │ └── GameMessageHandler.kt │ │ │ ├── handlers │ │ │ ├── ExceptionHandlers.kt │ │ │ ├── GameMessageHandlers.kt │ │ │ ├── INetAddressHandlers.kt │ │ │ └── LoginHandlers.kt │ │ │ ├── implementation │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ ├── js5 │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ ├── Js5Authorizer.kt │ │ │ ├── Js5ChannelHandler.kt │ │ │ ├── Js5Client.kt │ │ │ ├── Js5Configuration.kt │ │ │ ├── Js5GroupProvider.kt │ │ │ ├── Js5MessageDecoder.kt │ │ │ ├── Js5MessageEncoder.kt │ │ │ ├── Js5Service.kt │ │ │ ├── NoopJs5Authorizer.kt │ │ │ └── util │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ └── UniqueQueue.kt │ │ │ ├── logging │ │ │ └── LoggingExt.kt │ │ │ ├── login │ │ │ ├── GameLoginResponseHandler.kt │ │ │ ├── LoginChannelHandler.kt │ │ │ ├── LoginConnectionHandler.kt │ │ │ ├── LoginMessageDecoder.kt │ │ │ └── LoginMessageEncoder.kt │ │ │ ├── obfuscation │ │ │ └── OpcodeMapper.kt │ │ │ ├── repositories │ │ │ ├── MessageDecoderRepositories.kt │ │ │ └── MessageEncoderRepositories.kt │ │ │ ├── suppliers │ │ │ ├── NpcInfoSupplier.kt │ │ │ ├── PlayerInfoSupplier.kt │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ └── util │ │ │ └── FutureExtensions.kt │ ├── osrs-222-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-222-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ └── IfButtonTDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ ├── TimingsDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── TeleportDecoder.kt │ │ │ │ │ │ │ └── UpdatePlayerModelDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedAngleAbsoluteEncoder.kt │ │ │ │ │ ├── CamLookAtEasedAngleRelativeEncoder.kt │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToEasedCircularEncoder.kt │ │ │ │ │ ├── CamMoveToEasedEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetEncoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV1Encoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfInitialStateEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ └── RebuildWorldEntityEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HeatmapToggleEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateSiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatEncoder.kt │ │ │ │ │ │ ├── UpdateStatOldEncoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeEncoder.kt │ │ │ │ │ ├── NpcInfoSmallEncoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongEncoder.kt │ │ │ │ │ ├── MidiSongOldEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificEncoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldEncoder.kt │ │ │ │ │ └── WorldEntityInfoEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeEncoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjOpFilterEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-222-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── RSProtFlags.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-222-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ └── IfButtonT.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ ├── Timings.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModel.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedAngleAbsolute.kt │ │ │ │ ├── CamLookAtEasedAngleRelative.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToEased.kt │ │ │ │ ├── CamMoveToEasedCircular.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTarget.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV1.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLarge.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmall.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ ├── PlayerInfoWorldDetailsStorage.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoPacket.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfInitialState.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildWorldEntity.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HeatmapToggle.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateSiteSettings.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStat.kt │ │ │ │ │ ├── UpdateStatOld.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSong.kt │ │ │ │ ├── MidiSongOld.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecific.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ └── SetActiveWorld.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChange.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjOpFilter.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-222-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-223 │ ├── build.gradle.kts │ ├── osrs-223-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ ├── ChannelExceptionHandler.kt │ │ │ ├── EntityInfoProtocols.kt │ │ │ ├── GameConnectionHandler.kt │ │ │ ├── GameMessageCounter.kt │ │ │ ├── GameMessageCounterProvider.kt │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ ├── InetAddressTracker.kt │ │ │ ├── InetAddressValidator.kt │ │ │ ├── LoginChannelInitializer.kt │ │ │ ├── LoginDecoderService.kt │ │ │ ├── MessageQueueProvider.kt │ │ │ ├── NetworkService.kt │ │ │ ├── Session.kt │ │ │ ├── SessionIdGenerator.kt │ │ │ ├── StreamCipherProvider.kt │ │ │ ├── bootstrap │ │ │ └── BootstrapFactory.kt │ │ │ ├── config │ │ │ └── NetworkConfiguration.kt │ │ │ ├── decoder │ │ │ └── DecoderState.kt │ │ │ ├── encoder │ │ │ └── OutgoingMessageEncoder.kt │ │ │ ├── game │ │ │ ├── GameMessageDecoder.kt │ │ │ ├── GameMessageEncoder.kt │ │ │ └── GameMessageHandler.kt │ │ │ ├── handlers │ │ │ ├── ExceptionHandlers.kt │ │ │ ├── GameMessageHandlers.kt │ │ │ ├── INetAddressHandlers.kt │ │ │ └── LoginHandlers.kt │ │ │ ├── implementation │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ ├── js5 │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ ├── Js5Authorizer.kt │ │ │ ├── Js5ChannelHandler.kt │ │ │ ├── Js5Client.kt │ │ │ ├── Js5Configuration.kt │ │ │ ├── Js5GroupProvider.kt │ │ │ ├── Js5MessageDecoder.kt │ │ │ ├── Js5MessageEncoder.kt │ │ │ ├── Js5Service.kt │ │ │ ├── NoopJs5Authorizer.kt │ │ │ └── util │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ └── UniqueQueue.kt │ │ │ ├── logging │ │ │ └── LoggingExt.kt │ │ │ ├── login │ │ │ ├── GameLoginResponseHandler.kt │ │ │ ├── LoginChannelHandler.kt │ │ │ ├── LoginConnectionHandler.kt │ │ │ ├── LoginMessageDecoder.kt │ │ │ └── LoginMessageEncoder.kt │ │ │ ├── obfuscation │ │ │ └── OpcodeMapper.kt │ │ │ ├── repositories │ │ │ ├── MessageDecoderRepositories.kt │ │ │ └── MessageEncoderRepositories.kt │ │ │ ├── suppliers │ │ │ ├── NpcInfoSupplier.kt │ │ │ ├── PlayerInfoSupplier.kt │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ └── util │ │ │ └── FutureExtensions.kt │ ├── osrs-223-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-223-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ └── IfButtonTDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── TeleportDecoder.kt │ │ │ │ │ │ │ └── UpdatePlayerModelDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetEncoder.kt │ │ │ │ │ ├── CamTargetOldEncoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV1Encoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityEncoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatEncoder.kt │ │ │ │ │ │ ├── UpdateStatOldEncoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeEncoder.kt │ │ │ │ │ ├── NpcInfoSmallEncoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongEncoder.kt │ │ │ │ │ ├── MidiSongOldEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificEncoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldEncoder.kt │ │ │ │ │ └── WorldEntityInfoEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeEncoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-223-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-223-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ └── IfButtonT.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModel.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTarget.kt │ │ │ │ ├── CamTargetOld.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV1.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLarge.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmall.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ ├── PlayerInfoWorldDetailsStorage.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoPacket.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildWorldEntity.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStat.kt │ │ │ │ │ ├── UpdateStatOld.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSong.kt │ │ │ │ ├── MidiSongOld.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecific.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ └── SetActiveWorld.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChange.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-223-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-224 │ ├── build.gradle.kts │ ├── osrs-224-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapFactory.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ └── LoginHandlers.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-224-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-224-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── TeleportDecoder.kt │ │ │ │ │ │ │ └── UpdatePlayerModelDecoderOld.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetEncoder.kt │ │ │ │ │ ├── CamTargetOldEncoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV1Encoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityEncoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatEncoder.kt │ │ │ │ │ │ ├── UpdateStatOldEncoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeEncoder.kt │ │ │ │ │ ├── NpcInfoSmallEncoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongEncoder.kt │ │ │ │ │ ├── MidiSongOldEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificEncoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldEncoder.kt │ │ │ │ │ └── WorldEntityInfoEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeEncoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-224-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-224-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelOld.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTarget.kt │ │ │ │ ├── CamTargetOld.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV1.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLarge.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmall.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ ├── PlayerInfoWorldDetailsStorage.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoPacket.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildWorldEntity.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStat.kt │ │ │ │ │ ├── UpdateStatOld.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSong.kt │ │ │ │ ├── MidiSongOld.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecific.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ └── SetActiveWorld.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChange.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-224-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-225 │ ├── build.gradle.kts │ ├── osrs-225-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ └── OutgoingMessageSizeEstimator.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-225-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-225-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── TeleportDecoder.kt │ │ │ │ │ │ │ └── UpdatePlayerModelDecoderOld.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetEncoder.kt │ │ │ │ │ ├── CamTargetOldEncoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV1Encoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityEncoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatEncoder.kt │ │ │ │ │ │ ├── UpdateStatOldEncoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeEncoder.kt │ │ │ │ │ ├── NpcInfoSmallEncoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongEncoder.kt │ │ │ │ │ ├── MidiSongOldEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificEncoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldEncoder.kt │ │ │ │ │ └── WorldEntityInfoEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeEncoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-225-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-225-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelOld.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTarget.kt │ │ │ │ ├── CamTargetOld.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV1.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLarge.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmall.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoPacket.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildWorldEntity.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStat.kt │ │ │ │ │ ├── UpdateStatOld.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSong.kt │ │ │ │ ├── MidiSongOld.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecific.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ └── SetActiveWorld.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChange.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-225-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-226 │ ├── build.gradle.kts │ ├── osrs-226-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ └── OutgoingMessageSizeEstimator.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-226-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-226-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ ├── TeleportDecoder.kt │ │ │ │ │ │ │ └── UpdatePlayerModelDecoderV1.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV1Encoder.kt │ │ │ │ │ ├── CamTargetV2Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV1Encoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityEncoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV1Encoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV1Encoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV3Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldEncoder.kt │ │ │ │ │ └── WorldEntityInfoV3Encoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeEncoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-226-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-226-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV1.kt │ │ │ │ ├── CamTargetV2.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV1.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoTypealiases.kt │ │ │ │ │ ├── WorldEntityInfoV3Packet.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildWorldEntity.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV1.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV1.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ ├── ProjAnimSpecificV3.kt │ │ │ │ └── SpecificTypealiases.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ └── SetActiveWorld.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChange.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-226-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-227 │ ├── build.gradle.kts │ ├── osrs-227-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ └── OutgoingMessageSizeEstimator.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-227-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-227-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV2Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityEncoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV3Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldEncoder.kt │ │ │ │ │ └── WorldEntityInfoV4Encoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeEncoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-227-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-227-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV2.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV4Packet.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildWorldEntity.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ ├── ProjAnimSpecificV3.kt │ │ │ │ └── SpecificTypealiases.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ └── SetActiveWorld.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChange.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-227-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-228 │ ├── build.gradle.kts │ ├── osrs-228-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ ├── OutgoingMessageSizeEstimator.kt │ │ │ │ └── idlestate │ │ │ │ │ ├── DefaultIdleStateHandlerSupplier.kt │ │ │ │ │ ├── IdleStateHandlerSupplier.kt │ │ │ │ │ └── IdleStateHandlerSuppliers.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-228-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-228-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV2Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityEncoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV3Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldEncoder.kt │ │ │ │ │ └── WorldEntityInfoV4Encoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV1Encoder.kt │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-228-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-228-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV2.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV4Packet.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildWorldEntity.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ ├── ProjAnimSpecificV3.kt │ │ │ │ └── SpecificTypealiases.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ └── SetActiveWorld.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV1.kt │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-228-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-229 │ ├── build.gradle.kts │ ├── osrs-229-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ └── OutgoingMessageSizeEstimator.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-229-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-229-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV3Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityV2Encoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV3Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── ClearEntitiesEncoder.kt │ │ │ │ │ ├── SetActiveWorldV1Encoder.kt │ │ │ │ │ ├── SetActiveWorldV2Encoder.kt │ │ │ │ │ └── WorldEntityInfoV5Encoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-229-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-229-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV3.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV4Packet.kt │ │ │ │ │ ├── WorldEntityPriority.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildTypealiases.kt │ │ │ │ ├── RebuildWorldEntityV2.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ ├── ProjAnimSpecificV3.kt │ │ │ │ └── SpecificTypealiases.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── ClearEntities.kt │ │ │ │ ├── SetActiveWorldV1.kt │ │ │ │ ├── SetActiveWorldV2.kt │ │ │ │ └── WorldEntityTypealiases.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-229-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-230 │ ├── build.gradle.kts │ ├── osrs-230-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ └── OutgoingMessageSizeEstimator.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-230-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-230-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV3Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncEncoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsEncoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityV2Encoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV3Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── SetActiveWorldV1Encoder.kt │ │ │ │ │ ├── SetActiveWorldV2Encoder.kt │ │ │ │ │ └── WorldEntityInfoV5Encoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimEncoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-230-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-230-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV3.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV4Packet.kt │ │ │ │ │ ├── WorldEntityPriority.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResync.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEvents.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildTypealiases.kt │ │ │ │ ├── RebuildWorldEntityV2.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ ├── ProjAnimSpecificV3.kt │ │ │ │ └── SpecificTypealiases.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── SetActiveWorldV1.kt │ │ │ │ ├── SetActiveWorldV2.kt │ │ │ │ └── WorldEntityTypealiases.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnim.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-230-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-231 │ ├── build.gradle.kts │ ├── osrs-231-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ ├── OutgoingMessageSizeEstimator.kt │ │ │ │ └── idlestate │ │ │ │ │ ├── DefaultIdleStateHandlerSupplier.kt │ │ │ │ │ ├── IdleStateHandlerSupplier.kt │ │ │ │ │ └── IdleStateHandlerSuppliers.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-231-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-231-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── If3ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ ├── IfButtonXDecoder.kt │ │ │ │ │ │ ├── IfRunScriptDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickDecoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ ├── EventNativeMouseClickDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV3Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncV1Encoder.kt │ │ │ │ │ ├── IfResyncV2Encoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsV1Encoder.kt │ │ │ │ │ ├── IfSetEventsV2Encoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityV2Encoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceAngleEncoder.kt │ │ │ │ │ │ ├── NpcFaceCoordEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── ProjAnimSpecificV3Encoder.kt │ │ │ │ │ └── ProjAnimSpecificV4Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── SetActiveWorldV2Encoder.kt │ │ │ │ │ └── WorldEntityInfoV5Encoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimV1Encoder.kt │ │ │ │ │ ├── MapProjAnimV2Encoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-231-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── FaceCoord.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-231-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ ├── IfRunScript.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClick.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseClick.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV3.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV4Packet.kt │ │ │ │ │ ├── WorldEntityPriority.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResyncV1.kt │ │ │ │ ├── IfResyncV2.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEventsV1.kt │ │ │ │ ├── IfSetEventsV2.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ ├── IfSetText.kt │ │ │ │ └── InterfaceTypealiases.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildTypealiases.kt │ │ │ │ ├── RebuildWorldEntityV2.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ ├── ProjAnimSpecificV3.kt │ │ │ │ ├── ProjAnimSpecificV4.kt │ │ │ │ └── SpecificTypealiases.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── SetActiveWorldV2.kt │ │ │ │ └── WorldEntityTypealiases.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnimV1.kt │ │ │ │ ├── MapProjAnimV2.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-231-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-232 │ ├── build.gradle.kts │ ├── osrs-232-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ ├── OutgoingMessageSizeEstimator.kt │ │ │ │ └── idlestate │ │ │ │ │ ├── DefaultIdleStateHandlerSupplier.kt │ │ │ │ │ ├── IdleStateHandlerSupplier.kt │ │ │ │ │ └── IdleStateHandlerSuppliers.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-232-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-232-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ ├── IfButtonXDecoder.kt │ │ │ │ │ │ ├── IfRunScriptDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickV1Decoder.kt │ │ │ │ │ │ ├── EventMouseClickV2Decoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ └── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV3Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncV2Encoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsV2Encoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityV2Encoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceAngleEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── ObjAddSpecificEncoder.kt │ │ │ │ │ ├── ObjCountSpecificEncoder.kt │ │ │ │ │ ├── ObjCustomiseSpecificEncoder.kt │ │ │ │ │ ├── ObjDelSpecificEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsSpecificEncoder.kt │ │ │ │ │ ├── ObjUncustomiseSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV4Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── SetActiveWorldV2Encoder.kt │ │ │ │ │ └── WorldEntityInfoV5Encoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimV2Encoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-232-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ ├── TypeCustomisation.kt │ │ │ │ │ └── VisibleOps.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ └── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-232-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ ├── IfRunScript.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClickV1.kt │ │ │ │ │ ├── EventMouseClickV2.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ └── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV3.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV4Packet.kt │ │ │ │ │ ├── WorldEntityPriority.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResyncV2.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEventsV2.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildTypealiases.kt │ │ │ │ ├── RebuildWorldEntityV2.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── ObjAddSpecific.kt │ │ │ │ ├── ObjCountSpecific.kt │ │ │ │ ├── ObjCustomiseSpecific.kt │ │ │ │ ├── ObjDelSpecific.kt │ │ │ │ ├── ObjEnabledOpsSpecific.kt │ │ │ │ ├── ObjUncustomiseSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecificV4.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── SetActiveWorldV2.kt │ │ │ │ └── WorldEntityTypealiases.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnimV2.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-232-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-233 │ ├── build.gradle.kts │ ├── osrs-233-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ ├── OutgoingMessageSizeEstimator.kt │ │ │ │ └── idlestate │ │ │ │ │ ├── DefaultIdleStateHandlerSupplier.kt │ │ │ │ │ ├── IdleStateHandlerSupplier.kt │ │ │ │ │ └── IdleStateHandlerSuppliers.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-233-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-233-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ ├── IfButtonXDecoder.kt │ │ │ │ │ │ ├── IfRunScriptDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickV1Decoder.kt │ │ │ │ │ │ ├── EventMouseClickV2Decoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ ├── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ │ └── worldentities │ │ │ │ │ │ ├── OpWorldEntity1Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity2Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity3Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity4Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity5Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity6Decoder.kt │ │ │ │ │ │ └── OpWorldEntityTDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV3Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncV2Encoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsV2Encoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityV2Encoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ └── UrlOpenEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── AccountFlagsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceAngleEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── ObjAddSpecificEncoder.kt │ │ │ │ │ ├── ObjCountSpecificEncoder.kt │ │ │ │ │ ├── ObjCustomiseSpecificEncoder.kt │ │ │ │ │ ├── ObjDelSpecificEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsSpecificEncoder.kt │ │ │ │ │ ├── ObjUncustomiseSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV4Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── SetActiveWorldV2Encoder.kt │ │ │ │ │ ├── WorldEntityInfoV6Encoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── WorldEntityAvatarExtendedInfoDesktopWriter.kt │ │ │ │ │ │ └── WorldEntityVisibleOpsEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimV2Encoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-233-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ └── TypeCustomisation.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ ├── VisibleOps.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ ├── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── worldentityinfo │ │ │ │ └── encoder │ │ │ │ └── WorldEntityExtendedInfoEncoders.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-233-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ ├── IfRunScript.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClickV1.kt │ │ │ │ │ ├── EventMouseClickV2.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ │ └── worldentities │ │ │ │ │ ├── OpWorldEntity.kt │ │ │ │ │ ├── OpWorldEntity6.kt │ │ │ │ │ └── OpWorldEntityT.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV3.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarExtendedInfo.kt │ │ │ │ │ ├── WorldEntityAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV6Packet.kt │ │ │ │ │ ├── WorldEntityPriority.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResyncV2.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEventsV2.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildTypealiases.kt │ │ │ │ ├── RebuildWorldEntityV2.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ └── UrlOpen.kt │ │ │ │ └── player │ │ │ │ │ ├── AccountFlags.kt │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── ObjAddSpecific.kt │ │ │ │ ├── ObjCountSpecific.kt │ │ │ │ ├── ObjCustomiseSpecific.kt │ │ │ │ ├── ObjDelSpecific.kt │ │ │ │ ├── ObjEnabledOpsSpecific.kt │ │ │ │ ├── ObjUncustomiseSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecificV4.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── SetActiveWorldV2.kt │ │ │ │ └── WorldEntityTypealiases.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnimV2.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-233-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-234 │ ├── build.gradle.kts │ ├── osrs-234-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ ├── OutgoingMessageSizeEstimator.kt │ │ │ │ └── idlestate │ │ │ │ │ ├── DefaultIdleStateHandlerSupplier.kt │ │ │ │ │ ├── IdleStateHandlerSupplier.kt │ │ │ │ │ └── IdleStateHandlerSuppliers.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-234-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-234-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ ├── IfButtonXDecoder.kt │ │ │ │ │ │ ├── IfRunScriptDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickV1Decoder.kt │ │ │ │ │ │ ├── EventMouseClickV2Decoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ ├── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ │ └── worldentities │ │ │ │ │ │ ├── OpWorldEntity1Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity2Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity3Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity4Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity5Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity6Decoder.kt │ │ │ │ │ │ └── OpWorldEntityTDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV3Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncV2Encoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsV2Encoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityV2Encoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ ├── UrlOpenEncoder.kt │ │ │ │ │ │ └── ZBufEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── AccountFlagsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceAngleEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── ObjAddSpecificEncoder.kt │ │ │ │ │ ├── ObjCountSpecificEncoder.kt │ │ │ │ │ ├── ObjCustomiseSpecificEncoder.kt │ │ │ │ │ ├── ObjDelSpecificEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsSpecificEncoder.kt │ │ │ │ │ ├── ObjUncustomiseSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV4Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── SetActiveWorldV2Encoder.kt │ │ │ │ │ ├── WorldEntityInfoV6Encoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── WorldEntityAvatarExtendedInfoDesktopWriter.kt │ │ │ │ │ │ ├── WorldEntitySequenceEncoder.kt │ │ │ │ │ │ └── WorldEntityVisibleOpsEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimV2Encoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ └── PlayerInfoTest.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-234-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ └── TypeCustomisation.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ ├── VisibleOps.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ ├── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── worldentityinfo │ │ │ │ └── encoder │ │ │ │ └── WorldEntityExtendedInfoEncoders.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-234-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ ├── IfRunScript.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClickV1.kt │ │ │ │ │ ├── EventMouseClickV2.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ │ └── worldentities │ │ │ │ │ ├── OpWorldEntity.kt │ │ │ │ │ ├── OpWorldEntity6.kt │ │ │ │ │ └── OpWorldEntityT.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV3.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarExtendedInfo.kt │ │ │ │ │ ├── WorldEntityAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV6Packet.kt │ │ │ │ │ ├── WorldEntityPriority.kt │ │ │ │ │ └── WorldEntityProtocol.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResyncV2.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEventsV2.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildTypealiases.kt │ │ │ │ ├── RebuildWorldEntityV2.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ ├── UrlOpen.kt │ │ │ │ │ └── ZBuf.kt │ │ │ │ └── player │ │ │ │ │ ├── AccountFlags.kt │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── ObjAddSpecific.kt │ │ │ │ ├── ObjCountSpecific.kt │ │ │ │ ├── ObjCustomiseSpecific.kt │ │ │ │ ├── ObjDelSpecific.kt │ │ │ │ ├── ObjEnabledOpsSpecific.kt │ │ │ │ ├── ObjUncustomiseSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecificV4.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── SetActiveWorldV2.kt │ │ │ │ └── WorldEntityTypealiases.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnimV2.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-234-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt ├── osrs-235 │ ├── build.gradle.kts │ ├── osrs-235-api │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── AbstractNetworkServiceFactory.kt │ │ │ │ ├── ChannelExceptionHandler.kt │ │ │ │ ├── EntityInfoProtocols.kt │ │ │ │ ├── GameConnectionHandler.kt │ │ │ │ ├── GameMessageCounter.kt │ │ │ │ ├── GameMessageCounterProvider.kt │ │ │ │ ├── IncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── InetAddressTracker.kt │ │ │ │ ├── InetAddressValidator.kt │ │ │ │ ├── LoginChannelInitializer.kt │ │ │ │ ├── LoginDecoderService.kt │ │ │ │ ├── MessageQueueProvider.kt │ │ │ │ ├── NetworkService.kt │ │ │ │ ├── Session.kt │ │ │ │ ├── SessionIdGenerator.kt │ │ │ │ ├── StreamCipherProvider.kt │ │ │ │ ├── binary │ │ │ │ ├── BinaryHeaderProvider.kt │ │ │ │ ├── PartialBinaryHeader.kt │ │ │ │ └── writer │ │ │ │ │ ├── BinaryBlobAppendWriter.kt │ │ │ │ │ ├── BinaryBlobAtomicReplacementWriter.kt │ │ │ │ │ ├── BinaryBlobWriter.kt │ │ │ │ │ └── PathWriteHelpers.kt │ │ │ │ ├── bootstrap │ │ │ │ └── BootstrapBuilder.kt │ │ │ │ ├── config │ │ │ │ └── NetworkConfiguration.kt │ │ │ │ ├── decoder │ │ │ │ └── DecoderState.kt │ │ │ │ ├── encoder │ │ │ │ └── OutgoingMessageEncoder.kt │ │ │ │ ├── game │ │ │ │ ├── GameDisconnectionReason.kt │ │ │ │ ├── GameMessageDecoder.kt │ │ │ │ ├── GameMessageEncoder.kt │ │ │ │ └── GameMessageHandler.kt │ │ │ │ ├── handlers │ │ │ │ ├── ExceptionHandlers.kt │ │ │ │ ├── GameMessageHandlers.kt │ │ │ │ ├── INetAddressHandlers.kt │ │ │ │ ├── LoginHandlers.kt │ │ │ │ ├── OutgoingMessageSizeEstimator.kt │ │ │ │ └── idlestate │ │ │ │ │ ├── DefaultIdleStateHandlerSupplier.kt │ │ │ │ │ ├── IdleStateHandlerSupplier.kt │ │ │ │ │ └── IdleStateHandlerSuppliers.kt │ │ │ │ ├── implementation │ │ │ │ ├── DefaultGameMessageCounter.kt │ │ │ │ ├── DefaultGameMessageCounterProvider.kt │ │ │ │ ├── DefaultIncomingGameMessageConsumerExceptionHandler.kt │ │ │ │ ├── DefaultInetAddressTracker.kt │ │ │ │ ├── DefaultInetAddressValidator.kt │ │ │ │ ├── DefaultLoginDecoderService.kt │ │ │ │ ├── DefaultMessageQueueProvider.kt │ │ │ │ ├── DefaultSessionIdGenerator.kt │ │ │ │ └── DefaultStreamCipherProvider.kt │ │ │ │ ├── js5 │ │ │ │ ├── ConcurrentJs5Authorizer.kt │ │ │ │ ├── Js5Authorizer.kt │ │ │ │ ├── Js5ChannelHandler.kt │ │ │ │ ├── Js5Client.kt │ │ │ │ ├── Js5Configuration.kt │ │ │ │ ├── Js5DisconnectionReason.kt │ │ │ │ ├── Js5GroupProvider.kt │ │ │ │ ├── Js5MessageDecoder.kt │ │ │ │ ├── Js5MessageEncoder.kt │ │ │ │ ├── Js5Service.kt │ │ │ │ ├── NoopJs5Authorizer.kt │ │ │ │ └── util │ │ │ │ │ ├── IntArrayDeque.kt │ │ │ │ │ └── UniqueQueue.kt │ │ │ │ ├── logging │ │ │ │ └── LoggingExt.kt │ │ │ │ ├── login │ │ │ │ ├── GameLoginResponseHandler.kt │ │ │ │ ├── LoginChannelHandler.kt │ │ │ │ ├── LoginConnectionHandler.kt │ │ │ │ ├── LoginDisconnectionReason.kt │ │ │ │ ├── LoginMessageDecoder.kt │ │ │ │ └── LoginMessageEncoder.kt │ │ │ │ ├── metrics │ │ │ │ └── ChannelTrafficHandlerExtensions.kt │ │ │ │ ├── obfuscation │ │ │ │ └── OpcodeMapper.kt │ │ │ │ ├── repositories │ │ │ │ ├── MessageDecoderRepositories.kt │ │ │ │ └── MessageEncoderRepositories.kt │ │ │ │ ├── suppliers │ │ │ │ ├── NpcInfoSupplier.kt │ │ │ │ ├── PlayerInfoSupplier.kt │ │ │ │ └── WorldEntityInfoSupplier.kt │ │ │ │ ├── traffic │ │ │ │ └── ConcurrentNetworkTrafficWriter.kt │ │ │ │ └── util │ │ │ │ ├── FutureExtensions.kt │ │ │ │ └── ZonePartialEnclosedCacheBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── api │ │ │ └── util │ │ │ └── ZonePartialEnclosedCacheBufferTest.kt │ ├── osrs-235-common │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── common │ │ │ ├── client │ │ │ └── OldSchoolClientType.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ └── inv │ │ │ └── InventoryObject.kt │ ├── osrs-235-desktop │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── benchmarks │ │ │ ├── kotlin │ │ │ │ └── net │ │ │ │ │ └── rsprot │ │ │ │ │ └── protocol │ │ │ │ │ └── game │ │ │ │ │ └── outgoing │ │ │ │ │ └── info │ │ │ │ │ ├── NpcInfoBenchmark.kt │ │ │ │ │ └── PlayerInfoBenchmark.kt │ │ │ └── resources │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ └── huffman.dat │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ ├── incoming │ │ │ │ ├── codec │ │ │ │ │ ├── buttons │ │ │ │ │ │ ├── If1ButtonDecoder.kt │ │ │ │ │ │ ├── IfButtonDDecoder.kt │ │ │ │ │ │ ├── IfButtonTDecoder.kt │ │ │ │ │ │ ├── IfButtonXDecoder.kt │ │ │ │ │ │ ├── IfRunScriptDecoder.kt │ │ │ │ │ │ └── IfSubOpDecoder.kt │ │ │ │ │ ├── clan │ │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannelDecoder.kt │ │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannelDecoder.kt │ │ │ │ │ │ ├── ClanChannelFullRequestDecoder.kt │ │ │ │ │ │ ├── ClanChannelKickUserDecoder.kt │ │ │ │ │ │ └── ClanSettingsFullRequestDecoder.kt │ │ │ │ │ ├── events │ │ │ │ │ │ ├── EventAppletFocusDecoder.kt │ │ │ │ │ │ ├── EventCameraPositionDecoder.kt │ │ │ │ │ │ ├── EventKeyboardDecoder.kt │ │ │ │ │ │ ├── EventMouseClickV1Decoder.kt │ │ │ │ │ │ ├── EventMouseClickV2Decoder.kt │ │ │ │ │ │ ├── EventMouseMoveDecoder.kt │ │ │ │ │ │ ├── EventMouseScrollDecoder.kt │ │ │ │ │ │ └── EventNativeMouseMoveDecoder.kt │ │ │ │ │ ├── friendchat │ │ │ │ │ │ ├── FriendChatJoinLeaveDecoder.kt │ │ │ │ │ │ ├── FriendChatKickDecoder.kt │ │ │ │ │ │ └── FriendChatSetRankDecoder.kt │ │ │ │ │ ├── locs │ │ │ │ │ │ ├── OpLoc1Decoder.kt │ │ │ │ │ │ ├── OpLoc2Decoder.kt │ │ │ │ │ │ ├── OpLoc3Decoder.kt │ │ │ │ │ │ ├── OpLoc4Decoder.kt │ │ │ │ │ │ ├── OpLoc5Decoder.kt │ │ │ │ │ │ ├── OpLoc6Decoder.kt │ │ │ │ │ │ └── OpLocTDecoder.kt │ │ │ │ │ ├── messaging │ │ │ │ │ │ ├── MessagePrivateDecoder.kt │ │ │ │ │ │ └── MessagePublicDecoder.kt │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── ConnectionTelemetryDecoder.kt │ │ │ │ │ │ │ ├── DetectModifiedClientDecoder.kt │ │ │ │ │ │ │ ├── IdleDecoder.kt │ │ │ │ │ │ │ ├── MapBuildCompleteDecoder.kt │ │ │ │ │ │ │ ├── MembershipPromotionEligibilityDecoder.kt │ │ │ │ │ │ │ ├── NoTimeoutDecoder.kt │ │ │ │ │ │ │ ├── RSevenStatusDecoder.kt │ │ │ │ │ │ │ ├── ReflectionCheckReplyDecoder.kt │ │ │ │ │ │ │ ├── SendPingReplyDecoder.kt │ │ │ │ │ │ │ ├── SoundJingleEndDecoder.kt │ │ │ │ │ │ │ └── WindowStatusDecoder.kt │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── BugReportDecoder.kt │ │ │ │ │ │ │ ├── ClickWorldMapDecoder.kt │ │ │ │ │ │ │ ├── ClientCheatDecoder.kt │ │ │ │ │ │ │ ├── CloseModalDecoder.kt │ │ │ │ │ │ │ ├── HiscoreRequestDecoder.kt │ │ │ │ │ │ │ ├── IfCrmViewClickDecoder.kt │ │ │ │ │ │ │ ├── MoveGameClickDecoder.kt │ │ │ │ │ │ │ ├── MoveMinimapClickDecoder.kt │ │ │ │ │ │ │ ├── OculusLeaveDecoder.kt │ │ │ │ │ │ │ ├── SendSnapshotDecoder.kt │ │ │ │ │ │ │ ├── SetChatFilterSettingsDecoder.kt │ │ │ │ │ │ │ ├── SetHeadingDecoder.kt │ │ │ │ │ │ │ └── TeleportDecoder.kt │ │ │ │ │ ├── npcs │ │ │ │ │ │ ├── OpNpc1Decoder.kt │ │ │ │ │ │ ├── OpNpc2Decoder.kt │ │ │ │ │ │ ├── OpNpc3Decoder.kt │ │ │ │ │ │ ├── OpNpc4Decoder.kt │ │ │ │ │ │ ├── OpNpc5Decoder.kt │ │ │ │ │ │ ├── OpNpc6Decoder.kt │ │ │ │ │ │ └── OpNpcTDecoder.kt │ │ │ │ │ ├── objs │ │ │ │ │ │ ├── OpObj1Decoder.kt │ │ │ │ │ │ ├── OpObj2Decoder.kt │ │ │ │ │ │ ├── OpObj3Decoder.kt │ │ │ │ │ │ ├── OpObj4Decoder.kt │ │ │ │ │ │ ├── OpObj5Decoder.kt │ │ │ │ │ │ ├── OpObj6Decoder.kt │ │ │ │ │ │ └── OpObjTDecoder.kt │ │ │ │ │ ├── players │ │ │ │ │ │ ├── OpPlayer1Decoder.kt │ │ │ │ │ │ ├── OpPlayer2Decoder.kt │ │ │ │ │ │ ├── OpPlayer3Decoder.kt │ │ │ │ │ │ ├── OpPlayer4Decoder.kt │ │ │ │ │ │ ├── OpPlayer5Decoder.kt │ │ │ │ │ │ ├── OpPlayer6Decoder.kt │ │ │ │ │ │ ├── OpPlayer7Decoder.kt │ │ │ │ │ │ ├── OpPlayer8Decoder.kt │ │ │ │ │ │ └── OpPlayerTDecoder.kt │ │ │ │ │ ├── resumed │ │ │ │ │ │ ├── ResumePCountDialogDecoder.kt │ │ │ │ │ │ ├── ResumePNameDialogDecoder.kt │ │ │ │ │ │ ├── ResumePObjDialogDecoder.kt │ │ │ │ │ │ ├── ResumePStringDialogDecoder.kt │ │ │ │ │ │ └── ResumePauseButtonDecoder.kt │ │ │ │ │ ├── social │ │ │ │ │ │ ├── FriendListAddDecoder.kt │ │ │ │ │ │ ├── FriendListDelDecoder.kt │ │ │ │ │ │ ├── IgnoreListAddDecoder.kt │ │ │ │ │ │ └── IgnoreListDelDecoder.kt │ │ │ │ │ └── worldentities │ │ │ │ │ │ ├── OpWorldEntity1Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity2Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity3Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity4Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity5Decoder.kt │ │ │ │ │ │ ├── OpWorldEntity6Decoder.kt │ │ │ │ │ │ └── OpWorldEntityTDecoder.kt │ │ │ │ └── prot │ │ │ │ │ ├── DesktopGameMessageDecoderRepository.kt │ │ │ │ │ ├── GameClientProt.kt │ │ │ │ │ └── GameClientProtId.kt │ │ │ │ └── outgoing │ │ │ │ ├── codec │ │ │ │ ├── camera │ │ │ │ │ ├── CamLookAtEasedCoordEncoder.kt │ │ │ │ │ ├── CamLookAtEncoder.kt │ │ │ │ │ ├── CamModeEncoder.kt │ │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ │ ├── CamMoveToCyclesEncoder.kt │ │ │ │ │ ├── CamMoveToEncoder.kt │ │ │ │ │ ├── CamResetEncoder.kt │ │ │ │ │ ├── CamRotateByEncoder.kt │ │ │ │ │ ├── CamRotateToEncoder.kt │ │ │ │ │ ├── CamShakeEncoder.kt │ │ │ │ │ ├── CamSmoothResetEncoder.kt │ │ │ │ │ ├── CamTargetV3Encoder.kt │ │ │ │ │ └── OculusSyncEncoder.kt │ │ │ │ ├── clan │ │ │ │ │ ├── ClanChannelDeltaEncoder.kt │ │ │ │ │ ├── ClanChannelFullEncoder.kt │ │ │ │ │ ├── ClanSettingsDeltaEncoder.kt │ │ │ │ │ ├── ClanSettingsFullEncoder.kt │ │ │ │ │ ├── MessageClanChannelEncoder.kt │ │ │ │ │ ├── MessageClanChannelSystemEncoder.kt │ │ │ │ │ ├── VarClanDisableEncoder.kt │ │ │ │ │ ├── VarClanEnableEncoder.kt │ │ │ │ │ └── VarClanEncoder.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── MessageFriendChannelEncoder.kt │ │ │ │ │ ├── UpdateFriendChatChannelFullV2Encoder.kt │ │ │ │ │ └── UpdateFriendChatChannelSingleUserEncoder.kt │ │ │ │ ├── interfaces │ │ │ │ │ ├── IfClearInvEncoder.kt │ │ │ │ │ ├── IfCloseSubEncoder.kt │ │ │ │ │ ├── IfMoveSubEncoder.kt │ │ │ │ │ ├── IfOpenSubEncoder.kt │ │ │ │ │ ├── IfOpenTopEncoder.kt │ │ │ │ │ ├── IfResyncV2Encoder.kt │ │ │ │ │ ├── IfSetAngleEncoder.kt │ │ │ │ │ ├── IfSetAnimEncoder.kt │ │ │ │ │ ├── IfSetColourEncoder.kt │ │ │ │ │ ├── IfSetEventsV2Encoder.kt │ │ │ │ │ ├── IfSetHideEncoder.kt │ │ │ │ │ ├── IfSetModelEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadActiveEncoder.kt │ │ │ │ │ ├── IfSetNpcHeadEncoder.kt │ │ │ │ │ ├── IfSetObjectEncoder.kt │ │ │ │ │ ├── IfSetPlayerHeadEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBaseColourEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelBodyTypeEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelObjEncoder.kt │ │ │ │ │ ├── IfSetPlayerModelSelfEncoder.kt │ │ │ │ │ ├── IfSetPositionEncoder.kt │ │ │ │ │ ├── IfSetRotateSpeedEncoder.kt │ │ │ │ │ ├── IfSetScrollPosEncoder.kt │ │ │ │ │ └── IfSetTextEncoder.kt │ │ │ │ ├── inv │ │ │ │ │ ├── UpdateInvFullEncoder.kt │ │ │ │ │ ├── UpdateInvPartialEncoder.kt │ │ │ │ │ └── UpdateInvStopTransmitEncoder.kt │ │ │ │ ├── logout │ │ │ │ │ ├── LogoutEncoder.kt │ │ │ │ │ ├── LogoutTransferEncoder.kt │ │ │ │ │ └── LogoutWithReasonEncoder.kt │ │ │ │ ├── map │ │ │ │ │ ├── RebuildNormalEncoder.kt │ │ │ │ │ ├── RebuildRegionEncoder.kt │ │ │ │ │ ├── RebuildWorldEntityV2Encoder.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── RegionEncoder.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── HideLocOpsEncoder.kt │ │ │ │ │ │ ├── HideNpcOpsEncoder.kt │ │ │ │ │ │ ├── HideObjOpsEncoder.kt │ │ │ │ │ │ ├── HintArrowEncoder.kt │ │ │ │ │ │ ├── HiscoreReplyEncoder.kt │ │ │ │ │ │ ├── MinimapToggleEncoder.kt │ │ │ │ │ │ ├── PacketGroupStartEncoder.kt │ │ │ │ │ │ ├── ReflectionCheckerEncoder.kt │ │ │ │ │ │ ├── ResetAnimsEncoder.kt │ │ │ │ │ │ ├── ResetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SendPingEncoder.kt │ │ │ │ │ │ ├── ServerTickEndEncoder.kt │ │ │ │ │ │ ├── SetHeatmapEnabledEncoder.kt │ │ │ │ │ │ ├── SetInteractionModeEncoder.kt │ │ │ │ │ │ ├── SiteSettingsEncoder.kt │ │ │ │ │ │ ├── UpdateRebootTimerEncoder.kt │ │ │ │ │ │ ├── UpdateUid192Encoder.kt │ │ │ │ │ │ ├── UrlOpenEncoder.kt │ │ │ │ │ │ └── ZBufEncoder.kt │ │ │ │ │ └── player │ │ │ │ │ │ ├── AccountFlagsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsEncoder.kt │ │ │ │ │ │ ├── ChatFilterSettingsPrivateChatEncoder.kt │ │ │ │ │ │ ├── MessageGameEncoder.kt │ │ │ │ │ │ ├── RunClientScriptEncoder.kt │ │ │ │ │ │ ├── SetMapFlagEncoder.kt │ │ │ │ │ │ ├── SetPlayerOpEncoder.kt │ │ │ │ │ │ ├── TriggerOnDialogAbortEncoder.kt │ │ │ │ │ │ ├── UpdateRunEnergyEncoder.kt │ │ │ │ │ │ ├── UpdateRunWeightEncoder.kt │ │ │ │ │ │ ├── UpdateStatV2Encoder.kt │ │ │ │ │ │ ├── UpdateStockMarketSlotEncoder.kt │ │ │ │ │ │ └── UpdateTradingPostEncoder.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DesktopLowResolutionChangeEncoder.kt │ │ │ │ │ ├── NpcInfoLargeV5Encoder.kt │ │ │ │ │ ├── NpcInfoSmallV5Encoder.kt │ │ │ │ │ ├── SetNpcUpdateOriginEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── NpcBaseAnimationSetEncoder.kt │ │ │ │ │ │ ├── NpcBodyCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcCombatLevelChangeEncoder.kt │ │ │ │ │ │ ├── NpcExactMoveEncoder.kt │ │ │ │ │ │ ├── NpcFaceAngleEncoder.kt │ │ │ │ │ │ ├── NpcFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── NpcHeadCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHeadIconCustomisationEncoder.kt │ │ │ │ │ │ ├── NpcHitEncoder.kt │ │ │ │ │ │ ├── NpcNameChangeEncoder.kt │ │ │ │ │ │ ├── NpcSayEncoder.kt │ │ │ │ │ │ ├── NpcSequenceEncoder.kt │ │ │ │ │ │ ├── NpcSpotAnimEncoder.kt │ │ │ │ │ │ ├── NpcTintingEncoder.kt │ │ │ │ │ │ ├── NpcTransformationEncoder.kt │ │ │ │ │ │ ├── NpcVisibleOpsEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── NpcAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── PlayerInfoEncoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── PlayerAppearanceEncoder.kt │ │ │ │ │ │ ├── PlayerChatEncoder.kt │ │ │ │ │ │ ├── PlayerExactMoveEncoder.kt │ │ │ │ │ │ ├── PlayerFaceAngleEncoder.kt │ │ │ │ │ │ ├── PlayerFacePathingEntityEncoder.kt │ │ │ │ │ │ ├── PlayerHitEncoder.kt │ │ │ │ │ │ ├── PlayerMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerSayEncoder.kt │ │ │ │ │ │ ├── PlayerSequenceEncoder.kt │ │ │ │ │ │ ├── PlayerSpotAnimEncoder.kt │ │ │ │ │ │ ├── PlayerTemporaryMoveSpeedEncoder.kt │ │ │ │ │ │ ├── PlayerTintingEncoder.kt │ │ │ │ │ │ └── writer │ │ │ │ │ │ └── PlayerAvatarExtendedInfoDesktopWriter.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListLoadedEncoder.kt │ │ │ │ │ ├── MessagePrivateEchoEncoder.kt │ │ │ │ │ ├── MessagePrivateEncoder.kt │ │ │ │ │ ├── UpdateFriendListEncoder.kt │ │ │ │ │ └── UpdateIgnoreListEncoder.kt │ │ │ │ ├── sound │ │ │ │ │ ├── MidiJingleEncoder.kt │ │ │ │ │ ├── MidiSongStopEncoder.kt │ │ │ │ │ ├── MidiSongV2Encoder.kt │ │ │ │ │ ├── MidiSongWithSecondaryEncoder.kt │ │ │ │ │ ├── MidiSwapEncoder.kt │ │ │ │ │ └── SynthSoundEncoder.kt │ │ │ │ ├── specific │ │ │ │ │ ├── LocAnimSpecificEncoder.kt │ │ │ │ │ ├── MapAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcAnimSpecificEncoder.kt │ │ │ │ │ ├── NpcHeadIconSpecificEncoder.kt │ │ │ │ │ ├── NpcSpotAnimSpecificEncoder.kt │ │ │ │ │ ├── ObjAddSpecificEncoder.kt │ │ │ │ │ ├── ObjCountSpecificEncoder.kt │ │ │ │ │ ├── ObjCustomiseSpecificEncoder.kt │ │ │ │ │ ├── ObjDelSpecificEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsSpecificEncoder.kt │ │ │ │ │ ├── ObjUncustomiseSpecificEncoder.kt │ │ │ │ │ ├── PlayerAnimSpecificEncoder.kt │ │ │ │ │ ├── PlayerSpotAnimSpecificEncoder.kt │ │ │ │ │ └── ProjAnimSpecificV4Encoder.kt │ │ │ │ ├── varp │ │ │ │ │ ├── VarpLargeEncoder.kt │ │ │ │ │ ├── VarpResetEncoder.kt │ │ │ │ │ ├── VarpSmallEncoder.kt │ │ │ │ │ └── VarpSyncEncoder.kt │ │ │ │ ├── worldentity │ │ │ │ │ ├── SetActiveWorldV2Encoder.kt │ │ │ │ │ ├── WorldEntityInfoV6Encoder.kt │ │ │ │ │ └── extendedinfo │ │ │ │ │ │ ├── WorldEntityAvatarExtendedInfoDesktopWriter.kt │ │ │ │ │ │ ├── WorldEntitySequenceEncoder.kt │ │ │ │ │ │ └── WorldEntityVisibleOpsEncoder.kt │ │ │ │ └── zone │ │ │ │ │ ├── header │ │ │ │ │ ├── DesktopUpdateZonePartialEnclosedEncoder.kt │ │ │ │ │ ├── UpdateZoneFullFollowsEncoder.kt │ │ │ │ │ └── UpdateZonePartialFollowsEncoder.kt │ │ │ │ │ └── payload │ │ │ │ │ ├── LocAddChangeV2Encoder.kt │ │ │ │ │ ├── LocAnimEncoder.kt │ │ │ │ │ ├── LocDelEncoder.kt │ │ │ │ │ ├── LocMergeEncoder.kt │ │ │ │ │ ├── MapAnimEncoder.kt │ │ │ │ │ ├── MapProjAnimV2Encoder.kt │ │ │ │ │ ├── ObjAddEncoder.kt │ │ │ │ │ ├── ObjCountEncoder.kt │ │ │ │ │ ├── ObjCustomiseEncoder.kt │ │ │ │ │ ├── ObjDelEncoder.kt │ │ │ │ │ ├── ObjEnabledOpsEncoder.kt │ │ │ │ │ ├── ObjUncustomiseEncoder.kt │ │ │ │ │ └── SoundAreaEncoder.kt │ │ │ │ └── prot │ │ │ │ ├── DesktopGameMessageEncoderRepository.kt │ │ │ │ ├── GameServerProt.kt │ │ │ │ └── GameServerProtId.kt │ │ │ └── test │ │ │ ├── kotlin │ │ │ └── net │ │ │ │ └── rsprot │ │ │ │ └── protocol │ │ │ │ └── game │ │ │ │ └── outgoing │ │ │ │ └── info │ │ │ │ ├── NpcInfoClient.kt │ │ │ │ ├── NpcInfoTest.kt │ │ │ │ ├── PlayerInfoClient.kt │ │ │ │ ├── PlayerInfoTest.kt │ │ │ │ └── TestHelpers.kt │ │ │ └── resources │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── game │ │ │ └── outgoing │ │ │ └── info │ │ │ └── huffman.dat │ ├── osrs-235-internal │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ └── internal │ │ │ ├── LogLevel.kt │ │ │ ├── RSProtFlags.kt │ │ │ ├── RSProtThreadSafety.kt │ │ │ ├── client │ │ │ └── ClientTypeMap.kt │ │ │ └── game │ │ │ └── outgoing │ │ │ ├── codec │ │ │ └── zone │ │ │ │ └── payload │ │ │ │ ├── OldSchoolZoneProt.kt │ │ │ │ └── ZoneProtEncoder.kt │ │ │ ├── info │ │ │ ├── CachedExtendedInfo.kt │ │ │ ├── CoordFine.kt │ │ │ ├── CoordGrid.kt │ │ │ ├── ExtendedInfo.kt │ │ │ ├── TransientExtendedInfo.kt │ │ │ ├── encoder │ │ │ │ ├── ExtendedInfoEncoder.kt │ │ │ │ ├── OnDemandExtendedInfoEncoder.kt │ │ │ │ └── PrecomputedExtendedInfoEncoder.kt │ │ │ ├── npcinfo │ │ │ │ ├── NpcAvatarDetails.kt │ │ │ │ ├── encoder │ │ │ │ │ ├── NpcExtendedInfoEncoders.kt │ │ │ │ │ └── NpcResolutionChangeEncoder.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── BaseAnimationSet.kt │ │ │ │ │ ├── BodyCustomisation.kt │ │ │ │ │ ├── CombatLevelChange.kt │ │ │ │ │ ├── HeadCustomisation.kt │ │ │ │ │ ├── HeadIconCustomisation.kt │ │ │ │ │ ├── NameChange.kt │ │ │ │ │ ├── NpcTinting.kt │ │ │ │ │ ├── Transformation.kt │ │ │ │ │ └── TypeCustomisation.kt │ │ │ ├── playerinfo │ │ │ │ ├── encoder │ │ │ │ │ └── PlayerExtendedInfoEncoders.kt │ │ │ │ └── extendedinfo │ │ │ │ │ ├── Appearance.kt │ │ │ │ │ ├── Chat.kt │ │ │ │ │ ├── MoveSpeed.kt │ │ │ │ │ ├── ObjTypeCustomisation.kt │ │ │ │ │ ├── PlayerTintingList.kt │ │ │ │ │ └── TemporaryMoveSpeed.kt │ │ │ ├── shared │ │ │ │ └── extendedinfo │ │ │ │ │ ├── ExactMove.kt │ │ │ │ │ ├── FaceAngle.kt │ │ │ │ │ ├── FacePathingEntity.kt │ │ │ │ │ ├── Hit.kt │ │ │ │ │ ├── Say.kt │ │ │ │ │ ├── Sequence.kt │ │ │ │ │ ├── SpotAnimList.kt │ │ │ │ │ ├── Tinting.kt │ │ │ │ │ ├── VisibleOps.kt │ │ │ │ │ └── util │ │ │ │ │ ├── HeadBar.kt │ │ │ │ │ ├── HeadBarList.kt │ │ │ │ │ ├── HitMark.kt │ │ │ │ │ ├── HitMarkList.kt │ │ │ │ │ └── SpotAnim.kt │ │ │ ├── util │ │ │ │ ├── ZoneIndexArray.kt │ │ │ │ └── ZoneIndexStorage.kt │ │ │ └── worldentityinfo │ │ │ │ └── encoder │ │ │ │ └── WorldEntityExtendedInfoEncoders.kt │ │ │ └── inv │ │ │ └── internal │ │ │ ├── Inventory.kt │ │ │ └── InventoryPool.kt │ ├── osrs-235-model │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── net │ │ │ └── rsprot │ │ │ └── protocol │ │ │ ├── game │ │ │ ├── incoming │ │ │ │ ├── GameClientProtCategory.kt │ │ │ │ ├── buttons │ │ │ │ │ ├── If1Button.kt │ │ │ │ │ ├── If3Button.kt │ │ │ │ │ ├── IfButtonD.kt │ │ │ │ │ ├── IfButtonT.kt │ │ │ │ │ ├── IfRunScript.kt │ │ │ │ │ └── IfSubOp.kt │ │ │ │ ├── clan │ │ │ │ │ ├── AffinedClanSettingsAddBannedFromChannel.kt │ │ │ │ │ ├── AffinedClanSettingsSetMutedFromChannel.kt │ │ │ │ │ ├── ClanChannelFullRequest.kt │ │ │ │ │ ├── ClanChannelKickUser.kt │ │ │ │ │ └── ClanSettingsFullRequest.kt │ │ │ │ ├── events │ │ │ │ │ ├── EventAppletFocus.kt │ │ │ │ │ ├── EventCameraPosition.kt │ │ │ │ │ ├── EventKeyboard.kt │ │ │ │ │ ├── EventMouseClickV1.kt │ │ │ │ │ ├── EventMouseClickV2.kt │ │ │ │ │ ├── EventMouseMove.kt │ │ │ │ │ ├── EventMouseScroll.kt │ │ │ │ │ ├── EventNativeMouseMove.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── MouseMovements.kt │ │ │ │ │ │ └── MouseTracker.kt │ │ │ │ ├── friendchat │ │ │ │ │ ├── FriendChatJoinLeave.kt │ │ │ │ │ ├── FriendChatKick.kt │ │ │ │ │ └── FriendChatSetRank.kt │ │ │ │ ├── locs │ │ │ │ │ ├── OpLoc.kt │ │ │ │ │ ├── OpLoc6.kt │ │ │ │ │ └── OpLocT.kt │ │ │ │ ├── messaging │ │ │ │ │ ├── MessagePrivate.kt │ │ │ │ │ └── MessagePublic.kt │ │ │ │ ├── misc │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ConnectionTelemetry.kt │ │ │ │ │ │ ├── DetectModifiedClient.kt │ │ │ │ │ │ ├── Idle.kt │ │ │ │ │ │ ├── MapBuildComplete.kt │ │ │ │ │ │ ├── MembershipPromotionEligibility.kt │ │ │ │ │ │ ├── NoTimeout.kt │ │ │ │ │ │ ├── RSevenStatus.kt │ │ │ │ │ │ ├── ReflectionCheckReply.kt │ │ │ │ │ │ ├── SendPingReply.kt │ │ │ │ │ │ ├── SoundJingleEnd.kt │ │ │ │ │ │ └── WindowStatus.kt │ │ │ │ │ └── user │ │ │ │ │ │ ├── BugReport.kt │ │ │ │ │ │ ├── ClickWorldMap.kt │ │ │ │ │ │ ├── ClientCheat.kt │ │ │ │ │ │ ├── CloseModal.kt │ │ │ │ │ │ ├── HiscoreRequest.kt │ │ │ │ │ │ ├── IfCrmViewClick.kt │ │ │ │ │ │ ├── MoveGameClick.kt │ │ │ │ │ │ ├── MoveMinimapClick.kt │ │ │ │ │ │ ├── OculusLeave.kt │ │ │ │ │ │ ├── SendSnapshot.kt │ │ │ │ │ │ ├── SetChatFilterSettings.kt │ │ │ │ │ │ ├── SetHeading.kt │ │ │ │ │ │ ├── Teleport.kt │ │ │ │ │ │ ├── UpdatePlayerModelV1.kt │ │ │ │ │ │ └── internal │ │ │ │ │ │ └── MovementRequest.kt │ │ │ │ ├── npcs │ │ │ │ │ ├── OpNpc.kt │ │ │ │ │ ├── OpNpc6.kt │ │ │ │ │ └── OpNpcT.kt │ │ │ │ ├── objs │ │ │ │ │ ├── OpObj.kt │ │ │ │ │ ├── OpObj6.kt │ │ │ │ │ └── OpObjT.kt │ │ │ │ ├── players │ │ │ │ │ ├── OpPlayer.kt │ │ │ │ │ └── OpPlayerT.kt │ │ │ │ ├── resumed │ │ │ │ │ ├── ResumePCountDialog.kt │ │ │ │ │ ├── ResumePNameDialog.kt │ │ │ │ │ ├── ResumePObjDialog.kt │ │ │ │ │ ├── ResumePStringDialog.kt │ │ │ │ │ └── ResumePauseButton.kt │ │ │ │ ├── social │ │ │ │ │ ├── FriendListAdd.kt │ │ │ │ │ ├── FriendListDel.kt │ │ │ │ │ ├── IgnoreListAdd.kt │ │ │ │ │ └── IgnoreListDel.kt │ │ │ │ └── worldentities │ │ │ │ │ ├── OpWorldEntity.kt │ │ │ │ │ ├── OpWorldEntity6.kt │ │ │ │ │ └── OpWorldEntityT.kt │ │ │ └── outgoing │ │ │ │ ├── GameServerProtCategory.kt │ │ │ │ ├── camera │ │ │ │ ├── CamLookAt.kt │ │ │ │ ├── CamLookAtEasedCoord.kt │ │ │ │ ├── CamMode.kt │ │ │ │ ├── CamMoveTo.kt │ │ │ │ ├── CamMoveToArc.kt │ │ │ │ ├── CamMoveToCycles.kt │ │ │ │ ├── CamReset.kt │ │ │ │ ├── CamRotateBy.kt │ │ │ │ ├── CamRotateTo.kt │ │ │ │ ├── CamShake.kt │ │ │ │ ├── CamSmoothReset.kt │ │ │ │ ├── CamTargetV3.kt │ │ │ │ ├── CameraTypealiases.kt │ │ │ │ ├── OculusSync.kt │ │ │ │ └── util │ │ │ │ │ └── CameraEaseFunction.kt │ │ │ │ ├── clan │ │ │ │ ├── ClanChannelDelta.kt │ │ │ │ ├── ClanChannelFull.kt │ │ │ │ ├── ClanSettingsDelta.kt │ │ │ │ ├── ClanSettingsFull.kt │ │ │ │ ├── MessageClanChannel.kt │ │ │ │ ├── MessageClanChannelSystem.kt │ │ │ │ ├── VarClan.kt │ │ │ │ ├── VarClanDisable.kt │ │ │ │ └── VarClanEnable.kt │ │ │ │ ├── friendchat │ │ │ │ ├── MessageFriendChannel.kt │ │ │ │ ├── UpdateFriendChatChannelFull.kt │ │ │ │ ├── UpdateFriendChatChannelFullV2.kt │ │ │ │ └── UpdateFriendChatChannelSingleUser.kt │ │ │ │ ├── info │ │ │ │ ├── AvatarExtendedInfoWriter.kt │ │ │ │ ├── AvatarPriority.kt │ │ │ │ ├── ByteBufRecycler.kt │ │ │ │ ├── InfoPackets.kt │ │ │ │ ├── InfoProtocols.kt │ │ │ │ ├── InfoRepository.kt │ │ │ │ ├── Infos.kt │ │ │ │ ├── ObserverExtendedInfoFlags.kt │ │ │ │ ├── RootWorldInfoPackets.kt │ │ │ │ ├── WorldInfoPackets.kt │ │ │ │ ├── exceptions │ │ │ │ │ └── InfoProcessException.kt │ │ │ │ ├── filter │ │ │ │ │ ├── DefaultExtendedInfoFilter.kt │ │ │ │ │ └── ExtendedInfoFilter.kt │ │ │ │ ├── npcinfo │ │ │ │ │ ├── DeferredNpcInfoProtocolSupplier.kt │ │ │ │ │ ├── NpcAvatar.kt │ │ │ │ │ ├── NpcAvatarExceptionHandler.kt │ │ │ │ │ ├── NpcAvatarExtendedInfo.kt │ │ │ │ │ ├── NpcAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── NpcAvatarFactory.kt │ │ │ │ │ ├── NpcAvatarFilter.kt │ │ │ │ │ ├── NpcAvatarRepository.kt │ │ │ │ │ ├── NpcAvatarTracker.kt │ │ │ │ │ ├── NpcInfo.kt │ │ │ │ │ ├── NpcInfoLargeV5.kt │ │ │ │ │ ├── NpcInfoPacket.kt │ │ │ │ │ ├── NpcInfoProtocol.kt │ │ │ │ │ ├── NpcInfoRepository.kt │ │ │ │ │ ├── NpcInfoSmallV5.kt │ │ │ │ │ ├── NpcInfoTypealiases.kt │ │ │ │ │ ├── NpcInfoWorldDetails.kt │ │ │ │ │ ├── NpcInfoWorldDetailsStorage.kt │ │ │ │ │ ├── SetNpcUpdateOrigin.kt │ │ │ │ │ └── util │ │ │ │ │ │ └── NpcCellOpcodes.kt │ │ │ │ ├── playerinfo │ │ │ │ │ ├── GlobalLowResolutionPositionRepository.kt │ │ │ │ │ ├── ObservedChatStorage.kt │ │ │ │ │ ├── PlayerAvatar.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfo.kt │ │ │ │ │ ├── PlayerAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── PlayerAvatarFactory.kt │ │ │ │ │ ├── PlayerInfo.kt │ │ │ │ │ ├── PlayerInfoPacket.kt │ │ │ │ │ ├── PlayerInfoProtocol.kt │ │ │ │ │ ├── PlayerInfoRepository.kt │ │ │ │ │ ├── PlayerInfoWorldDetails.kt │ │ │ │ │ └── util │ │ │ │ │ │ ├── CellOpcodes.kt │ │ │ │ │ │ └── LowResolutionPosition.kt │ │ │ │ ├── util │ │ │ │ │ ├── Avatar.kt │ │ │ │ │ ├── BuildArea.kt │ │ │ │ │ ├── PacketResult.kt │ │ │ │ │ └── ReferencePooledObject.kt │ │ │ │ ├── worker │ │ │ │ │ ├── DefaultProtocolWorker.kt │ │ │ │ │ ├── ForkJoinMultiThreadProtocolWorker.kt │ │ │ │ │ ├── ProtocolWorker.kt │ │ │ │ │ └── SingleThreadProtocolWorker.kt │ │ │ │ └── worldentityinfo │ │ │ │ │ ├── WorldEntityAvatar.kt │ │ │ │ │ ├── WorldEntityAvatarExceptionHandler.kt │ │ │ │ │ ├── WorldEntityAvatarExtendedInfo.kt │ │ │ │ │ ├── WorldEntityAvatarExtendedInfoBlocks.kt │ │ │ │ │ ├── WorldEntityAvatarFactory.kt │ │ │ │ │ ├── WorldEntityAvatarRepository.kt │ │ │ │ │ ├── WorldEntityInfo.kt │ │ │ │ │ ├── WorldEntityInfoExtensions.kt │ │ │ │ │ ├── WorldEntityInfoRepository.kt │ │ │ │ │ ├── WorldEntityInfoV6Packet.kt │ │ │ │ │ ├── WorldEntityMap.kt │ │ │ │ │ ├── WorldEntityPriority.kt │ │ │ │ │ ├── WorldEntityProtocol.kt │ │ │ │ │ └── WorldEntityUnsortedTopKArray.kt │ │ │ │ ├── interfaces │ │ │ │ ├── IfClearInv.kt │ │ │ │ ├── IfCloseSub.kt │ │ │ │ ├── IfMoveSub.kt │ │ │ │ ├── IfOpenSub.kt │ │ │ │ ├── IfOpenTop.kt │ │ │ │ ├── IfResyncV2.kt │ │ │ │ ├── IfSetAngle.kt │ │ │ │ ├── IfSetAnim.kt │ │ │ │ ├── IfSetColour.kt │ │ │ │ ├── IfSetEventsV2.kt │ │ │ │ ├── IfSetHide.kt │ │ │ │ ├── IfSetModel.kt │ │ │ │ ├── IfSetNpcHead.kt │ │ │ │ ├── IfSetNpcHeadActive.kt │ │ │ │ ├── IfSetObject.kt │ │ │ │ ├── IfSetPlayerHead.kt │ │ │ │ ├── IfSetPlayerModelBaseColour.kt │ │ │ │ ├── IfSetPlayerModelBodyType.kt │ │ │ │ ├── IfSetPlayerModelObj.kt │ │ │ │ ├── IfSetPlayerModelSelf.kt │ │ │ │ ├── IfSetPosition.kt │ │ │ │ ├── IfSetRotateSpeed.kt │ │ │ │ ├── IfSetScrollPos.kt │ │ │ │ └── IfSetText.kt │ │ │ │ ├── inv │ │ │ │ ├── UpdateInvFull.kt │ │ │ │ ├── UpdateInvPartial.kt │ │ │ │ └── UpdateInvStopTransmit.kt │ │ │ │ ├── logout │ │ │ │ ├── Logout.kt │ │ │ │ ├── LogoutTransfer.kt │ │ │ │ └── LogoutWithReason.kt │ │ │ │ ├── map │ │ │ │ ├── RebuildLogin.kt │ │ │ │ ├── RebuildNormal.kt │ │ │ │ ├── RebuildRegion.kt │ │ │ │ ├── RebuildTypealiases.kt │ │ │ │ ├── RebuildWorldEntityV2.kt │ │ │ │ ├── StaticRebuildMessage.kt │ │ │ │ └── util │ │ │ │ │ ├── RebuildRegionZone.kt │ │ │ │ │ ├── XteaHelper.kt │ │ │ │ │ └── XteaProvider.kt │ │ │ │ ├── misc │ │ │ │ ├── client │ │ │ │ │ ├── HideLocOps.kt │ │ │ │ │ ├── HideNpcOps.kt │ │ │ │ │ ├── HideObjOps.kt │ │ │ │ │ ├── HintArrow.kt │ │ │ │ │ ├── HiscoreReply.kt │ │ │ │ │ ├── MinimapToggle.kt │ │ │ │ │ ├── PacketGroupStart.kt │ │ │ │ │ ├── ReflectionChecker.kt │ │ │ │ │ ├── ResetAnims.kt │ │ │ │ │ ├── ResetInteractionMode.kt │ │ │ │ │ ├── SendPing.kt │ │ │ │ │ ├── ServerTickEnd.kt │ │ │ │ │ ├── SetHeatmapEnabled.kt │ │ │ │ │ ├── SetInteractionMode.kt │ │ │ │ │ ├── SiteSettings.kt │ │ │ │ │ ├── UpdateRebootTimer.kt │ │ │ │ │ ├── UpdateUid192.kt │ │ │ │ │ ├── UrlOpen.kt │ │ │ │ │ └── ZBuf.kt │ │ │ │ └── player │ │ │ │ │ ├── AccountFlags.kt │ │ │ │ │ ├── ChatFilterSettings.kt │ │ │ │ │ ├── ChatFilterSettingsPrivateChat.kt │ │ │ │ │ ├── MessageGame.kt │ │ │ │ │ ├── MiscPlayerTypealiases.kt │ │ │ │ │ ├── RunClientScript.kt │ │ │ │ │ ├── SetMapFlag.kt │ │ │ │ │ ├── SetPlayerOp.kt │ │ │ │ │ ├── TriggerOnDialogAbort.kt │ │ │ │ │ ├── UpdateRunEnergy.kt │ │ │ │ │ ├── UpdateRunWeight.kt │ │ │ │ │ ├── UpdateStatV2.kt │ │ │ │ │ ├── UpdateStockMarketSlot.kt │ │ │ │ │ └── UpdateTradingPost.kt │ │ │ │ ├── social │ │ │ │ ├── FriendListLoaded.kt │ │ │ │ ├── MessagePrivate.kt │ │ │ │ ├── MessagePrivateEcho.kt │ │ │ │ ├── UpdateFriendList.kt │ │ │ │ └── UpdateIgnoreList.kt │ │ │ │ ├── sound │ │ │ │ ├── MidiJingle.kt │ │ │ │ ├── MidiSongStop.kt │ │ │ │ ├── MidiSongV2.kt │ │ │ │ ├── MidiSongWithSecondary.kt │ │ │ │ ├── MidiSwap.kt │ │ │ │ ├── SoundTypealiases.kt │ │ │ │ └── SynthSound.kt │ │ │ │ ├── specific │ │ │ │ ├── LocAnimSpecific.kt │ │ │ │ ├── MapAnimSpecific.kt │ │ │ │ ├── NpcAnimSpecific.kt │ │ │ │ ├── NpcHeadIconSpecific.kt │ │ │ │ ├── NpcSpotAnimSpecific.kt │ │ │ │ ├── ObjAddSpecific.kt │ │ │ │ ├── ObjCountSpecific.kt │ │ │ │ ├── ObjCustomiseSpecific.kt │ │ │ │ ├── ObjDelSpecific.kt │ │ │ │ ├── ObjEnabledOpsSpecific.kt │ │ │ │ ├── ObjUncustomiseSpecific.kt │ │ │ │ ├── PlayerAnimSpecific.kt │ │ │ │ ├── PlayerSpotAnimSpecific.kt │ │ │ │ └── ProjAnimSpecificV4.kt │ │ │ │ ├── util │ │ │ │ └── OpFlags.kt │ │ │ │ ├── varp │ │ │ │ ├── VarpLarge.kt │ │ │ │ ├── VarpReset.kt │ │ │ │ ├── VarpSmall.kt │ │ │ │ └── VarpSync.kt │ │ │ │ ├── worldentity │ │ │ │ ├── SetActiveWorldV2.kt │ │ │ │ └── WorldEntityTypealiases.kt │ │ │ │ └── zone │ │ │ │ ├── header │ │ │ │ ├── UpdateZoneFullFollows.kt │ │ │ │ ├── UpdateZonePartialEnclosed.kt │ │ │ │ └── UpdateZonePartialFollows.kt │ │ │ │ └── payload │ │ │ │ ├── LocAddChangeV2.kt │ │ │ │ ├── LocAnim.kt │ │ │ │ ├── LocDel.kt │ │ │ │ ├── LocMerge.kt │ │ │ │ ├── MapAnim.kt │ │ │ │ ├── MapProjAnimV2.kt │ │ │ │ ├── ObjAdd.kt │ │ │ │ ├── ObjCount.kt │ │ │ │ ├── ObjCustomise.kt │ │ │ │ ├── ObjDel.kt │ │ │ │ ├── ObjEnabledOps.kt │ │ │ │ ├── ObjUncustomise.kt │ │ │ │ ├── SoundArea.kt │ │ │ │ ├── ZoneProtTypeAliases.kt │ │ │ │ └── util │ │ │ │ ├── CoordInBuildArea.kt │ │ │ │ ├── CoordInZone.kt │ │ │ │ └── LocProperties.kt │ │ │ ├── js5 │ │ │ ├── incoming │ │ │ │ ├── Js5GroupRequest.kt │ │ │ │ ├── PrefetchRequest.kt │ │ │ │ ├── PriorityChangeHigh.kt │ │ │ │ ├── PriorityChangeLow.kt │ │ │ │ ├── UrgentRequest.kt │ │ │ │ └── XorChange.kt │ │ │ └── outgoing │ │ │ │ └── Js5GroupResponse.kt │ │ │ └── loginprot │ │ │ ├── incoming │ │ │ ├── GameLogin.kt │ │ │ ├── GameReconnect.kt │ │ │ ├── InitGameConnection.kt │ │ │ ├── InitJs5RemoteConnection.kt │ │ │ ├── ProofOfWorkReply.kt │ │ │ ├── RemainingBetaArchives.kt │ │ │ ├── pow │ │ │ │ ├── NopProofOfWorkProvider.kt │ │ │ │ ├── ProofOfWork.kt │ │ │ │ ├── ProofOfWorkProvider.kt │ │ │ │ ├── SingleTypeProofOfWorkProvider.kt │ │ │ │ └── challenges │ │ │ │ │ ├── ChallengeGenerator.kt │ │ │ │ │ ├── ChallengeMetaData.kt │ │ │ │ │ ├── ChallengeMetaDataProvider.kt │ │ │ │ │ ├── ChallengeType.kt │ │ │ │ │ ├── ChallengeVerifier.kt │ │ │ │ │ ├── ChallengeWorker.kt │ │ │ │ │ ├── DefaultChallengeWorker.kt │ │ │ │ │ └── sha256 │ │ │ │ │ ├── DefaultSha256ChallengeGenerator.kt │ │ │ │ │ ├── DefaultSha256MetaDataProvider.kt │ │ │ │ │ ├── DefaultSha256ProofOfWorkProvider.kt │ │ │ │ │ ├── Sha256Challenge.kt │ │ │ │ │ ├── Sha256ChallengeVerifier.kt │ │ │ │ │ ├── Sha256MetaData.kt │ │ │ │ │ └── hashing │ │ │ │ │ ├── DefaultSha256MessageDigestHashFunction.kt │ │ │ │ │ ├── Sha256HashFunction.kt │ │ │ │ │ └── ThreadLocalSha256MessageDigestHashFunction.kt │ │ │ └── util │ │ │ │ ├── AuthenticationType.kt │ │ │ │ ├── CyclicRedundancyCheckBlock.kt │ │ │ │ ├── HostPlatformStats.kt │ │ │ │ ├── LoginBlock.kt │ │ │ │ ├── LoginBlockDecodingFunction.kt │ │ │ │ ├── LoginClientType.kt │ │ │ │ ├── LoginPlatformType.kt │ │ │ │ ├── OtpAuthenticationType.kt │ │ │ │ ├── Password.kt │ │ │ │ └── Token.kt │ │ │ └── outgoing │ │ │ ├── LoginResponse.kt │ │ │ └── util │ │ │ └── AuthenticatorResponse.kt │ └── osrs-235-shared │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── common │ │ ├── RSProtConstants.kt │ │ ├── js5 │ │ ├── incoming │ │ │ ├── codec │ │ │ │ ├── PrefetchRequestDecoder.kt │ │ │ │ ├── PriorityChangeHighDecoder.kt │ │ │ │ ├── PriorityChangeLowDecoder.kt │ │ │ │ ├── UrgentRequestDecoder.kt │ │ │ │ └── XorChangeDecoder.kt │ │ │ └── prot │ │ │ │ ├── Js5ClientProt.kt │ │ │ │ ├── Js5ClientProtId.kt │ │ │ │ └── Js5MessageDecoderRepository.kt │ │ └── outgoing │ │ │ ├── codec │ │ │ └── Js5GroupResponseEncoder.kt │ │ │ └── prot │ │ │ ├── Js5MessageEncoderRepository.kt │ │ │ └── Js5ServerProt.kt │ │ └── loginprot │ │ ├── incoming │ │ ├── codec │ │ │ ├── GameLoginDecoder.kt │ │ │ ├── GameReconnectDecoder.kt │ │ │ ├── InitGameConnectionDecoder.kt │ │ │ ├── InitJs5RemoteConnectionDecoder.kt │ │ │ ├── ProofOfWorkReplyDecoder.kt │ │ │ ├── RemainingBetaArchivesDecoder.kt │ │ │ └── shared │ │ │ │ ├── LoginBlockDecoder.kt │ │ │ │ └── exceptions │ │ │ │ ├── InvalidVersionException.kt │ │ │ │ └── UnsupportedClientException.kt │ │ └── prot │ │ │ ├── LoginClientProt.kt │ │ │ ├── LoginClientProtId.kt │ │ │ └── LoginMessageDecoderRepository.kt │ │ └── outgoing │ │ ├── codec │ │ ├── DisallowedByScriptLoginResponseEncoder.kt │ │ ├── EmptyLoginResponseEncoder.kt │ │ ├── OkLoginResponseEncoder.kt │ │ ├── ProofOfWorkResponseEncoder.kt │ │ ├── ReconnectOkResponseEncoder.kt │ │ └── SuccessfulLoginResponseEncoder.kt │ │ └── prot │ │ ├── LoginMessageEncoderRepository.kt │ │ ├── LoginServerProt.kt │ │ └── LoginServerProtId.kt └── src │ ├── konsistTest │ └── kotlin │ │ └── net │ │ └── rsprot │ │ └── protocol │ │ └── BufferTest.kt │ └── main │ └── kotlin │ └── net │ └── rsprot │ └── protocol │ ├── ClientProt.kt │ ├── ClientProtCategory.kt │ ├── Prot.kt │ ├── ProtRepository.kt │ ├── ProtRepositoryBuilder.kt │ ├── ServerProt.kt │ ├── ServerProtCategory.kt │ ├── binary │ ├── BinaryBlob.kt │ ├── BinaryHeader.kt │ └── BinaryStream.kt │ ├── channel │ └── ChannelExtensions.kt │ ├── client │ └── ClientType.kt │ ├── message │ ├── ByteBufHolderWrapperFooterMessage.kt │ ├── ByteBufHolderWrapperHeaderMessage.kt │ ├── ConsumableMessage.kt │ ├── IncomingGameMessage.kt │ ├── IncomingJs5Message.kt │ ├── IncomingLoginMessage.kt │ ├── IncomingMessage.kt │ ├── Message.kt │ ├── MessageExtensions.kt │ ├── OutgoingGameMessage.kt │ ├── OutgoingJs5Message.kt │ ├── OutgoingLoginMessage.kt │ ├── OutgoingMessage.kt │ ├── ZoneProt.kt │ ├── codec │ │ ├── MessageDecoder.kt │ │ ├── MessageEncoder.kt │ │ ├── NoOpMessageEncoder.kt │ │ ├── UpdateZonePartialEnclosedCache.kt │ │ ├── incoming │ │ │ ├── GameMessageConsumerRepository.kt │ │ │ ├── GameMessageConsumerRepositoryBuilder.kt │ │ │ ├── MessageConsumer.kt │ │ │ ├── MessageDecoderRepository.kt │ │ │ ├── MessageDecoderRepositoryBuilder.kt │ │ │ └── provider │ │ │ │ ├── BlockingGameMessageConsumerRepositoryProvider.kt │ │ │ │ ├── DefaultGameMessageConsumerRepositoryProvider.kt │ │ │ │ └── GameMessageConsumerRepositoryProvider.kt │ │ └── outgoing │ │ │ ├── MessageEncoderRepository.kt │ │ │ └── MessageEncoderRepositoryBuilder.kt │ └── util │ │ └── MessageSizeEstimatorHelpers.kt │ ├── metadata │ └── Consistent.kt │ ├── metrics │ ├── NetworkTrafficMonitor.kt │ ├── channel │ │ ├── ChannelTrafficMonitor.kt │ │ ├── impl │ │ │ ├── ConcurrentChannelTrafficMonitor.kt │ │ │ ├── GameChannelTrafficMonitor.kt │ │ │ ├── Js5ChannelTrafficMonitor.kt │ │ │ ├── LoginChannelTrafficMonitor.kt │ │ │ └── NoopChannelTrafficMonitor.kt │ │ └── snapshots │ │ │ ├── ChannelTrafficSnapshot.kt │ │ │ ├── InetAddressSnapshot.kt │ │ │ ├── impl │ │ │ ├── ConcurrentChannelTrafficSnapshot.kt │ │ │ └── NoopChannelTrafficSnapshot.kt │ │ │ └── util │ │ │ ├── InetAddressTrafficMonitor.kt │ │ │ └── PacketSnapshot.kt │ ├── impl │ │ ├── ConcurrentNetworkTrafficMonitor.kt │ │ └── NoopNetworkTrafficMonitor.kt │ ├── lock │ │ └── TrafficMonitorLock.kt │ ├── snapshots │ │ ├── NetworkTrafficSnapshot.kt │ │ └── impl │ │ │ ├── ConcurrentNetworkTrafficSnapshot.kt │ │ │ └── NoopNetworkTrafficSnapshot.kt │ └── writer │ │ └── NetworkTrafficWriter.kt │ ├── threads │ └── IllegalThreadAccessException.kt │ └── util │ ├── CombinedId.kt │ └── JagByteBufExtensions.kt └── settings.gradle.kts /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.editorconfig -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: blurite 2 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.gitignore -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.idea/codeStyles/Project.xml -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.idea/codeStyles/codeStyleConfig.xml -------------------------------------------------------------------------------- /.idea/dictionaries/krist.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.idea/dictionaries/krist.xml -------------------------------------------------------------------------------- /.idea/runConfigurations/Project_Check.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.idea/runConfigurations/Project_Check.xml -------------------------------------------------------------------------------- /.idea/runConfigurations/Publish_GitHub.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.idea/runConfigurations/Publish_GitHub.xml -------------------------------------------------------------------------------- /.idea/runConfigurations/Publish_Local.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.idea/runConfigurations/Publish_Local.xml -------------------------------------------------------------------------------- /.idea/runConfigurations/Publish_Maven_Central.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/.idea/runConfigurations/Publish_Maven_Central.xml -------------------------------------------------------------------------------- /BENCHMARKS.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/BENCHMARKS.md -------------------------------------------------------------------------------- /DESIGNCHOICES.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/DESIGNCHOICES.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/README.md -------------------------------------------------------------------------------- /WHATSNEW.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/WHATSNEW.md -------------------------------------------------------------------------------- /buffer/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/build.gradle.kts -------------------------------------------------------------------------------- /buffer/src/benchmarks/kotlin/net/rsprot/buffer/BitBufBenchmark.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/benchmarks/kotlin/net/rsprot/buffer/BitBufBenchmark.kt -------------------------------------------------------------------------------- /buffer/src/benchmarks/kotlin/net/rsprot/buffer/BitBufTransferBenchmark.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/benchmarks/kotlin/net/rsprot/buffer/BitBufTransferBenchmark.kt -------------------------------------------------------------------------------- /buffer/src/benchmarks/kotlin/net/rsprot/buffer/BufferPerformanceBenchmark.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/benchmarks/kotlin/net/rsprot/buffer/BufferPerformanceBenchmark.kt -------------------------------------------------------------------------------- /buffer/src/benchmarks/kotlin/net/rsprot/buffer/OpenRs2BitBuf.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/benchmarks/kotlin/net/rsprot/buffer/OpenRs2BitBuf.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/JagByteBuf.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/JagByteBuf.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/BitBuf.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/BitBuf.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/UnsafeBitBuf.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/UnsafeBitBuf.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/UnsafeLongBackedBitBuf.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/UnsafeLongBackedBitBuf.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/WrappedBitBuf.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/bitbuffer/WrappedBitBuf.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/extensions/ByteBufExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/extensions/ByteBufExtensions.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/extensions/JagexByteBufExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/extensions/JagexByteBufExtensions.kt -------------------------------------------------------------------------------- /buffer/src/main/kotlin/net/rsprot/buffer/util/charset/Cp1252Charset.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/main/kotlin/net/rsprot/buffer/util/charset/Cp1252Charset.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/bitbuffer/BitBufTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/bitbuffer/BitBufTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/bitbuffer/UnsafeLongBackedBitBufTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/bitbuffer/UnsafeLongBackedBitBufTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufArrayTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufArrayTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufByteTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufByteTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufIntTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufIntTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufMediumTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufMediumTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufShortTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufShortTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufSmartTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufSmartTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufSpecialTypeTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufSpecialTypeTest.kt -------------------------------------------------------------------------------- /buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufTests.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/kotlin/net/rsprot/buffer/extensions/ByteBufTests.kt -------------------------------------------------------------------------------- /buffer/src/test/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/buffer/src/test/resources/log4j2.xml -------------------------------------------------------------------------------- /compression/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/build.gradle.kts -------------------------------------------------------------------------------- /compression/src/main/kotlin/net/rsprot/compression/Base37.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/main/kotlin/net/rsprot/compression/Base37.kt -------------------------------------------------------------------------------- /compression/src/main/kotlin/net/rsprot/compression/HuffmanCodec.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/main/kotlin/net/rsprot/compression/HuffmanCodec.kt -------------------------------------------------------------------------------- /compression/src/main/kotlin/net/rsprot/compression/provider/BlockingHuffmanCodecProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/main/kotlin/net/rsprot/compression/provider/BlockingHuffmanCodecProvider.kt -------------------------------------------------------------------------------- /compression/src/main/kotlin/net/rsprot/compression/provider/DefaultHuffmanCodecProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/main/kotlin/net/rsprot/compression/provider/DefaultHuffmanCodecProvider.kt -------------------------------------------------------------------------------- /compression/src/main/kotlin/net/rsprot/compression/provider/HuffmanCodecProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/main/kotlin/net/rsprot/compression/provider/HuffmanCodecProvider.kt -------------------------------------------------------------------------------- /compression/src/test/kotlin/net/rsprot/compression/Base37Test.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/test/kotlin/net/rsprot/compression/Base37Test.kt -------------------------------------------------------------------------------- /compression/src/test/kotlin/net/rsprot/compression/HuffmanCodecTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/test/kotlin/net/rsprot/compression/HuffmanCodecTest.kt -------------------------------------------------------------------------------- /compression/src/test/resources/net/rsprot/compression/huffman.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/test/resources/net/rsprot/compression/huffman.dat -------------------------------------------------------------------------------- /compression/src/test/resources/net/rsprot/compression/lorem_ipsum_compressed.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/test/resources/net/rsprot/compression/lorem_ipsum_compressed.dat -------------------------------------------------------------------------------- /compression/src/test/resources/net/rsprot/compression/lorem_ipsum_sample.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/compression/src/test/resources/net/rsprot/compression/lorem_ipsum_sample.txt -------------------------------------------------------------------------------- /crypto/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/build.gradle.kts -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/cipher/IsaacRandom.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/cipher/IsaacRandom.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/cipher/NopStreamCipher.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/cipher/NopStreamCipher.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/cipher/StreamCipher.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/cipher/StreamCipher.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/cipher/StreamCipherPair.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/cipher/StreamCipherPair.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/crc/CyclicRedundancyCheck.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/crc/CyclicRedundancyCheck.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/rsa/Rsa.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/rsa/Rsa.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/rsa/RsaByteBufExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/rsa/RsaByteBufExt.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/rsa/RsaKeyPair.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/rsa/RsaKeyPair.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/xtea/XteaByteBufExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/xtea/XteaByteBufExt.kt -------------------------------------------------------------------------------- /crypto/src/main/kotlin/net/rsprot/crypto/xtea/XteaKey.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/crypto/src/main/kotlin/net/rsprot/crypto/xtea/XteaKey.kt -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/gradle/libs.versions.toml -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/gradlew.bat -------------------------------------------------------------------------------- /haproxy/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/README.md -------------------------------------------------------------------------------- /haproxy/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/build.gradle.kts -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxy.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxy.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyAttribute.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyAttribute.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyAttributes.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyAttributes.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyChannelInitializer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyChannelInitializer.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyDetectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyDetectionHandler.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyHandlerNames.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyHandlerNames.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyIdleStateHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyIdleStateHandler.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyMessageHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyMessageHandler.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyMode.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyMode.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyParentHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyParentHandler.kt -------------------------------------------------------------------------------- /haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyPingHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/haproxy/src/main/kotlin/org/jire/netty/haproxy/HAProxyPingHandler.kt -------------------------------------------------------------------------------- /protocol/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-221/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-221/osrs-221-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-221/osrs-221-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-222/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-222/osrs-222-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-222/osrs-222-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-223/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-223/osrs-223-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-223/osrs-223-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-224/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-224/osrs-224-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-224/osrs-224-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-225/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-225/osrs-225-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-225/osrs-225-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-226/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-226/osrs-226-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-226/osrs-226-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-227/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-227/osrs-227-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-227/osrs-227-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-228/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-228/osrs-228-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-228/osrs-228-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-229/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/NoopJs5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/IntArrayDeque.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-api/src/main/kotlin/net/rsprot/protocol/api/util/FutureExtensions.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-internal/src/main/kotlin/net/rsprot/protocol/internal/RSProtFlags.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/game/incoming/locs/OpLoc.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/game/incoming/npcs/OpNpc.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/game/incoming/objs/OpObj.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-229/osrs-229-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-229/osrs-229-shared/src/main/kotlin/net/rsprot/protocol/common/RSProtConstants.kt -------------------------------------------------------------------------------- /protocol/osrs-230/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/GameConnectionHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/handlers/LoginHandlers.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5ChannelHandler.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-230/osrs-230-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-230/osrs-230-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-231/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-231/osrs-231-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-231/osrs-231-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-232/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-232/osrs-232-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-232/osrs-232-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-233/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-233/osrs-233-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-233/osrs-233-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-234/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-234/osrs-234-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-234/osrs-234-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-235/build.gradle.kts: -------------------------------------------------------------------------------- 1 | // No-op 2 | -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/EntityInfoProtocols.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/GameMessageCounter.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressTracker.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/InetAddressValidator.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/LoginDecoderService.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/MessageQueueProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/NetworkService.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/Session.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/SessionIdGenerator.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/StreamCipherProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/decoder/DecoderState.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Authorizer.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Client.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Configuration.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5GroupProvider.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/Js5Service.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/js5/util/UniqueQueue.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-api/src/main/kotlin/net/rsprot/protocol/api/logging/LoggingExt.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-common/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-common/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-desktop/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-desktop/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-internal/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-internal/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-internal/src/main/kotlin/net/rsprot/protocol/internal/LogLevel.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-model/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-model/build.gradle.kts -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-model/src/main/kotlin/net/rsprot/protocol/js5/incoming/XorChange.kt -------------------------------------------------------------------------------- /protocol/osrs-235/osrs-235-shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/osrs-235/osrs-235-shared/build.gradle.kts -------------------------------------------------------------------------------- /protocol/src/konsistTest/kotlin/net/rsprot/protocol/BufferTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/konsistTest/kotlin/net/rsprot/protocol/BufferTest.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/ClientProt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/ClientProt.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/ClientProtCategory.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/ClientProtCategory.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/Prot.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/Prot.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/ProtRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/ProtRepository.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/ProtRepositoryBuilder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/ProtRepositoryBuilder.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/ServerProt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/ServerProt.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/ServerProtCategory.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/ServerProtCategory.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/binary/BinaryBlob.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/binary/BinaryBlob.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/binary/BinaryHeader.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/binary/BinaryHeader.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/binary/BinaryStream.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/binary/BinaryStream.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/channel/ChannelExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/channel/ChannelExtensions.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/client/ClientType.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/client/ClientType.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/ByteBufHolderWrapperFooterMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/ByteBufHolderWrapperFooterMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/ByteBufHolderWrapperHeaderMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/ByteBufHolderWrapperHeaderMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/ConsumableMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/ConsumableMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingGameMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingGameMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingJs5Message.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingJs5Message.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingLoginMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingLoginMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/IncomingMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/Message.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/Message.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/MessageExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/MessageExtensions.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingGameMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingGameMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingJs5Message.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingJs5Message.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingLoginMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingLoginMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingMessage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/OutgoingMessage.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/ZoneProt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/ZoneProt.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/codec/MessageDecoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/codec/MessageDecoder.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/codec/MessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/codec/MessageEncoder.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/codec/NoOpMessageEncoder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/codec/NoOpMessageEncoder.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/codec/UpdateZonePartialEnclosedCache.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/codec/UpdateZonePartialEnclosedCache.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/codec/incoming/MessageConsumer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/codec/incoming/MessageConsumer.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/message/util/MessageSizeEstimatorHelpers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/message/util/MessageSizeEstimatorHelpers.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metadata/Consistent.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metadata/Consistent.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/NetworkTrafficMonitor.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/NetworkTrafficMonitor.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/ChannelTrafficMonitor.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/ChannelTrafficMonitor.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/impl/GameChannelTrafficMonitor.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/impl/GameChannelTrafficMonitor.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/impl/Js5ChannelTrafficMonitor.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/impl/Js5ChannelTrafficMonitor.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/impl/NoopChannelTrafficMonitor.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/impl/NoopChannelTrafficMonitor.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/snapshots/InetAddressSnapshot.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/snapshots/InetAddressSnapshot.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/snapshots/util/PacketSnapshot.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/channel/snapshots/util/PacketSnapshot.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/impl/ConcurrentNetworkTrafficMonitor.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/impl/ConcurrentNetworkTrafficMonitor.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/impl/NoopNetworkTrafficMonitor.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/impl/NoopNetworkTrafficMonitor.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/lock/TrafficMonitorLock.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/lock/TrafficMonitorLock.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/snapshots/NetworkTrafficSnapshot.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/snapshots/NetworkTrafficSnapshot.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/metrics/writer/NetworkTrafficWriter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/metrics/writer/NetworkTrafficWriter.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/threads/IllegalThreadAccessException.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/threads/IllegalThreadAccessException.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/util/CombinedId.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/util/CombinedId.kt -------------------------------------------------------------------------------- /protocol/src/main/kotlin/net/rsprot/protocol/util/JagByteBufExtensions.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/protocol/src/main/kotlin/net/rsprot/protocol/util/JagByteBufExtensions.kt -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blurite/rsprot/HEAD/settings.gradle.kts --------------------------------------------------------------------------------