<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="361996" data-post-id="361996">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wojtekmach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wojtekmach/120/999_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wojtekmach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Hex Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think we only used that passthrough workaround with Req.Test.stub, not Req.Test.expect. But yeah, if you’d like to solve this properly and contribute a Req.Test.passthrough/1, a PR is very welcome indeed.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="361996" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/52">Post #51</a>
	                </div>
	            </div>
              <div id="likers-container-361996" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="361996"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #51"></div>
  </section>
</div>
    <div class="postbit" id="362335" data-post-id="362335">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Wojciech" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Wojciech/120/31135_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Wojciech
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, I noticed that the article “SDKs with Req: Stripe” contains a link to “How we verify webhooks” blog post, but such article doesn’t seem to exist, could you explain why is that the case?</p>
<p>And if you find some time, within the WebHook listener GenServer it would be nice to have second clause of <code>init/1</code> function changed from:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">%{stripe: stripe_cli, forward_to: forward_to}
</code></pre>
<p>to:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">%{stripe_cli: stripe_cli, forward_to: forward_to}
</code></pre>
<p>As the current implementation does not work.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="362335" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/53">Post #52</a>
	                </div>
	            </div>
              <div id="likers-container-362335" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="362335"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #52"></div>
  </section>
</div>
    <div class="postbit" id="362356" data-post-id="362356">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://web.archive.org/web/20250113123828/https://dashbit.co/blog/how-we-verify-webhooks" rel="noopener nofollow ugc">Archive.org backed-up article</a> to the rescue.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="362356" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/54">Post #53</a>
	                </div>
	            </div>
              <div id="likers-container-362356" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="362356"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #53"></div>
  </section>
</div>
    <div class="postbit" id="364336" data-post-id="364336">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jan-mb-me" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jan-mb-me/120/34448_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jan-mb-me
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi <a class="mention" href="/u/wojtekmach" rel="nofollow">@wojtekmach</a>, I only wanted to say thank you.</p>
<p>I just enjoyed the variety of options for retries (<a href="https://hexdocs.pm/req/0.5.10/Req.Steps.html#retry/1-request-options" class="inline-onebox" rel="noopener nofollow ugc">Req.Steps — req v0.5.10</a>) to deal with an API that sometimes refuses to accept a newly created access token with “status: 401, message: Invalid or expired” although it accepts it a few milliseconds later.</p>
<p>With Req it was super easy to implement a solution that doesn’t enforce a delay after token creation by default.</p>
<p>Edit:<br>
Thanks to a custom <code>:retry</code> it was very easy to re-implement the default and additionally retry on status 401.<br>
Thanks to a custom <code>:retry_delay</code> the impact on test duration was minimal.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="364336" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/55">Post #54</a>
	                </div>
	            </div>
              <div id="likers-container-364336" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="364336"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #54"></div>
  </section>
</div>
    <div class="postbit" id="364524" data-post-id="364524">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Asd" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Asd
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I am sorry to be this kind of guy but it’s been 3 years now. When is <code>1.0.0</code> coming up? I remember breaking my production with  <code>0.3.0</code> update, and then I decided to not use Req until a stable release arrives. Do you have plans for it?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="364524" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/56">Post #55</a>
	                </div>
	            </div>
              <div id="likers-container-364524" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="364524"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #55"></div>
  </section>
</div>
    <div class="postbit" id="364529" data-post-id="364529">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wojtekmach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wojtekmach/120/999_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wojtekmach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Hex Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I plan to release v1.0 sometime this year.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="364529" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/57">Post #56</a>
	                </div>
	            </div>
              <div id="likers-container-364529" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="364529"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #56"></div>
  </section>
</div>
    <div class="postbit" id="364531" data-post-id="364531">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="arcanemachine" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/arcanemachine/120/29109_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  arcanemachine
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Finch isn’t at v1.0 either… <a class="mention" href="/u/wojtekmach" rel="nofollow">@wojtekmach</a> Any ideas when that one will have a stable release?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="364531" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/58">Post #57</a>
	                </div>
	            </div>
              <div id="likers-container-364531" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="364531"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #57"></div>
  </section>
</div>
    <div class="postbit" id="389973" data-post-id="389973">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wojtekmach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wojtekmach/120/999_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wojtekmach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Hex Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>There’s a few things left, I’ll update in this thread once we’re closer to v1.0.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="389973" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/59">Post #58</a>
	                </div>
	            </div>
              <div id="likers-container-389973" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="389973"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #58"></div>
  </section>
</div>
    <div class="postbit" id="389974" data-post-id="389974">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wojtekmach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wojtekmach/120/999_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wojtekmach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Hex Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Req v0.6.0 is out:</p>
<h1><a name="p-389974-changelog-1" class="anchor" href="#p-389974-changelog-1" aria-label="Heading link" rel="nofollow"></a>CHANGELOG</h1>
<h2><a name="p-389974-v060-2026-06-08-2" class="anchor" href="#p-389974-v060-2026-06-08-2" aria-label="Heading link" rel="nofollow"></a>v0.6.0 (2026-06-08)</h2>
<ul>
<li>
<p><a href="https://hexdocs.pm/req/Req.Steps.html#encode_body/1" rel="noopener nofollow ugc"><code>encode_body</code></a>: Security fix for <code>:form_multipart</code> header injection<br>
(<a href="https://github.com/wojtekmach/req/security/advisories/GHSA-px9f-whj3-246m" rel="noopener nofollow ugc">GHSA-px9f-whj3-246m</a>).</p>
<p>The multipart encoder interpolated the per-part <code>name</code>, <code>filename</code>, and<br>
<code>content_type</code> into the part headers without escaping, so an<br>
attacker-controlled value could inject extra headers or smuggle additional<br>
parts into the request. These values are now escaped per RFC 7578 / WHATWG<br>
form-data (<code>"</code>, CR, and LF are percent-encoded).</p>
<p>Thanks to <a class="mention" href="/u/pjullrich" rel="nofollow">@PJUllrich</a> for reporting it.</p>
</li>
<li>
<p><a href="https://hexdocs.pm/req/Req.Steps.html#decode_body/1" rel="noopener nofollow ugc"><code>decode_body</code></a>: Drop automatic zip/tar/tgz/gz/zst/csv decoding,<br>
(<a href="https://github.com/wojtekmach/req/security/advisories/GHSA-655f-mp8p-96gv" rel="noopener nofollow ugc">GHSA-655f-mp8p-96gv</a>).</p>
<p>Req previously auto-decoded archive and compressed response bodies (<code>zip</code>,<br>
<code>tar</code>, <code>tgz</code>, <code>gz</code>, <code>zst</code>, and <code>csv</code>) based on the server-supplied<br>
<code>content-type</code>, materialising the full decompressed contents in memory with<br>
no size cap. An attacker-controlled (or redirect-reachable) endpoint could<br>
return a tiny “decompression bomb” that expanded to gigabytes and exhausted<br>
the node’s memory.</p>
<p>Now only JSON is decoded by default. Other formats are opt-in via the new<br>
<code>:decoders</code> option, which defaults to <code>[:json, :json_api]</code>. Setting it<br>
replaces the default (include <code>:json</code> to keep JSON decoding), and <code>false</code><br>
disables all decoding:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># opt into archives (only for endpoints you trust):
Req.get!(url, decoders: [:json, :zip])
</code></pre>
<p><strong>Note</strong>: The decoded zip/tar is still list of<br>
<code>{filename :: charlist(), contents :: binary}</code> tuples.<br>
In the future release, this will be list of<br>
<code>{filename :: binary(), contents :: binary()}</code> tuples.</p>
<p>While automatic CSV decoding wasn’t a security issue, the behaviour based<br>
on presence/absence of <code>nimble_csv</code> dependency was suprising. CSV support<br>
is still built-in but need to be enabled with <code>decoders: [:csv]</code>.</p>
<p>Custom decoders are supported via <code>{format, codec}</code> tuples, where <code>codec</code> is<br>
a module exporting <code>decode/1</code> or a 1-arity function returning an <code>:ok</code>/<code>:error</code><br>
tuple, for example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Req.get!(url, decoders: [:json, ics: &amp;{:ok, ICal.from_ics(&amp;1)}])
</code></pre>
<p>Thanks to <a class="mention" href="/u/pjullrich" rel="nofollow">@PJUllrich</a> for reporting it.</p>
</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="389974" data-batch-url="/posts/batch_likers">
                        11
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/60">Post #59</a>
	                </div>
	            </div>
              <div id="likers-container-389974" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="389974"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #59"></div>
  </section>
</div>
    <div class="postbit" id="389988" data-post-id="389988">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you, super reassuring to see you are standing on top of the recent wave of CVEs. Much appreciated!</p>
<aside class="quote group-Hex-Core-Team" data-username="wojtekmach" data-post="60" data-topic="48494">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wojtekmach/48/999_2.png" class="avatar"> wojtekmach:</div>
<blockquote>
<p>An attacker-controlled (or redirect-reachable) endpoint could<br>
return a tiny “decompression bomb” that expanded to gigabytes and exhausted<br>
the node’s memory.</p>
<p>Now only JSON is decoded by default. Other formats are opt-in via the new<br>
<code>:decoders</code> option</p>
</blockquote>
</aside>
<p>This is not 100% clear to me: does that mean that decompression bombs are still possible if the user of the library opts in to a certain automatic decoding format? I mean, one cannot do much if somebody targets them with that I suppose, but curios how far does the defense go.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="389988" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/req-a-batteries-included-http-client-for-elixir/48494/61">Post #60</a>
	                </div>
	            </div>
              <div id="likers-container-389988" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="389988"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #60"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/48494/load_more?page=7">Load more posts (3 remaining)</a>
</div></template></turbo-stream>