<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>XDBlog</title><description>XDesai&apos;s Blog</description><link>https://blog.xdesai.dev/</link><item><title>Matrix</title><link>https://blog.xdesai.dev/posts/matrix/</link><guid isPermaLink="true">https://blog.xdesai.dev/posts/matrix/</guid><description>An open network for secure, decentralised communication</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In an era of centralized silos, the &lt;strong&gt;Matrix&lt;/strong&gt; protocol offers a refreshing alternative: an open, decentralized standard for real-time communication. Unlike traditional messengers, Matrix is not just an app—it is an ecosystem.&lt;/p&gt;
&lt;h3&gt;What is Matrix?&lt;/h3&gt;
&lt;p&gt;Matrix is an open source project that publishes an open standard for secure, decentralized, real-time communication. It allows users from different providers to talk to each other, much like how you can send an email from Gmail to Outlook.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Why Matrix is Better Than Other Messengers&lt;/h3&gt;
&lt;h4&gt;1. Decentralization (No Single Point of Control)&lt;/h4&gt;
&lt;p&gt;With WhatsApp or Telegram, you are tied to their servers. If their servers go down, the service dies. In Matrix, anyone can host their own &lt;strong&gt;Homeserver&lt;/strong&gt;. If one server goes offline, the rest of the network continues to function. You truly own your data.&lt;/p&gt;
&lt;h4&gt;2. Bridges (The &quot;One App to Rule Them All&quot;)&lt;/h4&gt;
&lt;p&gt;Matrix can &quot;bridge&quot; other networks. This means you can use a Matrix client (like Element) to chat with people on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;WhatsApp&lt;/li&gt;
&lt;li&gt;Signal&lt;/li&gt;
&lt;li&gt;Slack
By using bridges, you don&apos;t have to switch between five different apps to stay in touch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3. End-to-End Encryption (E2EE)&lt;/h4&gt;
&lt;p&gt;Matrix uses the &lt;strong&gt;Olm&lt;/strong&gt; and &lt;strong&gt;Megolm&lt;/strong&gt; cryptographic ratchets (based on the Signal protocol). This ensures that only the participants in a room can decrypt the messages. Even the server administrators cannot read your conversations.&lt;/p&gt;
&lt;h4&gt;4. Total Privacy&lt;/h4&gt;
&lt;p&gt;Most messengers require a phone number (Telegram, Signal, WhatsApp). Matrix allows you to register an account with just a username and password (depending on the homeserver policy), giving you a much higher level of anonymity.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Matrix vs. The Competition&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Matrix&lt;/th&gt;
&lt;th&gt;Telegram&lt;/th&gt;
&lt;th&gt;WhatsApp&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Federated&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (Open)&lt;/td&gt;
&lt;td&gt;No (Closed)&lt;/td&gt;
&lt;td&gt;No (Closed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Open Source&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Phone Required&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Self-Hosting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3&gt;How to Get Started&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pick a Client:&lt;/strong&gt; &lt;a href=&quot;https://element.io&quot;&gt;Element&lt;/a&gt; is the most popular, but there are others like Cinny or FluffyChat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Choose a Homeserver:&lt;/strong&gt; You can start with the default &lt;code&gt;matrix.org&lt;/code&gt;, but for better performance and privacy, many users choose smaller community servers or host their own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start Chatting:&lt;/strong&gt; Your ID will look like &lt;code&gt;@username:homeserver.tld&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Matrix is for those who value &lt;strong&gt;sovereignty&lt;/strong&gt; and &lt;strong&gt;interoperability&lt;/strong&gt;. It’s not just about messaging; it’s about taking back control of your digital identity. While the learning curve is slightly steeper than a simple phone app, the freedom it provides is worth the effort.&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; If you are a developer, Matrix is a dream. The entire API is based on simple HTTP/JSON, making it incredibly easy to write bots and integrations.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Telegram Userbot</title><link>https://blog.xdesai.dev/posts/userbot/</link><guid isPermaLink="true">https://blog.xdesai.dev/posts/userbot/</guid><description>What is a Telegram Userbot and Why Use It?</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the Telegram ecosystem, most people are familiar with &quot;Bot API&quot; bots (like &lt;code&gt;@BotFather&lt;/code&gt;). However, there is another powerful tool called a &lt;strong&gt;Userbot&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;What is a Userbot?&lt;/h3&gt;
&lt;p&gt;A userbot refers to a third-party program that interacts with the Telegram API to perform automated tasks on behalf of a user. These userbots can be used to automate various tasks such as sending messages, joining channels, downloading media, and much more.&lt;/p&gt;
&lt;p&gt;Userbots are different from regular Telegram bots as they run on the user&apos;s account rather than a bot account. This means that userbots can access more features and have greater flexibility in terms of the actions they can perform.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Key Use Cases&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Personal Automation&lt;/strong&gt; Automate repetitive tasks like clearing old messages, auto-replying when you are busy, or translating incoming messages in real-time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Advanced Management&lt;/strong&gt; Userbots can perform massive administrative tasks across multiple groups that standard bots might struggle with due to API limitations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Archiving&lt;/strong&gt; They are ideal for backing up chat histories or saving media from channels into a structured database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Self-Bots (UX Enhancements)&lt;/strong&gt; Many developers use userbots to add &quot;slash commands&quot; to their own chat experience, like &lt;code&gt;.google [query]&lt;/code&gt; to instantly post a search link or &lt;code&gt;.status&lt;/code&gt; to show system uptime.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h3&gt;Userbot vs. Regular Bot&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Regular Bot (Bot API)&lt;/th&gt;
&lt;th&gt;Userbot (MTProto)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Account Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dedicated &lt;code&gt;@bot&lt;/code&gt; account&lt;/td&gt;
&lt;td&gt;Your personal account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Initiating Chat&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User must start the bot&lt;/td&gt;
&lt;td&gt;Can message anyone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Privacy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cannot see all messages&lt;/td&gt;
&lt;td&gt;Can read everything you see&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Risk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Safe, official&lt;/td&gt;
&lt;td&gt;Risk of ban if used for spam&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3&gt;The &quot;Rules of the Road&quot;&lt;/h3&gt;
&lt;p&gt;Using a userbot is a &quot;gray area&quot; in Telegram&apos;s Terms of Service. To avoid getting your account banned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Avoid Spam:&lt;/strong&gt; Never use userbots for mass unsolicited messaging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rate Limiting:&lt;/strong&gt; Don&apos;t flood the API with thousands of requests per second.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security:&lt;/strong&gt; Never share your &lt;code&gt;api_id&lt;/code&gt; or &lt;code&gt;api_hash&lt;/code&gt; (the credentials needed to run the script).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Popular Frameworks&lt;/h3&gt;
&lt;p&gt;If you want to build one, these are the top libraries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python:&lt;/strong&gt; &lt;a href=&quot;https://github.com/LonamiWebs/Telethon&quot;&gt;Telethon&lt;/a&gt; or &lt;a href=&quot;https://github.com/pyrogram/pyrogram&quot;&gt;Pyrogram&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt; &lt;a href=&quot;https://github.com/gram-js/gramjs&quot;&gt;GramJS&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt; Userbots are incredibly powerful for power users and developers, but they come with the responsibility of keeping your account secure and following Telegram&apos;s unwritten rules of etiquette.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Telegram API_ID &amp; API_HASH</title><link>https://blog.xdesai.dev/posts/tg-api/</link><guid isPermaLink="true">https://blog.xdesai.dev/posts/tg-api/</guid><description>How to get and why?</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;To work with Telegram&apos;s &lt;strong&gt;MTProto API&lt;/strong&gt; (for userbots or custom clients), you need two unique identifiers: &lt;code&gt;api_id&lt;/code&gt; and &lt;code&gt;api_hash&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Step-by-Step Instructions&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Login:&lt;/strong&gt; Go to &lt;a href=&quot;https://my.telegram.org&quot;&gt;my.telegram.org&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication:&lt;/strong&gt; Enter your phone number in international format. You will receive a confirmation code via the &lt;strong&gt;Telegram app&lt;/strong&gt; (not SMS).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Development:&lt;/strong&gt; Click on the &lt;strong&gt;&quot;API development tools&quot;&lt;/strong&gt; link.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create App:&lt;/strong&gt; Fill out the form:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;App title:&lt;/strong&gt; Any name you prefer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Short name:&lt;/strong&gt; A simple alphanumeric string.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Platform:&lt;/strong&gt; Select any (e.g., Web or Android).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save:&lt;/strong&gt; Click &quot;Create application.&quot; You will now see your &lt;code&gt;App api_id&lt;/code&gt; and &lt;code&gt;App api_hash&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Why do you need them?&lt;/h3&gt;
&lt;p&gt;Unlike the Bot API (used for &lt;code&gt;@BotFather&lt;/code&gt; bots), these credentials allow you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build custom Telegram clients.&lt;/li&gt;
&lt;li&gt;Automate your personal account (Userbots).&lt;/li&gt;
&lt;li&gt;Analyze large amounts of public channel data.&lt;/li&gt;
&lt;li&gt;Manage account-level settings programmatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Security Warning&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Keep your api_hash secret.&lt;/strong&gt; If someone obtains your hash and phone number, they can gain full access to your account. Do not hardcode these values in public GitHub repositories.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Basic Example (Python/Telethon)&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;from telethon import TelegramClient

api_id = 12345
api_hash = &apos;your_api_hash_here&apos;

with TelegramClient(&apos;session_name&apos;, api_id, api_hash) as client:
    client.loop.run_until_complete(client.send_message(&apos;me&apos;, &apos;Hello from my blog!&apos;))
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Heroku Userbot</title><link>https://blog.xdesai.dev/posts/heroku/</link><guid isPermaLink="true">https://blog.xdesai.dev/posts/heroku/</guid><description>The most popular fork of the Hikka userbot.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Heroku Userbot: A New Take on the Legendary Hikka&lt;/h1&gt;
&lt;p&gt;If you&apos;ve ever dabbled in Telegram automation, the name &lt;a href=&quot;https://github.com/hikariatama/Hikka&quot;&gt;&lt;strong&gt;Hikka&lt;/strong&gt;&lt;/a&gt; is surely familiar to you. It’s the foundation, the classic. However, 2024 has brought us something new.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;September 9, 2024&lt;/strong&gt;, marked the official release of &lt;strong&gt;&lt;a href=&quot;https://github.com/coddrago/Heroku&quot;&gt;Heroku&lt;/a&gt;&lt;/strong&gt; userbot — an ambitious fork of the original Hikka.&lt;/p&gt;
&lt;h3&gt;Why Should You Pay Attention?&lt;/h3&gt;
&lt;p&gt;Forks aren&apos;t created without reason. The Heroku developer (&lt;a href=&quot;https://github.com/coddrago&quot;&gt;@coddrago&lt;/a&gt;) set out to take the best parts of the original and adapt them to modern demands while preserving that signature &quot;comfy&quot; flexibility. The project is designed for stable performance across a wide variety of platforms.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What’s Under the Hood?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Full Compatibility:&lt;/strong&gt; Works seamlessly with existing Hikka modules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refined Internals:&lt;/strong&gt; Reworked core components for improved speed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exclusive Features:&lt;/strong&gt; Built-in &quot;out of the box&quot; tweaks that make life easier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whether you&apos;re looking for a reason to upgrade your current toolkit or you&apos;re just starting your journey into the world of userbots, Heroku is an excellent entry point.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;Documentation&lt;/h1&gt;
&lt;h3&gt;About the Project&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Heroku Userbot&lt;/strong&gt; is a functional branch (fork) of the Hikka Userbot project. Launched in September 2024, the project serves as an initiative to enhance user experience and optimize the codebase.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Initial Release Date:&lt;/strong&gt; September 9, 2024&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base Architecture:&lt;/strong&gt; Hikka Userbot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language:&lt;/strong&gt; Python&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Installation and Setup&lt;/h3&gt;
&lt;h4&gt;Installation&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repository:
&lt;code&gt;git clone https://github.com/coddrago/Heroku&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Navigate to the folder:
&lt;code&gt;cd Heroku/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install dependencies:
&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Launch the bot:
&lt;code&gt;python3 -m heroku&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h3&gt;Command Line Flags and Arguments&lt;/h3&gt;
&lt;p&gt;When launching the bot via &lt;code&gt;python3 -m heroku&lt;/code&gt;, you can pass several arguments to customize its behavior. This is especially useful for advanced deployments (VPS, Docker, or automated environments).&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;Destination&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--port&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;port&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Specifies the port for the web interface. (Default: auto-generated via &lt;code&gt;gen_port()&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--phone&lt;/code&gt;, &lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;phone&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pass phone number(s) directly to the bot. Can be used multiple times.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--no-web&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;disable_web&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Disables the web interface entirely.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--qr-login&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qr_login&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enables login via QR code instead of a phone number (requires another device to scan).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--data-root&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;data_root&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets a custom root directory path for storing session files.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--no-auth&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;no_auth&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Disables authentication and API token input. The bot will exit if auth is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--proxy-host&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;proxy_host&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MTProto proxy host (address) without the port.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--proxy-port&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;proxy_port&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MTProto proxy port (integer).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--proxy-secret&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;proxy_secret&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MTProto proxy secret key.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--root&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;disable_root_check&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Disables the &quot;force insecure&quot; warning when running the bot as root.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--sandbox&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sandbox&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If enabled, the bot will shut down instead of attempting a restart.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--proxy-pass&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;proxy_pass&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Opens a proxy pass tunnel on startup (not required during initial setup).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--no-tty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Disables ANSI escape sequences (colorful output) in the console.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Usage Examples&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Running with a specific port and no web interface:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 -m heroku --port 8080 --no-web

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Running via MTProto Proxy:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 -m heroku --proxy-host 1.2.3.4 --proxy-port 8888 --proxy-secret YOUR_SECRET

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Silent mode without colorful output (useful for logging):&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 -m heroku --no-tty

&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;Basic Commands&lt;/h3&gt;
&lt;p&gt;Heroku uses a standard prefix (default is &lt;code&gt;.&lt;/code&gt;), which can be modified using &lt;code&gt;.setprefix&lt;/code&gt; command.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.help [module_name]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the help menu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.dlm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Install a module from the official module repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.e [code]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Evaluates python code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.ping&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Test your userbot ping&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.terminal [cmd]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute console commands directly from the chat&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3&gt;Key Features and Differences from Hikka&lt;/h3&gt;
&lt;p&gt;Compared to the original base, &lt;strong&gt;Heroku Userbot&lt;/strong&gt; introduces several significant technical upgrades:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aiogram v3 Core:&lt;/strong&gt; Completely migrated to the latest version of the Aiogram library.
&lt;ul&gt;
&lt;li&gt;Support for &lt;strong&gt;modern Telegram features&lt;/strong&gt; like nested entities and blockquotes in inline messages.&lt;/li&gt;
&lt;li&gt;Access to a wider range of the latest Telegram Bot API methods.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart Loader:&lt;/strong&gt; An enhanced module loader that automatically checks for and applies updates to your modules every time the userbot restarts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refined UI/UX:&lt;/strong&gt; Completely overhauled visual templates for inline menus and system messages, providing a cleaner and more modern look.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stability:&lt;/strong&gt; A massive &quot;bug-squashing&quot; campaign was conducted, fixing numerous legacy issues for a smoother experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; This software is intended for automating routine tasks. The developers are not responsible for account bans resulting from violations of Telegram&apos;s Terms of Service (Spam/Flood).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h3&gt;Module Channels &amp;amp; Repositories&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Heroku is fully compatible with the Hikka ecosystem, giving you access to thousands of custom scripts. You can find modules in these popular Telegram channels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/codrago_m&quot;&gt;@codrago_m&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/famods&quot;&gt;@famods&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/vsecoder_m&quot;&gt;@vsecoder_m&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/hikka_mods&quot;&gt;@hikka_mods&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/nercymods&quot;&gt;@nercymods&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/kmodules&quot;&gt;@kmodules&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/morisummermods&quot;&gt;@morisummermods&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/AstroModules&quot;&gt;@AstroModules&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/AuroraModules&quot;&gt;@AuroraModules&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://t.me/sqlmerr_m&quot;&gt;@sqlmerr_m&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;How to Install&lt;/h4&gt;
&lt;p&gt;To add a new module, simply reply to a &lt;code&gt;.py&lt;/code&gt; file or send a link to the code with the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.dlm [link/file]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Useful Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/heroku_ub&quot;&gt;&lt;strong&gt;Official Channel&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/heroku_talks&quot;&gt;&lt;strong&gt;Support Chat&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/coddrago/Heroku&quot;&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Markdown Tutorial</title><link>https://blog.xdesai.dev/posts/markdown-tutorial/</link><guid isPermaLink="true">https://blog.xdesai.dev/posts/markdown-tutorial/</guid><description>A simple example of a Markdown blog post.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Markdown Tutorial&lt;/h1&gt;
&lt;p&gt;A markdown example shows how to write a markdown file. This document integrates core syntax and extensions (GMF).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#block-elements&quot;&gt;Block Elements&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#paragraphs-and-line-breaks&quot;&gt;Paragraphs and Line Breaks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#headers&quot;&gt;Headers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#blockquotes&quot;&gt;Blockquotes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#lists&quot;&gt;Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#code-blocks&quot;&gt;Code Blocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#horizontal-rules&quot;&gt;Horizontal Rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#table&quot;&gt;Table&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#span-elements&quot;&gt;Span Elements&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#links&quot;&gt;Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#emphasis&quot;&gt;Emphasis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#code&quot;&gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#images&quot;&gt;Images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#strikethrough&quot;&gt;Strikethrough&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#miscellaneous&quot;&gt;Miscellaneous&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#automatic-links&quot;&gt;Automatic Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#backslash-escapes&quot;&gt;Backslash Escapes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#inline-html&quot;&gt;Inline HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Block Elements&lt;/h2&gt;
&lt;h3&gt;Paragraphs and Line Breaks&lt;/h3&gt;
&lt;h4&gt;Paragraphs&lt;/h4&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;One or more blank lines. (A blank line is a line containing nothing but &lt;strong&gt;spaces&lt;/strong&gt; or &lt;strong&gt;tabs&lt;/strong&gt; is considered blank.)&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This will be
inline.

This is second paragraph.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This will be
inline.&lt;/p&gt;
&lt;p&gt;This is second paragraph.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Line Breaks&lt;/h4&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;End a line with &lt;strong&gt;two or more spaces&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This will be not
inline.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This will be not&lt;br /&gt;
inline.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Headers&lt;/h3&gt;
&lt;p&gt;Markdown supports two styles of headers, Setext and atx.&lt;/p&gt;
&lt;h4&gt;Setext&lt;/h4&gt;
&lt;p&gt;HTML Tags: &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;“Underlined” using &lt;strong&gt;equal signs (=)&lt;/strong&gt; as &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; and &lt;strong&gt;dashes (-)&lt;/strong&gt; as &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; in any number.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This is an H1
=============
This is an H2
-------------
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;This is an H1&lt;/h1&gt;
&lt;h2&gt;This is an H2&lt;/h2&gt;
&lt;hr /&gt;
&lt;h4&gt;atx&lt;/h4&gt;
&lt;p&gt;HTML Tags: &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h4&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h5&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Uses 1-6 &lt;strong&gt;hash characters (#)&lt;/strong&gt; at the start of the line, corresponding to &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; - &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# This is an H1
## This is an H2
###### This is an H6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;This is an H1&lt;/h1&gt;
&lt;h2&gt;This is an H2&lt;/h2&gt;
&lt;h6&gt;This is an H6&lt;/h6&gt;
&lt;hr /&gt;
&lt;p&gt;Optionally, you may “close” atx-style headers. The closing hashes &lt;strong&gt;don’t need to match&lt;/strong&gt; the number of hashes used to open the header.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# This is an H1 #
## This is an H2 ##
### This is an H3 ######
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;This is an H1&lt;/h1&gt;
&lt;h2&gt;This is an H2&lt;/h2&gt;
&lt;h3&gt;This is an H3&lt;/h3&gt;
&lt;hr /&gt;
&lt;h3&gt;Blockquotes&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Markdown uses email-style &lt;strong&gt;&amp;gt;&lt;/strong&gt; characters for blockquoting. It looks best if you hard wrap the text and put a &amp;gt; before every line.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
&amp;gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
&amp;gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
&amp;gt;
&amp;gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
&amp;gt; id sem consectetuer libero luctus adipiscing.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/p&gt;
&lt;p&gt;Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;Markdown allows you to be lazy and only put the &amp;gt; before the first line of a hard-wrapped paragraph.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.

&amp;gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by adding additional levels of &amp;gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; This is the first level of quoting.
&amp;gt;
&amp;gt; &amp;gt; This is nested blockquote.
&amp;gt;
&amp;gt; Back to the first level.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the first level of quoting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is nested blockquote.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Back to the first level.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;Blockquotes can contain other Markdown elements, including headers, lists, and code blocks.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; ## This is a header.
&amp;gt;
&amp;gt; 1.   This is the first list item.
&amp;gt; 2.   This is the second list item.
&amp;gt;
&amp;gt; Here&apos;s some example code:
&amp;gt;
&amp;gt;     return shell_exec(&quot;echo $input | $markdown_script&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;h2&gt;This is a header.&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;This is the first list item.&lt;/li&gt;
&lt;li&gt;This is the second list item.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here&apos;s some example code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;return shell_exec(&quot;echo $input | $markdown_script&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h3&gt;Lists&lt;/h3&gt;
&lt;p&gt;Markdown supports ordered (numbered) and unordered (bulleted) lists.&lt;/p&gt;
&lt;h4&gt;Unordered&lt;/h4&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Unordered lists use &lt;strong&gt;asterisks (*)&lt;/strong&gt;, &lt;strong&gt;pluses (+)&lt;/strong&gt;, and &lt;strong&gt;hyphens (-)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*   Red
*   Green
*   Blue
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;is equivalent to:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;+   Red
+   Green
+   Blue
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-   Red
-   Green
-   Blue
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Ordered&lt;/h4&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ordered lists use numbers followed by periods:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1.  Bird
2.  McHale
3.  Parish
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li&gt;Bird&lt;/li&gt;
&lt;li&gt;McHale&lt;/li&gt;
&lt;li&gt;Parish&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;It’s possible to trigger an ordered list by accident, by writing something like this:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1986. What a great season.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li&gt;What a great season.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;You can &lt;strong&gt;backslash-escape (\)&lt;/strong&gt; the period:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1986\. What a great season.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;1986. What a great season.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Indented&lt;/h4&gt;
&lt;h5&gt;Blockquote&lt;/h5&gt;
&lt;p&gt;To put a blockquote within a list item, the blockquote’s &amp;gt; delimiters need to be indented:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*   A list item with a blockquote:

    &amp;gt; This is a blockquote
    &amp;gt; inside a list item.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A list item with a blockquote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a blockquote
inside a list item.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h5&gt;Code Block&lt;/h5&gt;
&lt;p&gt;To put a code block within a list item, the code block needs to be indented twice — &lt;strong&gt;8 spaces&lt;/strong&gt; or &lt;strong&gt;two tabs&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*   A list item with a code block:

        &amp;lt;code goes here&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A list item with a code block:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;code goes here&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h5&gt;Nested List&lt;/h5&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* A
  * A1
  * A2
* B
* C
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;A
&lt;ul&gt;
&lt;li&gt;A1&lt;/li&gt;
&lt;li&gt;A2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;B&lt;/li&gt;
&lt;li&gt;C&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Code Blocks&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Indent every line of the block by at least &lt;strong&gt;4 spaces&lt;/strong&gt; or &lt;strong&gt;1 tab&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This is a normal paragraph:

    This is a code block.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This is a normal paragraph:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This is a code block.
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;A code block continues until it reaches a line that is not indented (or the end of the article).&lt;/p&gt;
&lt;p&gt;Within a code block, &lt;strong&gt;&lt;em&gt;ampersands (&amp;amp;)&lt;/em&gt;&lt;/strong&gt; and angle &lt;strong&gt;brackets (&amp;lt; and &amp;gt;)&lt;/strong&gt; are automatically converted into HTML entities.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    &amp;lt;div class=&quot;footer&quot;&amp;gt;
        &amp;amp;copy; 2004 Foo Corporation
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;footer&quot;&amp;gt;
    &amp;amp;copy; 2004 Foo Corporation
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Following sections Fenced Code Blocks and Syntax Highlighting are extensions, you can use the other way to write the code block.&lt;/p&gt;
&lt;h4&gt;Fenced Code Blocks&lt;/h4&gt;
&lt;p&gt;Just wrap your code in &lt;code&gt;```&lt;/code&gt; (as shown below) and you won&apos;t need to indent it by four spaces.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Here&apos;s an example:

```
function test() {
  console.log(&quot;notice the blank line before this function?&quot;);
}
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here&apos;s an example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function test() {
  console.log(&quot;notice the blank line before this function?&quot;);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h4&gt;Syntax Highlighting&lt;/h4&gt;
&lt;p&gt;In your fenced block, add an optional language identifier and we&apos;ll run it through syntax highlighting (&lt;a href=&quot;https://github.com/github/linguist/blob/master/lib/linguist/languages.yml&quot;&gt;Support Languages&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```ruby
require &apos;redcarpet&apos;
markdown = Redcarpet.new(&quot;Hello World!&quot;)
puts markdown.to_html
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;require &apos;redcarpet&apos;
markdown = Redcarpet.new(&quot;Hello World!&quot;)
puts markdown.to_html
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;Horizontal Rules&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;hr /&amp;gt;&lt;/code&gt;
Places &lt;strong&gt;three or more hyphens (-), asterisks (*), or underscores (_)&lt;/strong&gt; on a line by themselves. You may use spaces between the hyphens or asterisks.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* * *
***
*****
- - -
---------------------------------------
___
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;h3&gt;Table&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s an extension.&lt;/p&gt;
&lt;p&gt;Separates column by &lt;strong&gt;pipe (|)&lt;/strong&gt; and header by &lt;strong&gt;dashes (-)&lt;/strong&gt;, and uses &lt;strong&gt;colon (:)&lt;/strong&gt; for alignment.&lt;/p&gt;
&lt;p&gt;The outer &lt;strong&gt;pipes (|)&lt;/strong&gt; and alignment are optional. There are &lt;strong&gt;3 delimiters&lt;/strong&gt; each cell at least for separating header.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;| Left | Center | Right |
|:-----|:------:|------:|
|aaa   |bbb     |ccc    |
|ddd   |eee     |fff    |

 A | B
---|---
123|456


A |B
--|--
12|45
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Left&lt;/th&gt;
&lt;th&gt;Center&lt;/th&gt;
&lt;th&gt;Right&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;aaa&lt;/td&gt;
&lt;td&gt;bbb&lt;/td&gt;
&lt;td&gt;ccc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ddd&lt;/td&gt;
&lt;td&gt;eee&lt;/td&gt;
&lt;td&gt;fff&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;A&lt;/th&gt;
&lt;th&gt;B&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;td&gt;456&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;A&lt;/th&gt;
&lt;th&gt;B&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;Span Elements&lt;/h2&gt;
&lt;h3&gt;Links&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Markdown supports two style of links: inline and reference.&lt;/p&gt;
&lt;h4&gt;Inline&lt;/h4&gt;
&lt;p&gt;Inline link format like this: &lt;code&gt;[Link Text](URL &quot;Title&quot;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Title is optional.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This is [an example](http://example.com/ &quot;Title&quot;) inline link.

[This link](http://example.net/) has no title attribute.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot;&gt;an example&lt;/a&gt; inline link.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://example.net/&quot;&gt;This link&lt;/a&gt; has no title attribute.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;If you’re referring to a local resource on the same server, you can use relative paths:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;See my [About](/about/) page for details.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;See my &lt;a href=&quot;/about/&quot;&gt;About&lt;/a&gt; page for details.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Reference&lt;/h4&gt;
&lt;p&gt;You could predefine link references. Format like this: &lt;code&gt;[id]: URL &quot;Title&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Title is also optional. And the you refer the link, format like this: &lt;code&gt;[Link Text][id]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[id]: http://example.com/  &quot;Optional Title Here&quot;
This is [an example][id] reference-style link.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot;&gt;an example&lt;/a&gt; reference-style link.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Square brackets containing the link identifier (&lt;strong&gt;not case sensitive&lt;/strong&gt;, optionally indented from the left margin using up to three spaces);&lt;/li&gt;
&lt;li&gt;followed by a colon;&lt;/li&gt;
&lt;li&gt;followed by one or more spaces (or tabs);&lt;/li&gt;
&lt;li&gt;followed by the URL for the link;&lt;/li&gt;
&lt;li&gt;The link URL may, optionally, be surrounded by angle brackets.&lt;/li&gt;
&lt;li&gt;optionally followed by a title attribute for the link, enclosed in double or single quotes, or enclosed in parentheses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following three link definitions are equivalent:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[foo]: http://example.com/  &quot;Optional Title Here&quot;
[foo]: http://example.com/  &apos;Optional Title Here&apos;
[foo]: http://example.com/  (Optional Title Here)
[foo]: &amp;lt;http://example.com/&amp;gt;  &quot;Optional Title Here&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Uses an empty set of square brackets, the link text itself is used as the name.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Google]: http://google.com/
[Google][]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;http://google.com/&quot;&gt;Google&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Emphasis&lt;/h3&gt;
&lt;p&gt;HTML Tags: &lt;code&gt;&amp;lt;em&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Markdown treats &lt;strong&gt;asterisks (*)&lt;/strong&gt; and &lt;strong&gt;underscores (_)&lt;/strong&gt; as indicators of emphasis. &lt;strong&gt;One delimiter&lt;/strong&gt; will be &lt;code&gt;&amp;lt;em&amp;gt;&lt;/code&gt;; *&lt;em&gt;double delimiters&lt;/em&gt; will be &lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*single asterisks*

_single underscores_

**double asterisks**

__double underscores__
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;single asterisks&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;single underscores&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;double asterisks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;double underscores&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;But if you surround an * or _ with spaces, it’ll be treated as a literal asterisk or underscore.&lt;/p&gt;
&lt;p&gt;You can backslash escape it:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\*this text is surrounded by literal asterisks\*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;*this text is surrounded by literal asterisks*&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Code&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Wraps it with &lt;strong&gt;backtick quotes (`)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Use the `printf()` function.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;To include a literal backtick character within a code span, you can use &lt;strong&gt;multiple backticks&lt;/strong&gt; as the opening and closing delimiters:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;``There is a literal backtick (`) here.``
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The backtick delimiters surrounding a code span may include spaces — one after the opening, one before the closing. This allows you to place literal backtick characters at the beginning or end of a code span:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;A single backtick in a code span: `` ` ``

A backtick-delimited string in a code span: `` `foo` ``
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Images&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;img /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Markdown uses an image syntax that is intended to resemble the syntax for links, allowing for two styles: inline and reference.&lt;/p&gt;
&lt;h4&gt;Inline&lt;/h4&gt;
&lt;p&gt;Inline image syntax looks like this: &lt;code&gt;![Alt text](URL &quot;Title&quot;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Title is optional.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![Alt text](/path/to/img.jpg)

![Alt text](/path/to/img.jpg &quot;Optional title&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An exclamation mark: !;&lt;/li&gt;
&lt;li&gt;followed by a set of square brackets, containing the alt attribute text for the image;&lt;/li&gt;
&lt;li&gt;followed by a set of parentheses, containing the URL or path to the image, and an optional title attribute enclosed in double or single quotes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Reference&lt;/h4&gt;
&lt;p&gt;Reference-style image syntax looks like this: &lt;code&gt;![Alt text][id]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[img id]: url/to/image  &quot;Optional title attribute&quot;
![Alt text][img id]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Strikethrough&lt;/h3&gt;
&lt;p&gt;HTML Tag: &lt;code&gt;&amp;lt;del&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s an extension.&lt;/p&gt;
&lt;p&gt;GFM adds syntax to strikethrough text.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~~Mistaken text.~~
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;s&gt;Mistaken text.&lt;/s&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Miscellaneous&lt;/h2&gt;
&lt;h3&gt;Automatic Links&lt;/h3&gt;
&lt;p&gt;Markdown supports a shortcut style for creating “automatic” links for URLs and email addresses: simply surround the URL or email address with angle brackets.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;http://example.com/&amp;gt;

&amp;lt;address@example.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;http://example.com/&quot;&gt;http://example.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;mailto:address@example.com&quot;&gt;address@example.com&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;GFM will autolink standard URLs.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://github.com/emn178/markdown
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;https://github.com/emn178/markdown&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Backslash Escapes&lt;/h3&gt;
&lt;p&gt;Markdown allows you to use backslash escapes to generate literal characters which would otherwise have special meaning in Markdown’s formatting syntax.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\*literal asterisks\*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;*literal asterisks*&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Markdown provides backslash escapes for the following characters:&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\   backslash
`   backtick
*   asterisk
_   underscore
{}  curly braces
[]  square brackets
()  parentheses
#   hash mark
+   plus sign
-   minus sign (hyphen)
.   dot
!   exclamation mark
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Inline HTML&lt;/h2&gt;
&lt;p&gt;For any markup that is not covered by Markdown’s syntax, you simply use HTML itself. There’s no need to preface it or delimit it to indicate that you’re switching from Markdown to HTML; you just use the tags.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This is a regular paragraph.

&amp;lt;table&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;Foo&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;

This is another regular paragraph.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This is a regular paragraph.&lt;/p&gt;
&lt;p&gt;&amp;lt;table&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td&amp;gt;Foo&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;p&gt;This is another regular paragraph.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Note that Markdown formatting syntax is &lt;strong&gt;not processed within block-level HTML tags&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Unlike block-level HTML tags, Markdown syntax is &lt;strong&gt;processed within span-level tags&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;span&amp;gt;**Work**&amp;lt;/span&amp;gt;

&amp;lt;div&amp;gt;
    **No Work**
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;span&amp;gt;&lt;strong&gt;Work&lt;/strong&gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div&amp;gt;
&lt;strong&gt;No Work&lt;/strong&gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
</content:encoded></item></channel></rss>