Design and implement a thread-safe multi-channel chat server that supports concurrent user subscriptions, unsubscriptions, and message delivery. The server must allow many users to subscribe to any number of channels, unsubscribe from channels, and broadcast messages to every user currently subscribed to a channel. All operations must be correct under heavy concurrent load and must never lose or duplicate messages, crash, or deadlock. You must explicitly use fine-grained locking (e.g. ReentrantReadWriteLock) to protect shared state while still allowing high concurrency for reads (subscriptions checks) and writes (subscribe/unsubscribe). Message sending must not hold any channel lock while performing I/O. You should implement the core server class with methods: void subscribe(int userId, int channelId), void unsubscribe(int userId, int channelId), and void sendMessage(int channelId, String message). You do not need to implement networking or client logic; assume method calls arrive concurrently from many threads.