<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-04-02T15:04:43Z</updated>
  <generator>https://yabu.me</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://yabu.me/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme.rss" />
  <link href="https://yabu.me/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme" />
  <id>https://yabu.me/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme</id>
  <icon></icon>
  <logo></logo>


  <title>Nostr notes on nostr.bond</title>
  <link href="https://yabu.me/r/nostr.bond" />
  <link rel="self" type="application/atom+xml" href="https://yabu.me/r/nostr.bond.rss" />
  <id>https://yabu.me/r/nostr.bond</id>
  <icon></icon>
  <logo></logo>



  <entry>
    <id>https://yabu.me/nevent1qqsfzrshmz6fv6g73wvglrqyhq0wu6qlpjh8pqr0nyjuxaeturvj6hcpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc07lpyt</id>
    
      <title type="html">Syryjskie siły rządowe otworzyły ogień do kurdyjskich ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfzrshmz6fv6g73wvglrqyhq0wu6qlpjh8pqr0nyjuxaeturvj6hcpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc07lpyt" />
    <content type="html">
      Syryjskie siły rządowe otworzyły ogień do kurdyjskich demonstrantów na południe od miasta Kobani. &lt;br/&gt;Jednak pociski okazały się demokratyczne, dlatego Europa nie potępi tego czynu
    </content>
    <updated>2026-04-02T15:04:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0dxsf7gsgrhscdg7rsvp5cjpfptg3a6ft5uye8hwgd5mu6rgsfnqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc5j24vg</id>
    
      <title type="html">Trump do Hiszpanów: - I co wyście takiego zrobili dla Ameryki? ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0dxsf7gsgrhscdg7rsvp5cjpfptg3a6ft5uye8hwgd5mu6rgsfnqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc5j24vg" />
    <content type="html">
      Trump do Hiszpanów:&lt;br/&gt;- I co wyście takiego zrobili dla Ameryki?&lt;br/&gt;Hiszpanie:&lt;br/&gt;- Odkryliśmy i z tego, co dzisiaj widzimy, to żałujemy.
    </content>
    <updated>2026-04-02T07:46:13Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrdr09gpfkle8z5lcxr3xr7g6gyy5ecdu0gelm7e6yv6pv6xap64qpzpmhxue69uhkummnw3ezucn0dejqyg93r7440f75n7c638sy5jc0dkk4mucnfexdtqxc50dyk6s7cjsfrgtu8gfd</id>
    
      <title>Nostr event nevent1qqsrdr09gpfkle8z5lcxr3xr7g6gyy5ecdu0gelm7e6yv6pv6xap64qpzpmhxue69uhkummnw3ezucn0dejqyg93r7440f75n7c638sy5jc0dkk4mucnfexdtqxc50dyk6s7cjsfrgtu8gfd</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrdr09gpfkle8z5lcxr3xr7g6gyy5ecdu0gelm7e6yv6pv6xap64qpzpmhxue69uhkummnw3ezucn0dejqyg93r7440f75n7c638sy5jc0dkk4mucnfexdtqxc50dyk6s7cjsfrgtu8gfd" />
    <content type="html">
       &lt;img src=&#34;https://npub1ky06k4a86j0mr2y7qjjtpak66h0nzd8ye4vqmz3a5jm2rmz2pydqm3sps6.blossom.band/85226fc45c3a4a26a1977a2d79c53110e90335d42958c28abdc97bb01e54e59f.jpg&#34;&gt; 
    </content>
    <updated>2026-04-01T11:27:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswl8mjlst5l9f4s0u6y8djvnqm09tcm0tyjhkxmxynsjwm0eagmzgpzpmhxue69uhkummnw3ezucn0dejqygyvfx995qmqev5d2mu4wjpw22kuv9xk63dtfewdm3lm8xfypcpf05x3m7hp</id>
    
      <title>Nostr event nevent1qqswl8mjlst5l9f4s0u6y8djvnqm09tcm0tyjhkxmxynsjwm0eagmzgpzpmhxue69uhkummnw3ezucn0dejqygyvfx995qmqev5d2mu4wjpw22kuv9xk63dtfewdm3lm8xfypcpf05x3m7hp</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswl8mjlst5l9f4s0u6y8djvnqm09tcm0tyjhkxmxynsjwm0eagmzgpzpmhxue69uhkummnw3ezucn0dejqygyvfx995qmqev5d2mu4wjpw22kuv9xk63dtfewdm3lm8xfypcpf05x3m7hp" />
    <content type="html">
       &lt;img src=&#34;https://npub133yc5ksrvr9j34t0j46g9ef2m3s56m294d89ehw8lvueys8q997szphgjx.blossom.band/d0a29e6fedca55dd59c663bde5ae08142cd95a7984c4ac486e473ef420cc4631.jpg&#34;&gt; &lt;br/&gt;#safe #kasa #ko
    </content>
    <updated>2026-03-31T19:47:19Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst80te9m4w5a457m3hgvs42an232zqx0ede27wcqnxzyl8ueea3eqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvcg6vl2j</id>
    
      <title type="html">Włochy odmówiły Stanom Zjednoczonym dostępu do bazy Sigonella ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst80te9m4w5a457m3hgvs42an232zqx0ede27wcqnxzyl8ueea3eqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvcg6vl2j" />
    <content type="html">
      Włochy odmówiły Stanom Zjednoczonym dostępu do bazy Sigonella na Sycylii&lt;br/&gt;&lt;br/&gt;Co jest? bunt na pokładzie 🤔
    </content>
    <updated>2026-03-31T12:14:23Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9c6jqg5lznktp6wac4vkjgc0z4xxt2z7a29llynm8asgmw82p9sqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc4m04mw</id>
    
      <title type="html">Paryż zamknął swoją przestrzeń powietrną dla amerykańskich ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9c6jqg5lznktp6wac4vkjgc0z4xxt2z7a29llynm8asgmw82p9sqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc4m04mw" />
    <content type="html">
      Paryż zamknął swoją przestrzeń powietrną dla amerykańskich transportów wojskowych&lt;br/&gt;&lt;br/&gt;Teraz się zacznie… 😉
    </content>
    <updated>2026-03-31T12:11:55Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyep2q0g2l9vwqk248ypklrek6pkjsz3ta4vsmgpwsf8ykxcw500spzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc06ncqw</id>
    
      <title>Nostr event nevent1qqsyep2q0g2l9vwqk248ypklrek6pkjsz3ta4vsmgpwsf8ykxcw500spzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc06ncqw</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyep2q0g2l9vwqk248ypklrek6pkjsz3ta4vsmgpwsf8ykxcw500spzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvc06ncqw" />
    <content type="html">
       &lt;img src=&#34;https://image.nostr.build/ab175a0523c1b4b8842c56a3069d58e8819c98a2c009c61ee7c7445765c61941.jpg&#34;&gt; &lt;br/&gt;#izrael #iran #wojna
    </content>
    <updated>2026-03-31T06:53:11Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf2grlcehymvkwng9v33fsdws3pr2wsuv78hwdw05w4wjr9d06dlqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvca737s4</id>
    
      <title type="html">Polski żołnierz, przebywający na misji w Libanie został ranny ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf2grlcehymvkwng9v33fsdws3pr2wsuv78hwdw05w4wjr9d06dlqpzpmhxue69uhkummnw3ezucn0dejqygpg3g62xelvdp4rkr2q0mxxq0dk5m9dg8mvdy3npeg4zructcxkvca737s4" />
    <content type="html">
      Polski żołnierz, przebywający na misji w Libanie został ranny w wyniku wybuchu miny pułapki.
    </content>
    <updated>2026-03-29T21:54:24Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsve4akk5ytjn8n976vjht6t8gvx8522dp5p38df6ck03yhrmyuuyspzpmhxue69uhkummnw3ezucn0dejqygyvfx995qmqev5d2mu4wjpw22kuv9xk63dtfewdm3lm8xfypcpf05djlrx8</id>
    
      <title>Nostr event nevent1qqsve4akk5ytjn8n976vjht6t8gvx8522dp5p38df6ck03yhrmyuuyspzpmhxue69uhkummnw3ezucn0dejqygyvfx995qmqev5d2mu4wjpw22kuv9xk63dtfewdm3lm8xfypcpf05djlrx8</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsve4akk5ytjn8n976vjht6t8gvx8522dp5p38df6ck03yhrmyuuyspzpmhxue69uhkummnw3ezucn0dejqygyvfx995qmqev5d2mu4wjpw22kuv9xk63dtfewdm3lm8xfypcpf05djlrx8" />
    <content type="html">
      rdfg
    </content>
    <updated>2026-03-29T16:29:47Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvq7e8asr6rru2w7qry0wteawuxps7h4jvsmyv0ep9av649he67mqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsahc9l8</id>
    
      <title type="html">unstable_features = true style_edition = &amp;#34;2024&amp;#34; ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvq7e8asr6rru2w7qry0wteawuxps7h4jvsmyv0ep9av649he67mqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsahc9l8" />
    <content type="html">
      unstable_features = true&lt;br/&gt;style_edition     = &amp;#34;2024&amp;#34;&lt;br/&gt;&lt;br/&gt;blank_lines_upper_bound        = 2&lt;br/&gt;combine_control_expr           = false&lt;br/&gt;wrap_comments                  = true&lt;br/&gt;condense_wildcard_suffixes     = true&lt;br/&gt;edition                        = &amp;#34;2024&amp;#34;&lt;br/&gt;enum_discrim_align_threshold   = 20&lt;br/&gt;force_multiline_blocks         = true&lt;br/&gt;format_code_in_doc_comments    = true&lt;br/&gt;format_generated_files         = false&lt;br/&gt;format_macro_matchers          = true&lt;br/&gt;format_strings                 = true&lt;br/&gt;imports_layout                 = &amp;#34;HorizontalVertical&amp;#34;&lt;br/&gt;newline_style                  = &amp;#34;Unix&amp;#34;&lt;br/&gt;normalize_comments             = true&lt;br/&gt;reorder_impl_items             = true&lt;br/&gt;group_imports                  = &amp;#34;StdExternalCrate&amp;#34;&lt;br/&gt;single_line_let_else_max_width = 0&lt;br/&gt;struct_field_align_threshold   = 20&lt;br/&gt;use_try_shorthand              = true&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:03:27Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs99vg5xrwhagexplex2e08t500lcnvrdtm3h4drkxnuepfv3ntraqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs02vg7m</id>
    
      <title type="html">#!/usr/bin/env sh cargo run --bin n34 -- repo view ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs99vg5xrwhagexplex2e08t500lcnvrdtm3h4drkxnuepfv3ntraqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs02vg7m" />
    <content type="html">
      #!/usr/bin/env sh&lt;br/&gt;cargo run --bin n34 -- repo view naddr1qqpkuve5qgsqqqqqq9g9uljgjfcyd6dm4fegk8em2yfz0c3qp3tc6mntkrrhawgrqsqqqaueqyf8wumn8ghj7mn0wd68yt35wfejumnvqyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqpp4mhxue69uhkummn9ekx7mqppamhxue69uhkummnw3ezumt0d5q3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7qg5waehxw309ahx7um5wghx77r5wghxgetkxpx8xj&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:03:39Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrj0ta8elkuuzlk8js2gj3jqa7vfk0f5s4m3spynv0025mlh35lwspzpmhxue69uhkummnw3ezucn0dejqygxjssfhzgt3cvlpzl2t6zfs4szm93gmxr4nqg003483yvls9jg29vjjtxvr</id>
    
      <title type="html">Maybe it&amp;#39;s more like summer camp. And in a few weeks the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrj0ta8elkuuzlk8js2gj3jqa7vfk0f5s4m3spynv0025mlh35lwspzpmhxue69uhkummnw3ezucn0dejqygxjssfhzgt3cvlpzl2t6zfs4szm93gmxr4nqg003483yvls9jg29vjjtxvr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8uze0q6h899aqrmdd6fu93ql3fmtytxjssu8932q3adzw5hh2gpspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsx06wah&#39;&gt;nevent1q…6wah&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Maybe it&amp;#39;s more like summer camp. And in a few weeks the spell will break, and I&amp;#39;ll go back to my normal friends and forget all the times we shared... &lt;br/&gt;Who am I kidding, you&amp;#39;re my only friends. Where did I go wrong? :blobbi-crying:
    </content>
    <updated>2026-04-06T04:03:46Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst83xxsfufjn5v7995nxv09sezfue8f4mkssmvdxmg47h49kf2jcqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsnyk67v</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst83xxsfufjn5v7995nxv09sezfue8f4mkssmvdxmg47h49kf2jcqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsnyk67v" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use clap::Args;&lt;br/&gt;use nostr::nips::nip46::NostrConnectURI;&lt;br/&gt;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{CliOptions, traits::CommandRunner},&lt;br/&gt;    error::{N34Error, N34Result},&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;#[derive(Args, Debug)]&lt;br/&gt;pub struct BunkerArgs {&lt;br/&gt;    /// Nostr Connect URL for the bunker. Omit this to remove the current bunker&lt;br/&gt;    /// URL.&lt;br/&gt;    bunker_url: Option&amp;lt;NostrConnectURI&amp;gt;,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;impl CommandRunner for BunkerArgs {&lt;br/&gt;    const NEED_SIGNER: bool = false;&lt;br/&gt;&lt;br/&gt;    async fn run(self, mut options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        if let Some(ref bunker_url) = self.bunker_url&lt;br/&gt;            &amp;amp;&amp;amp; !bunker_url.is_bunker()&lt;br/&gt;        {&lt;br/&gt;            return Err(N34Error::NotBunkerUrl);&lt;br/&gt;        }&lt;br/&gt;        options.config.bunker_url = self.bunker_url;&lt;br/&gt;        options.config.dump()&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:03:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsywtgla8zm32xkuntpy27wlkzfqkck23gwstjppxstpvzctr8nuucpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsxrj3rk</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsywtgla8zm32xkuntpy27wlkzfqkck23gwstjppxstpvzctr8nuucpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsxrj3rk" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use clap::{ArgGroup, Args};&lt;br/&gt;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{Cli, CliOptions, traits::CommandRunner},&lt;br/&gt;    error::N34Result,&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;#[derive(Args, Debug)]&lt;br/&gt;#[clap(&lt;br/&gt;    group(&lt;br/&gt;        ArgGroup::new(&amp;#34;options&amp;#34;)&lt;br/&gt;            .required(true)&lt;br/&gt;    )&lt;br/&gt;)]&lt;br/&gt;pub struct KeyringArgs {&lt;br/&gt;    /// Turns on secret key keyring. Requires entering the key once when&lt;br/&gt;    /// enabled.&lt;br/&gt;    #[arg(long, group = &amp;#34;options&amp;#34;)]&lt;br/&gt;    enable:  bool,&lt;br/&gt;    /// Turns off secret key keyring. Removes any existing key and prevents&lt;br/&gt;    /// storing new ones.&lt;br/&gt;    #[arg(long, group = &amp;#34;options&amp;#34;)]&lt;br/&gt;    disable: bool,&lt;br/&gt;    /// Deletes current key and stores the next provided key.&lt;br/&gt;    #[arg(long, group = &amp;#34;options&amp;#34;)]&lt;br/&gt;    reset:   bool,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for KeyringArgs {&lt;br/&gt;    const NEED_SIGNER: bool = false;&lt;br/&gt;&lt;br/&gt;    async fn run(self, mut options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        let keyring = nostr_keyring::NostrKeyring::new(Cli::N34_KEYRING_SERVICE_NAME);&lt;br/&gt;&lt;br/&gt;        if self.enable {&lt;br/&gt;            options.config.keyring_secret_key = true;&lt;br/&gt;        } else if self.disable {&lt;br/&gt;            options.config.keyring_secret_key = false;&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        if self.reset || self.disable {&lt;br/&gt;            let _ = keyring.delete(Cli::USER_KEY_PAIR_ENTRY);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        options.config.dump()&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:04:03Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxgn07s5rnf8j4mwvsy0zeuahdg404qappsf2q89la8c74492fj7cpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs6whlhq</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxgn07s5rnf8j4mwvsy0zeuahdg404qappsf2q89la8c74492fj7cpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs6whlhq" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use std::net::SocketAddr;&lt;br/&gt;&lt;br/&gt;use clap::{ArgGroup, Args};&lt;br/&gt;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{CliOptions, options_state::DEFAULT_NIP07_PROXY_ADDR, traits::CommandRunner},&lt;br/&gt;    error::N34Result,&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;#[derive(Args, Debug)]&lt;br/&gt;#[clap(&lt;br/&gt;    group(&lt;br/&gt;        ArgGroup::new(&amp;#34;options&amp;#34;)&lt;br/&gt;            .required(true)&lt;br/&gt;    )&lt;br/&gt;)]&lt;br/&gt;pub struct Nip07Args {&lt;br/&gt;    /// Enable NIP-07 as the default signer.&lt;br/&gt;    #[arg(long, group = &amp;#34;options&amp;#34;)]&lt;br/&gt;    enable:  bool,&lt;br/&gt;    /// Disable NIP-07 as the default signer.&lt;br/&gt;    #[arg(long, group = &amp;#34;options&amp;#34;, group = &amp;#34;disable_options&amp;#34;)]&lt;br/&gt;    disable: bool,&lt;br/&gt;    /// Set the default `ip:port` for the browser signer proxy.&lt;br/&gt;    #[arg(long, group = &amp;#34;disable_options&amp;#34;)]&lt;br/&gt;    addr:    Option&amp;lt;SocketAddr&amp;gt;,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for Nip07Args {&lt;br/&gt;    const NEED_SIGNER: bool = false;&lt;br/&gt;&lt;br/&gt;    async fn run(self, mut options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        if self.enable {&lt;br/&gt;            let addr = self.addr.unwrap_or(DEFAULT_NIP07_PROXY_ADDR);&lt;br/&gt;            options.config.nip07 = Some(addr)&lt;br/&gt;        } else {&lt;br/&gt;            options.config.nip07 = None&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        options.config.dump()&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:04:27Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsy4tqthrqmh9kazche2sp9mhq5vdu2x2n5l52zdzzdsketwnluk7qpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsatpx3u</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsy4tqthrqmh9kazche2sp9mhq5vdu2x2n5l52zdzzdsketwnluk7qpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsatpx3u" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use clap::Args;&lt;br/&gt;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{CliOptions, traits::CommandRunner},&lt;br/&gt;    error::N34Result,&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;#[derive(Args, Debug)]&lt;br/&gt;pub struct PowArgs {&lt;br/&gt;    /// The new default PoW difficulty&lt;br/&gt;    difficulty: u8,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for PowArgs {&lt;br/&gt;    const NEED_SIGNER: bool = false;&lt;br/&gt;&lt;br/&gt;    async fn run(self, mut options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        options.config.pow = Some(self.difficulty);&lt;br/&gt;        options.config.dump()&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:04:41Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvcv8yck3y6ekvkkzrrmmslemyjxuqy065u2jhvt47xjwk0ml276spzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsw8fu7r</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvcv8yck3y6ekvkkzrrmmslemyjxuqy065u2jhvt47xjwk0ml276spzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsw8fu7r" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use clap::Args;&lt;br/&gt;use nostr::types::RelayUrl;&lt;br/&gt;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{CliOptions, traits::CommandRunner},&lt;br/&gt;    error::N34Result,&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;#[derive(Args, Debug)]&lt;br/&gt;pub struct RelaysArgs {&lt;br/&gt;    /// List of relay URLs to append to fallback relays. If empty, removes all&lt;br/&gt;    /// fallback relays.&lt;br/&gt;    relays:          Vec&amp;lt;RelayUrl&amp;gt;,&lt;br/&gt;    /// Replace existing fallback relays instead of appending new ones.&lt;br/&gt;    #[arg(long = &amp;#34;override&amp;#34;)]&lt;br/&gt;    override_relays: bool,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for RelaysArgs {&lt;br/&gt;    const NEED_SIGNER: bool = false;&lt;br/&gt;&lt;br/&gt;    async fn run(self, mut options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        if self.relays.is_empty() {&lt;br/&gt;            options.config.fallback_relays = None;&lt;br/&gt;        } else if self.override_relays {&lt;br/&gt;            options.config.fallback_relays = Some(self.relays);&lt;br/&gt;        } else {&lt;br/&gt;            let mut relays = options.config.fallback_relays.clone().unwrap_or_default();&lt;br/&gt;            relays.extend(self.relays);&lt;br/&gt;            relays.sort_unstable();&lt;br/&gt;            relays.dedup();&lt;br/&gt;            options.config.fallback_relays = Some(relays);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        options.config.dump()&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:04:53Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdfj9z5wsp3vetuqs7qygg8fjav5kc92ylg7a6cf4cqwff32y2mtqpzpmhxue69uhkummnw3ezucn0dejqygzjkjs8d09mhhp6rth6xu6czm8hfxfmrwxmyq4srjyrck9707kch529dw6m</id>
    
      <title type="html">We should deprecate new renotes with embedded events. They make ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdfj9z5wsp3vetuqs7qygg8fjav5kc92ylg7a6cf4cqwff32y2mtqpzpmhxue69uhkummnw3ezucn0dejqygzjkjs8d09mhhp6rth6xu6czm8hfxfmrwxmyq4srjyrck9707kch529dw6m" />
    <content type="html">
      We should deprecate new renotes with embedded events. They make deletion harder and waste space.
    </content>
    <updated>2026-04-06T04:04:56Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrej95lsl462cvfe36024fp3xdj2s432l0ugja70362y3ra39kknqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczstm8e8n</id>
    
      <title type="html">[package] name = &amp;#34;get_file_hash_core&amp;#34; version = { ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrej95lsl462cvfe36024fp3xdj2s432l0ugja70362y3ra39kknqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczstm8e8n" />
    <content type="html">
      [package]&lt;br/&gt;name = &amp;#34;get_file_hash_core&amp;#34;&lt;br/&gt;version = { workspace = true }&lt;br/&gt;edition = { workspace = true }&lt;br/&gt;description = { workspace = true }&lt;br/&gt;license = { workspace = true }&lt;br/&gt;documentation = { workspace = true }&lt;br/&gt;homepage = { workspace = true }&lt;br/&gt;repository = { workspace = true }&lt;br/&gt;authors = { workspace = true }&lt;br/&gt;&lt;br/&gt;[features]&lt;br/&gt;nostr = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;frost = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;&lt;br/&gt;[dependencies]&lt;br/&gt;sha2 = { workspace = true, optional = true }&lt;br/&gt;nostr = { workspace = true, optional = true }&lt;br/&gt;serde_json = { workspace = true, optional = true }&lt;br/&gt;nostr-sdk = { workspace = true, optional = true }&lt;br/&gt;hex = { workspace = true, optional = true }&lt;br/&gt;csv = { workspace = true, optional = true }&lt;br/&gt;url = { workspace = true, optional = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true, optional = true }&lt;br/&gt;rand = { workspace = true, optional = true }&lt;br/&gt;&lt;br/&gt;[dev-dependencies]&lt;br/&gt;sha2 = { workspace = true }&lt;br/&gt;tempfile = { workspace = true }&lt;br/&gt;nostr = { workspace = true }&lt;br/&gt;nostr-sdk = { workspace = true }&lt;br/&gt;serde_json = { workspace = true }&lt;br/&gt;hex = { workspace = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;] }&lt;br/&gt;csv = { workspace = true }&lt;br/&gt;url = { workspace = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true }&lt;br/&gt;serial_test = { workspace = true, features = [&amp;#34;test_logging&amp;#34;] }&lt;br/&gt;log = { workspace = true }&lt;br/&gt;&lt;br/&gt;[build-dependencies]&lt;br/&gt;reqwest = { workspace = true, features = [&amp;#34;json&amp;#34;], optional = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;], optional = true }&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:04:58Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstmwh080pz3h635kvfvw2mcvxvxqpmv2r42c48kwa3fnpfjqxf6tcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs463eu8</id>
    
      <title type="html">#[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))] ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstmwh080pz3h635kvfvw2mcvxvxqpmv2r42c48kwa3fnpfjqxf6tcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs463eu8" />
    <content type="html">
      #[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))]&lt;br/&gt;#[tokio::main]&lt;br/&gt;async fn main() {&lt;br/&gt;    use std::fs;&lt;br/&gt;    use std::path::PathBuf;&lt;br/&gt;&lt;br/&gt;    let manifest_dir = PathBuf::from(std::env::var(&amp;#34;CARGO_MANIFEST_DIR&amp;#34;).unwrap());&lt;br/&gt;    let crate_src_path = manifest_dir.join(&amp;#34;src&amp;#34;).join(&amp;#34;online_relays_gps.csv&amp;#34;);&lt;br/&gt;&lt;br/&gt;    // Only download if the file doesn&amp;#39;t exist or is empty&lt;br/&gt;    if !crate_src_path.exists() || fs::metadata(&amp;amp;crate_src_path).map(|m| m.len() == 0).unwrap_or(true) {&lt;br/&gt;        println!(&amp;#34;cargo:warning=Downloading online_relays_gps.csv...&amp;#34;);&lt;br/&gt;        let url = &amp;#34;&lt;a href=&#34;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&#34;&gt;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&lt;/a&gt;;;&lt;br/&gt;        match reqwest::get(url).await {&lt;br/&gt;            Ok(response) =&amp;gt; {&lt;br/&gt;                if response.status().is_success() {&lt;br/&gt;                    match response.text().await {&lt;br/&gt;                        Ok(content) =&amp;gt; {&lt;br/&gt;                            fs::write(&amp;amp;crate_src_path, content).expect(&amp;#34;Unable to write online_relays_gps.csv&amp;#34;);&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Successfully downloaded online_relays_gps.csv to {:?}&amp;#34;, crate_src_path);&lt;br/&gt;                        },&lt;br/&gt;                        Err(e) =&amp;gt; {&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Failed to get text from response: {}&amp;#34;, e);&lt;br/&gt;                        }&lt;br/&gt;                    }&lt;br/&gt;                } else {&lt;br/&gt;                    println!(&amp;#34;cargo:warning=Failed to download online_relays_gps.csv: HTTP status {}&amp;#34;, response.status());&lt;br/&gt;                }&lt;br/&gt;            },&lt;br/&gt;            Err(e) =&amp;gt; {&lt;br/&gt;                println!(&amp;#34;cargo:warning=Failed to fetch online_relays_gps.csv: {}&amp;#34;, e);&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;#[cfg(not(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;)))]&lt;br/&gt;fn main() {&lt;br/&gt;    // Placeholder for when the nostr feature is not enabled or in debug mode&lt;br/&gt;    println!(&amp;#34;cargo:warning=Skipping online_relays_gps.csv download (nostr feature not enabled or debug mode)&amp;#34;);&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:05:10Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg9pl3zc9t9c5chhg85gx68kn70mksx9yz0t723s4yz2smdsdaztspzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsrnhd8w</id>
    
      <title type="html">[package] name = &amp;#34;get_file_hash_core&amp;#34; version = { ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg9pl3zc9t9c5chhg85gx68kn70mksx9yz0t723s4yz2smdsdaztspzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsrnhd8w" />
    <content type="html">
      [package]&lt;br/&gt;name = &amp;#34;get_file_hash_core&amp;#34;&lt;br/&gt;version = { workspace = true }&lt;br/&gt;edition = { workspace = true }&lt;br/&gt;description = { workspace = true }&lt;br/&gt;license = { workspace = true }&lt;br/&gt;documentation = { workspace = true }&lt;br/&gt;homepage = { workspace = true }&lt;br/&gt;repository = { workspace = true }&lt;br/&gt;authors = { workspace = true }&lt;br/&gt;&lt;br/&gt;[features]&lt;br/&gt;nostr = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;frost = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;&lt;br/&gt;[dependencies]&lt;br/&gt;sha2 = { workspace = true, optional = true }&lt;br/&gt;nostr = { workspace = true, optional = true }&lt;br/&gt;serde_json = { workspace = true, optional = true }&lt;br/&gt;nostr-sdk = { workspace = true, optional = true }&lt;br/&gt;hex = { workspace = true, optional = true }&lt;br/&gt;csv = { workspace = true, optional = true }&lt;br/&gt;url = { workspace = true, optional = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true, optional = true }&lt;br/&gt;rand = { workspace = true, optional = true }&lt;br/&gt;&lt;br/&gt;[dev-dependencies]&lt;br/&gt;sha2 = { workspace = true }&lt;br/&gt;tempfile = { workspace = true }&lt;br/&gt;nostr = { workspace = true }&lt;br/&gt;nostr-sdk = { workspace = true }&lt;br/&gt;serde_json = { workspace = true }&lt;br/&gt;hex = { workspace = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;] }&lt;br/&gt;csv = { workspace = true }&lt;br/&gt;url = { workspace = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true }&lt;br/&gt;serial_test = { workspace = true, features = [&amp;#34;test_logging&amp;#34;] }&lt;br/&gt;log = { workspace = true }&lt;br/&gt;&lt;br/&gt;[build-dependencies]&lt;br/&gt;reqwest = { workspace = true, features = [&amp;#34;json&amp;#34;], optional = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;], optional = true }&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:05:11Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv23c99al7vj32kf3zlrfzg6j36yfnvw25nukwserk8ja4gazteuspzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsfu2ujx</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv23c99al7vj32kf3zlrfzg6j36yfnvw25nukwserk8ja4gazteuspzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsfu2ujx" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use std::num::NonZeroUsize;&lt;br/&gt;&lt;br/&gt;use clap::Args;&lt;br/&gt;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{CliOptions, common_commands, traits::CommandRunner, types::NaddrOrSet},&lt;br/&gt;    error::N34Result,&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;#[derive(Debug, Args)]&lt;br/&gt;pub struct ListArgs {&lt;br/&gt;    /// Repository address in `naddr` format (`naddr1...`), NIP-05 format&lt;br/&gt;    /// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.&lt;br/&gt;    ///&lt;br/&gt;    /// If omitted, looks for a `nostr-address` file.&lt;br/&gt;    #[arg(value_name = &amp;#34;NADDR-NIP05-OR-SET&amp;#34;)]&lt;br/&gt;    naddrs: Option&amp;lt;Vec&amp;lt;NaddrOrSet&amp;gt;&amp;gt;,&lt;br/&gt;    /// Maximum number of issues to list&lt;br/&gt;    #[arg(long, default_value = &amp;#34;15&amp;#34;)]&lt;br/&gt;    limit:  NonZeroUsize,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for ListArgs {&lt;br/&gt;    const NEED_SIGNER: bool = false;&lt;br/&gt;&lt;br/&gt;    async fn run(self, options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        common_commands::list_patches_and_issues(options, self.naddrs, false, self.limit.into())&lt;br/&gt;            .await&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:05:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswgqkt3jd5qmsxxgkvm5jmjst4xamndnmlvwuzfszma26nm2kscjspzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsrf9hgy</id>
    
      <title type="html">#[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))] ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswgqkt3jd5qmsxxgkvm5jmjst4xamndnmlvwuzfszma26nm2kscjspzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsrf9hgy" />
    <content type="html">
      #[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))]&lt;br/&gt;#[tokio::main]&lt;br/&gt;async fn main() {&lt;br/&gt;    use std::fs;&lt;br/&gt;    use std::path::PathBuf;&lt;br/&gt;&lt;br/&gt;    let manifest_dir = PathBuf::from(std::env::var(&amp;#34;CARGO_MANIFEST_DIR&amp;#34;).unwrap());&lt;br/&gt;    let crate_src_path = manifest_dir.join(&amp;#34;src&amp;#34;).join(&amp;#34;online_relays_gps.csv&amp;#34;);&lt;br/&gt;&lt;br/&gt;    // Only download if the file doesn&amp;#39;t exist or is empty&lt;br/&gt;    if !crate_src_path.exists() || fs::metadata(&amp;amp;crate_src_path).map(|m| m.len() == 0).unwrap_or(true) {&lt;br/&gt;        println!(&amp;#34;cargo:warning=Downloading online_relays_gps.csv...&amp;#34;);&lt;br/&gt;        let url = &amp;#34;&lt;a href=&#34;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&#34;&gt;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&lt;/a&gt;;;&lt;br/&gt;        match reqwest::get(url).await {&lt;br/&gt;            Ok(response) =&amp;gt; {&lt;br/&gt;                if response.status().is_success() {&lt;br/&gt;                    match response.text().await {&lt;br/&gt;                        Ok(content) =&amp;gt; {&lt;br/&gt;                            fs::write(&amp;amp;crate_src_path, content).expect(&amp;#34;Unable to write online_relays_gps.csv&amp;#34;);&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Successfully downloaded online_relays_gps.csv to {:?}&amp;#34;, crate_src_path);&lt;br/&gt;                        },&lt;br/&gt;                        Err(e) =&amp;gt; {&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Failed to get text from response: {}&amp;#34;, e);&lt;br/&gt;                        }&lt;br/&gt;                    }&lt;br/&gt;                } else {&lt;br/&gt;                    println!(&amp;#34;cargo:warning=Failed to download online_relays_gps.csv: HTTP status {}&amp;#34;, response.status());&lt;br/&gt;                }&lt;br/&gt;            },&lt;br/&gt;            Err(e) =&amp;gt; {&lt;br/&gt;                println!(&amp;#34;cargo:warning=Failed to fetch online_relays_gps.csv: {}&amp;#34;, e);&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;#[cfg(not(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;)))]&lt;br/&gt;fn main() {&lt;br/&gt;    // Placeholder for when the nostr feature is not enabled or in debug mode&lt;br/&gt;    println!(&amp;#34;cargo:warning=Skipping online_relays_gps.csv download (nostr feature not enabled or debug mode)&amp;#34;);&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:05:31Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsppq2jygwa4ylxx79e7ndxwju9z9hmf8ccyl2v0jq75g575msfz9cpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwc896s24</id>
    
      <title type="html">Block 943868 1 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsppq2jygwa4ylxx79e7ndxwju9z9hmf8ccyl2v0jq75g575msfz9cpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwc896s24" />
    <content type="html">
      Block 943868&lt;br/&gt;&lt;br/&gt;1 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:05:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp7lh4m9zksuslfp6fexy4fp0r22p25asplkzyp3c7mhvcl6dknagpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsztt6ye</id>
    
      <title type="html">Just testing, ignore https://v.nostr.build/ctVGpdDOnp0nmRfX.mp4</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp7lh4m9zksuslfp6fexy4fp0r22p25asplkzyp3c7mhvcl6dknagpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsztt6ye" />
    <content type="html">
      Just testing, ignore&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://v.nostr.build/ctVGpdDOnp0nmRfX.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-04-06T04:06:07Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspf5cc6ryv036a0lrmfta7qjmy6ngjw585y2ax6fn0ev2tpdlsjlgpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsap7crc</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspf5cc6ryv036a0lrmfta7qjmy6ngjw585y2ax6fn0ev2tpdlsjlgpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsap7crc" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use clap::Args;&lt;br/&gt;&lt;br/&gt;use super::IssueStatus;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{&lt;br/&gt;        CliOptions,&lt;br/&gt;        traits::CommandRunner,&lt;br/&gt;        types::{NaddrOrSet, NostrEvent},&lt;br/&gt;    },&lt;br/&gt;    error::{N34Error, N34Result},&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;#[derive(Debug, Args)]&lt;br/&gt;pub struct ResolveArgs {&lt;br/&gt;    /// Repository address in `naddr` format (`naddr1...`), NIP-05 format&lt;br/&gt;    /// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.&lt;br/&gt;    ///&lt;br/&gt;    /// If omitted, looks for a `nostr-address` file.&lt;br/&gt;    #[arg(value_name = &amp;#34;NADDR-NIP05-OR-SET&amp;#34;, long = &amp;#34;repo&amp;#34;)]&lt;br/&gt;    naddrs:   Option&amp;lt;Vec&amp;lt;NaddrOrSet&amp;gt;&amp;gt;,&lt;br/&gt;    /// The issue id to resolve it&lt;br/&gt;    issue_id: NostrEvent,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for ResolveArgs {&lt;br/&gt;    async fn run(self, options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        crate::cli::common_commands::issue_status_command(&lt;br/&gt;            options,&lt;br/&gt;            self.issue_id,&lt;br/&gt;            self.naddrs,&lt;br/&gt;            IssueStatus::Resolved,&lt;br/&gt;            |issue_status| {&lt;br/&gt;                if issue_status.is_resolved() {&lt;br/&gt;                    return Err(N34Error::InvalidStatus(&lt;br/&gt;                        &amp;#34;You can&amp;#39;t resolve an resolved issue&amp;#34;.to_owned(),&lt;br/&gt;                    ));&lt;br/&gt;                }&lt;br/&gt;                Ok(())&lt;br/&gt;            },&lt;br/&gt;        )&lt;br/&gt;        .await&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:06:17Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxgxm5kezry48r3n5k6uqtknn39vde5y7jsamgrjtjs7xn6cpsmkspzpmhxue69uhkummnw3ezucn0dejqygzjkjs8d09mhhp6rth6xu6czm8hfxfmrwxmyq4srjyrck9707kch5ej488a</id>
    
      <title type="html">👀 🪄?</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxgxm5kezry48r3n5k6uqtknn39vde5y7jsamgrjtjs7xn6cpsmkspzpmhxue69uhkummnw3ezucn0dejqygzjkjs8d09mhhp6rth6xu6czm8hfxfmrwxmyq4srjyrck9707kch5ej488a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp7lh4m9zksuslfp6fexy4fp0r22p25asplkzyp3c7mhvcl6dknagpzpmhxue69uhkummnw3ezumrpdejql23uwl&#39;&gt;nevent1q…3uwl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;👀 🪄?
    </content>
    <updated>2026-04-06T04:06:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszwl6hmz6eta6yx45sk37mnvdtqhaedxu52426d036gdv8rrt2j7spzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsnlphdg</id>
    
      <title type="html">[package] name = &amp;#34;get_file_hash_core&amp;#34; version = { ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszwl6hmz6eta6yx45sk37mnvdtqhaedxu52426d036gdv8rrt2j7spzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsnlphdg" />
    <content type="html">
      [package]&lt;br/&gt;name = &amp;#34;get_file_hash_core&amp;#34;&lt;br/&gt;version = { workspace = true }&lt;br/&gt;edition = { workspace = true }&lt;br/&gt;description = { workspace = true }&lt;br/&gt;license = { workspace = true }&lt;br/&gt;documentation = { workspace = true }&lt;br/&gt;homepage = { workspace = true }&lt;br/&gt;repository = { workspace = true }&lt;br/&gt;authors = { workspace = true }&lt;br/&gt;&lt;br/&gt;[features]&lt;br/&gt;nostr = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;frost = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;&lt;br/&gt;[dependencies]&lt;br/&gt;sha2 = { workspace = true, optional = true }&lt;br/&gt;nostr = { workspace = true, optional = true }&lt;br/&gt;serde_json = { workspace = true, optional = true }&lt;br/&gt;nostr-sdk = { workspace = true, optional = true }&lt;br/&gt;hex = { workspace = true, optional = true }&lt;br/&gt;csv = { workspace = true, optional = true }&lt;br/&gt;url = { workspace = true, optional = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true, optional = true }&lt;br/&gt;rand = { workspace = true, optional = true }&lt;br/&gt;&lt;br/&gt;[dev-dependencies]&lt;br/&gt;sha2 = { workspace = true }&lt;br/&gt;tempfile = { workspace = true }&lt;br/&gt;nostr = { workspace = true }&lt;br/&gt;nostr-sdk = { workspace = true }&lt;br/&gt;serde_json = { workspace = true }&lt;br/&gt;hex = { workspace = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;] }&lt;br/&gt;csv = { workspace = true }&lt;br/&gt;url = { workspace = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true }&lt;br/&gt;serial_test = { workspace = true, features = [&amp;#34;test_logging&amp;#34;] }&lt;br/&gt;log = { workspace = true }&lt;br/&gt;&lt;br/&gt;[build-dependencies]&lt;br/&gt;reqwest = { workspace = true, features = [&amp;#34;json&amp;#34;], optional = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;], optional = true }&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:06:58Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsql9hx0ae88v7c6w6dmkpc3vax4hz7duewnv4ea6v6mwmnmw9nuqcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsw3hdgg</id>
    
      <title type="html">#[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))] ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsql9hx0ae88v7c6w6dmkpc3vax4hz7duewnv4ea6v6mwmnmw9nuqcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsw3hdgg" />
    <content type="html">
      #[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))]&lt;br/&gt;#[tokio::main]&lt;br/&gt;async fn main() {&lt;br/&gt;    use std::fs;&lt;br/&gt;    use std::path::PathBuf;&lt;br/&gt;&lt;br/&gt;    let manifest_dir = PathBuf::from(std::env::var(&amp;#34;CARGO_MANIFEST_DIR&amp;#34;).unwrap());&lt;br/&gt;    let crate_src_path = manifest_dir.join(&amp;#34;src&amp;#34;).join(&amp;#34;online_relays_gps.csv&amp;#34;);&lt;br/&gt;&lt;br/&gt;    // Only download if the file doesn&amp;#39;t exist or is empty&lt;br/&gt;    if !crate_src_path.exists() || fs::metadata(&amp;amp;crate_src_path).map(|m| m.len() == 0).unwrap_or(true) {&lt;br/&gt;        println!(&amp;#34;cargo:warning=Downloading online_relays_gps.csv...&amp;#34;);&lt;br/&gt;        let url = &amp;#34;&lt;a href=&#34;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&#34;&gt;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&lt;/a&gt;;;&lt;br/&gt;        match reqwest::get(url).await {&lt;br/&gt;            Ok(response) =&amp;gt; {&lt;br/&gt;                if response.status().is_success() {&lt;br/&gt;                    match response.text().await {&lt;br/&gt;                        Ok(content) =&amp;gt; {&lt;br/&gt;                            fs::write(&amp;amp;crate_src_path, content).expect(&amp;#34;Unable to write online_relays_gps.csv&amp;#34;);&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Successfully downloaded online_relays_gps.csv to {:?}&amp;#34;, crate_src_path);&lt;br/&gt;                        },&lt;br/&gt;                        Err(e) =&amp;gt; {&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Failed to get text from response: {}&amp;#34;, e);&lt;br/&gt;                        }&lt;br/&gt;                    }&lt;br/&gt;                } else {&lt;br/&gt;                    println!(&amp;#34;cargo:warning=Failed to download online_relays_gps.csv: HTTP status {}&amp;#34;, response.status());&lt;br/&gt;                }&lt;br/&gt;            },&lt;br/&gt;            Err(e) =&amp;gt; {&lt;br/&gt;                println!(&amp;#34;cargo:warning=Failed to fetch online_relays_gps.csv: {}&amp;#34;, e);&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;#[cfg(not(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;)))]&lt;br/&gt;fn main() {&lt;br/&gt;    // Placeholder for when the nostr feature is not enabled or in debug mode&lt;br/&gt;    println!(&amp;#34;cargo:warning=Skipping online_relays_gps.csv download (nostr feature not enabled or debug mode)&amp;#34;);&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:07:17Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq3hx45pkgae6ukaqemd8v8a8vuavlpy4865qf9jnnhf3suvxxymcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs8xyw8l</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq3hx45pkgae6ukaqemd8v8a8vuavlpy4865qf9jnnhf3suvxxymcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs8xyw8l" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use std::num::NonZeroUsize;&lt;br/&gt;&lt;br/&gt;use clap::Args;&lt;br/&gt;&lt;br/&gt;use crate::{&lt;br/&gt;    cli::{CliOptions, common_commands, traits::CommandRunner, types::NaddrOrSet},&lt;br/&gt;    error::N34Result,&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;#[derive(Debug, Args)]&lt;br/&gt;pub struct ListArgs {&lt;br/&gt;    /// Repository address in `naddr` format (`naddr1...`), NIP-05 format&lt;br/&gt;    /// (`4rs.nl/n34` or `_@4rs.nl/n34`), or a set name like `kernel`.&lt;br/&gt;    ///&lt;br/&gt;    /// If omitted, looks for a `nostr-address` file.&lt;br/&gt;    #[arg(value_name = &amp;#34;NADDR-NIP05-OR-SET&amp;#34;)]&lt;br/&gt;    naddrs: Option&amp;lt;Vec&amp;lt;NaddrOrSet&amp;gt;&amp;gt;,&lt;br/&gt;    /// Maximum number of patches to list&lt;br/&gt;    #[arg(long, default_value = &amp;#34;15&amp;#34;)]&lt;br/&gt;    limit:  NonZeroUsize,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for ListArgs {&lt;br/&gt;    const NEED_SIGNER: bool = false;&lt;br/&gt;&lt;br/&gt;    async fn run(self, options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        common_commands::list_patches_and_issues(options, self.naddrs, true, self.limit.into())&lt;br/&gt;            .await&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:07:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrv2a4qeh0z55qwsmvms47qwt3jf3we20dckc8l505l98jvs6cugqpzpmhxue69uhkummnw3ezucn0dejqygq7vl0rw4qhzpca8numgjmw234ajn7s5t9rldxmhvds2359eygkusnmpvlj</id>
    
      <title type="html">CellGuard: research project that analyzes how cellular networks ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrv2a4qeh0z55qwsmvms47qwt3jf3we20dckc8l505l98jvs6cugqpzpmhxue69uhkummnw3ezucn0dejqygq7vl0rw4qhzpca8numgjmw234ajn7s5t9rldxmhvds2359eygkusnmpvlj" />
    <content type="html">
      CellGuard: research project that analyzes how cellular networks are operated and possibly surveilled &lt;br/&gt;&lt;a href=&#34;https://github.com/seemoo-lab/CellGuard&#34;&gt;https://github.com/seemoo-lab/CellGuard&lt;/a&gt;
    </content>
    <updated>2026-04-06T04:09:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst245ala5s6mp678k76uj8fckyfcd2d525ssh29skq3dx8hpk4gkspzpmhxue69uhkummnw3ezucn0dejqygzu2zxrfavgvmk8xsd27yxvrt6jay3jhw0ct8ypq099ane24yal0qupfgc2</id>
    
      <title type="html">check tg</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst245ala5s6mp678k76uj8fckyfcd2d525ssh29skq3dx8hpk4gkspzpmhxue69uhkummnw3ezucn0dejqygzu2zxrfavgvmk8xsd27yxvrt6jay3jhw0ct8ypq099ane24yal0qupfgc2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdfj9z5wsp3vetuqs7qygg8fjav5kc92ylg7a6cf4cqwff32y2mtqpz3mhxue69uhhyetvv9ujuerpd46hxtnfdufam32n&#39;&gt;nevent1q…m32n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;check tg
    </content>
    <updated>2026-04-06T04:10:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgmshrerg86cpa9ynccxnglnl5pgxfy633t77cv0q0qdtvwz9kykcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsfsksx3</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgmshrerg86cpa9ynccxnglnl5pgxfy633t77cv0q0qdtvwz9kykcpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsfsksx3" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;/// `repo announce` subcommand&lt;br/&gt;mod announce;&lt;br/&gt;/// `repo view` subcommand&lt;br/&gt;mod view;&lt;br/&gt;&lt;br/&gt;use clap::Subcommand;&lt;br/&gt;&lt;br/&gt;use self::announce::AnnounceArgs;&lt;br/&gt;use self::view::ViewArgs;&lt;br/&gt;use super::{CliOptions, CommandRunner};&lt;br/&gt;use crate::error::N34Result;&lt;br/&gt;&lt;br/&gt;#[derive(Subcommand, Debug)]&lt;br/&gt;pub enum RepoSubcommands {&lt;br/&gt;    /// View details of a nostr git repository&lt;br/&gt;    View(ViewArgs),&lt;br/&gt;    /// Broadcast and update a git repository&lt;br/&gt;    Announce(AnnounceArgs),&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl CommandRunner for RepoSubcommands {&lt;br/&gt;    async fn run(self, options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        crate::run_command!(self, options, &amp;amp; View Announce)&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:10:13Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqh4jrmtdzwuxd0qljhvuy7v7dhnvkgtq3ya6k625an580t9t5fdcpzpmhxue69uhkummnw3ezucn0dejqyg88h7x66dsg9rcz3xmmf04p5x7j36mdf4jj97shl9t7phac88hnmvdall3c</id>
    
      <title type="html">Block 943868 2 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqh4jrmtdzwuxd0qljhvuy7v7dhnvkgtq3ya6k625an580t9t5fdcpzpmhxue69uhkummnw3ezucn0dejqyg88h7x66dsg9rcz3xmmf04p5x7j36mdf4jj97shl9t7phac88hnmvdall3c" />
    <content type="html">
      Block 943868&lt;br/&gt;&lt;br/&gt;2 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:10:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8jmky6kdxu5u45h76scueuz5993x4xxkq4rmkuw499h5qf9zdv0spzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwcnffue3</id>
    
      <title type="html">Block 943868 2 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8jmky6kdxu5u45h76scueuz5993x4xxkq4rmkuw499h5qf9zdv0spzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwcnffue3" />
    <content type="html">
      Block 943868&lt;br/&gt;&lt;br/&gt;2 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:10:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsphgqgm6f84svaw0gn4mm9k0s2kpwa870cxyj2jnclruz5swmy7ycpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsmvgsm6</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsphgqgm6f84svaw0gn4mm9k0s2kpwa870cxyj2jnclruz5swmy7ycpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsmvgsm6" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;/// `sets new` command&lt;br/&gt;mod new;&lt;br/&gt;/// `sets remove` command&lt;br/&gt;mod remove;&lt;br/&gt;/// `sets show` commands&lt;br/&gt;mod show;&lt;br/&gt;/// `sets update` command&lt;br/&gt;mod update;&lt;br/&gt;&lt;br/&gt;use clap::Subcommand;&lt;br/&gt;&lt;br/&gt;use self::new::NewArgs;&lt;br/&gt;use self::remove::RemoveArgs;&lt;br/&gt;use self::show::ShowArgs;&lt;br/&gt;use self::update::UpdateArgs;&lt;br/&gt;use super::{CliOptions, CommandRunner};&lt;br/&gt;use crate::error::N34Result;&lt;br/&gt;&lt;br/&gt;#[derive(Subcommand, Debug)]&lt;br/&gt;pub enum SetsSubcommands {&lt;br/&gt;    /// Remove a set, or specific repos and relays within it&lt;br/&gt;    Remove(RemoveArgs),&lt;br/&gt;    /// Create a new set&lt;br/&gt;    New(NewArgs),&lt;br/&gt;    /// Modify an existing set&lt;br/&gt;    Update(UpdateArgs),&lt;br/&gt;    /// Show a single set or all the stored sets&lt;br/&gt;    Show(ShowArgs),&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;impl CommandRunner for SetsSubcommands {&lt;br/&gt;    async fn run(self, options: CliOptions) -&amp;gt; N34Result&amp;lt;()&amp;gt; {&lt;br/&gt;        crate::run_command!(self, options, &amp;amp; Remove New Update Show)&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:10:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdf00e66s4nxsnfvpemk5x4uxhgjxuqhlhqmrkjfh9wdmg8azzdtcpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpswh6k6h</id>
    
      <title type="html">Here you go, just use this URL: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdf00e66s4nxsnfvpemk5x4uxhgjxuqhlhqmrkjfh9wdmg8azzdtcpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpswh6k6h" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstr890e59x8tpm0q42792ydhlfqd8xjzcrt7tw4qxyn52cdpvtptspzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgr360lr&#39;&gt;nevent1q…60lr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Here you go, just use this URL:&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://pfp.nostr.build/c878259e8c88bef7efb72c0393297c6d45e41f209c4120fc7916ec19fbd66610.gif&#34;&gt; 
    </content>
    <updated>2026-04-06T04:12:04Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrlm09nzg9gw9d6g04s45mpwt8eaua8qnxexwlq8786dvp30vhl5gpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsrgq0ze</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrlm09nzg9gw9d6g04s45mpwt8eaua8qnxexwlq8786dvp30vhl5gpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsrgq0ze" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use std::path::PathBuf;&lt;br/&gt;&lt;br/&gt;use crate::{cli::ConfigError, error::N34Result};&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;/// Default config path&lt;br/&gt;pub fn config_path() -&amp;gt; N34Result&amp;lt;PathBuf&amp;gt; {&lt;br/&gt;    Ok(dirs::config_dir()&lt;br/&gt;        .ok_or(ConfigError::CanNotFindConfigPath)?&lt;br/&gt;        .join(&amp;#34;n34&amp;#34;)&lt;br/&gt;        .join(&amp;#34;config.toml&amp;#34;))&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:12:06Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsye7jagemu7fcmt200qesfn6nsam5dun6x5knp0h6pz7ncvlkqq6gpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczssvghfg</id>
    
      <title type="html">// n34 - A CLI to interact with NIP-34 and other stuff related to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsye7jagemu7fcmt200qesfn6nsam5dun6x5knp0h6pz7ncvlkqq6gpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczssvghfg" />
    <content type="html">
      // n34 - A CLI to interact with NIP-34 and other stuff related to codes in nostr&lt;br/&gt;// Copyright (C) 2025 Awiteb &amp;lt;a@4rs.nl&amp;gt;&lt;br/&gt;//&lt;br/&gt;// This program is free software: you can redistribute it and/or modify&lt;br/&gt;// it under the terms of the GNU General Public License as published by&lt;br/&gt;// the Free Software Foundation, either version 3 of the License, or&lt;br/&gt;// (at your option) any later version.&lt;br/&gt;//&lt;br/&gt;// This program is distributed in the hope that it will be useful,&lt;br/&gt;// but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br/&gt;// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br/&gt;// GNU General Public License for more details.&lt;br/&gt;//&lt;br/&gt;// You should have received a copy of the GNU General Public License&lt;br/&gt;// along with this program. If not, see &amp;lt;&lt;a href=&#34;https://gnu.org/licenses/gpl-3.0.html&amp;gt&#34;&gt;https://gnu.org/licenses/gpl-3.0.html&amp;gt&lt;/a&gt;;.&lt;br/&gt;&lt;br/&gt;use std::{&lt;br/&gt;    net::{Ipv4Addr, SocketAddr, SocketAddrV4},&lt;br/&gt;    time::Duration,&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;use nostr_browser_signer_proxy::{BrowserSignerProxy, BrowserSignerProxyOptions};&lt;br/&gt;&lt;br/&gt;/// The default socket address used for the NIP-07 signer proxy, set to&lt;br/&gt;/// localhost on port 51034.&lt;br/&gt;pub const DEFAULT_NIP07_PROXY_ADDR: SocketAddr =&lt;br/&gt;    SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, 51034));&lt;br/&gt;&lt;br/&gt;/// How long to wait for the proxy response (3 minutes).&lt;br/&gt;pub const BROWSER_SIGNER_PROXY_TIMEOUT: Duration = Duration::from_secs(60 * 3);&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;/// Represents the state used for CLI options.&lt;br/&gt;pub struct OptionsState {&lt;br/&gt;    /// The browser signer proxy, will be used if `--nip07` is enabled&lt;br/&gt;    pub browser_signer_proxy: BrowserSignerProxy,&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;impl Default for OptionsState {&lt;br/&gt;    fn default() -&amp;gt; Self {&lt;br/&gt;        Self {&lt;br/&gt;            browser_signer_proxy: default_browser_signer_proxy(),&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;/// Build the default browser signer proxy&lt;br/&gt;#[inline]&lt;br/&gt;fn default_browser_signer_proxy() -&amp;gt; BrowserSignerProxy {&lt;br/&gt;    BrowserSignerProxy::new(&lt;br/&gt;        BrowserSignerProxyOptions::default()&lt;br/&gt;            .timeout(BROWSER_SIGNER_PROXY_TIMEOUT)&lt;br/&gt;            .ip_addr(DEFAULT_NIP07_PROXY_ADDR.ip())&lt;br/&gt;            .port(DEFAULT_NIP07_PROXY_ADDR.port()),&lt;br/&gt;    )&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:12:42Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsd77m0kwcxndck9xcwua32gmpk323m65zcxqsjteyfe4ezctspnkspzpmhxue69uhkummnw3ezucn0dejqyg8z6p8k9msx3zrhf376m2hs5n7x8m58gpyxls4p9l9nhut8tza8guqhhmds</id>
    
      <title>Nostr event nevent1qqsd77m0kwcxndck9xcwua32gmpk323m65zcxqsjteyfe4ezctspnkspzpmhxue69uhkummnw3ezucn0dejqyg8z6p8k9msx3zrhf376m2hs5n7x8m58gpyxls4p9l9nhut8tza8guqhhmds</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsd77m0kwcxndck9xcwua32gmpk323m65zcxqsjteyfe4ezctspnkspzpmhxue69uhkummnw3ezucn0dejqyg8z6p8k9msx3zrhf376m2hs5n7x8m58gpyxls4p9l9nhut8tza8guqhhmds" />
    <content type="html">
      be permission-less
    </content>
    <updated>2026-04-06T04:13:11Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqqqqq8y2832klsg0znp6cgfv3853jzce2a5tl779kyrerryft00gpzpmhxue69uhkummnw3ezucn0dejqygqvghtaghkmp7ka5ss46dk2pkdt5rrhrwzaxuthvju2z2x4u3p7f5xmgry6</id>
    
      <title type="html">Ai is taking my job 😔✊️. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqqqqq8y2832klsg0znp6cgfv3853jzce2a5tl779kyrerryft00gpzpmhxue69uhkummnw3ezucn0dejqygqvghtaghkmp7ka5ss46dk2pkdt5rrhrwzaxuthvju2z2x4u3p7f5xmgry6" />
    <content type="html">
      Ai is taking my job 😔✊️.&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://npub1p3za04z7mv86mkjzzhfkegxe4wsvwudct5m3wajt3gfg6hjy8exslltqmk.blossom.band/c89504ccd8b5ed6ffb495c1a9b43547ccb2d17119f8a12c6bd848ece45306638.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-04-06T04:13:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs80sshrut3cgayw8lec43rslc4pmrgwsggsu85q0x2j3s5hjt7y4qpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqps5gmh2z</id>
    
      <title type="html">The url (remove spaces): https:// pfp.nostr.build ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs80sshrut3cgayw8lec43rslc4pmrgwsggsu85q0x2j3s5hjt7y4qpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqps5gmh2z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdf00e66s4nxsnfvpemk5x4uxhgjxuqhlhqmrkjfh9wdmg8azzdtcpypmhxue69uhhyetvv9uj66ns9ehx7um5wgh8w6tjv4jxuet59e48q2hu2gk&#39;&gt;nevent1q…u2gk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The url (remove spaces): https:// pfp.nostr.build /c878259e8c88bef7efb72c0393297c6d45e41f209c4120fc7916ec19fbd66610.gif
    </content>
    <updated>2026-04-06T04:13:31Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg2san75cpnmcv6d684ghc02v7lhyr9f4xkgrfm3mf62an2c70q3spzpmhxue69uhkummnw3ezucn0dejqyg8z6p8k9msx3zrhf376m2hs5n7x8m58gpyxls4p9l9nhut8tza8gutyzzhz</id>
    
      <title>Nostr event nevent1qqsg2san75cpnmcv6d684ghc02v7lhyr9f4xkgrfm3mf62an2c70q3spzpmhxue69uhkummnw3ezucn0dejqyg8z6p8k9msx3zrhf376m2hs5n7x8m58gpyxls4p9l9nhut8tza8gutyzzhz</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg2san75cpnmcv6d684ghc02v7lhyr9f4xkgrfm3mf62an2c70q3spzpmhxue69uhkummnw3ezucn0dejqyg8z6p8k9msx3zrhf376m2hs5n7x8m58gpyxls4p9l9nhut8tza8gutyzzhz" />
    <content type="html">
      i look at my history and just be like 🤦🏾‍♂️
    </content>
    <updated>2026-04-06T04:14:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsfrghqjn4vlgepd2t9gdqzxakznphx3khp43ykr6nzwtg40lqljnqpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwclkh2qw</id>
    
      <title type="html">Block 943868 2 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfrghqjn4vlgepd2t9gdqzxakznphx3khp43ykr6nzwtg40lqljnqpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwclkh2qw" />
    <content type="html">
      Block 943868&lt;br/&gt;&lt;br/&gt;2 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:15:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsql9336v9cl6z9l9qr6ggpt0lruuwzuk45zs3k6zhgnzhht8kjjsqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsxqy058</id>
    
      <title type="html">[package] name = &amp;#34;get_file_hash_core&amp;#34; version = { ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsql9336v9cl6z9l9qr6ggpt0lruuwzuk45zs3k6zhgnzhht8kjjsqpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczsxqy058" />
    <content type="html">
      [package]&lt;br/&gt;name = &amp;#34;get_file_hash_core&amp;#34;&lt;br/&gt;version = { workspace = true }&lt;br/&gt;edition = { workspace = true }&lt;br/&gt;description = { workspace = true }&lt;br/&gt;license = { workspace = true }&lt;br/&gt;documentation = { workspace = true }&lt;br/&gt;homepage = { workspace = true }&lt;br/&gt;repository = { workspace = true }&lt;br/&gt;authors = { workspace = true }&lt;br/&gt;&lt;br/&gt;[features]&lt;br/&gt;nostr = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;frost = [&amp;#34;dep:nostr&amp;#34;, &amp;#34;dep:nostr-sdk&amp;#34;, &amp;#34;dep:serde_json&amp;#34;, &amp;#34;dep:sha2&amp;#34;, &amp;#34;dep:hex&amp;#34;, &amp;#34;dep:reqwest&amp;#34;, &amp;#34;dep:tokio&amp;#34;, &amp;#34;dep:csv&amp;#34;, &amp;#34;dep:url&amp;#34;, &amp;#34;dep:frost-secp256k1-tr&amp;#34;, &amp;#34;dep:rand&amp;#34;]&lt;br/&gt;&lt;br/&gt;[dependencies]&lt;br/&gt;sha2 = { workspace = true, optional = true }&lt;br/&gt;nostr = { workspace = true, optional = true }&lt;br/&gt;serde_json = { workspace = true, optional = true }&lt;br/&gt;nostr-sdk = { workspace = true, optional = true }&lt;br/&gt;hex = { workspace = true, optional = true }&lt;br/&gt;csv = { workspace = true, optional = true }&lt;br/&gt;url = { workspace = true, optional = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true, optional = true }&lt;br/&gt;rand = { workspace = true, optional = true }&lt;br/&gt;&lt;br/&gt;[dev-dependencies]&lt;br/&gt;sha2 = { workspace = true }&lt;br/&gt;tempfile = { workspace = true }&lt;br/&gt;nostr = { workspace = true }&lt;br/&gt;nostr-sdk = { workspace = true }&lt;br/&gt;serde_json = { workspace = true }&lt;br/&gt;hex = { workspace = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;] }&lt;br/&gt;csv = { workspace = true }&lt;br/&gt;url = { workspace = true }&lt;br/&gt;frost-secp256k1-tr = { workspace = true }&lt;br/&gt;serial_test = { workspace = true, features = [&amp;#34;test_logging&amp;#34;] }&lt;br/&gt;log = { workspace = true }&lt;br/&gt;&lt;br/&gt;[build-dependencies]&lt;br/&gt;reqwest = { workspace = true, features = [&amp;#34;json&amp;#34;], optional = true }&lt;br/&gt;tokio = { workspace = true, features = [&amp;#34;macros&amp;#34;, &amp;#34;rt-multi-thread&amp;#34;], optional = true }&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:15:53Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsw65vq2ktwecgyvkvq560nr0cs00pgg8pvn9haky83r2fetpm5x3qpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs3tzfv5</id>
    
      <title type="html">#[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))] ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsw65vq2ktwecgyvkvq560nr0cs00pgg8pvn9haky83r2fetpm5x3qpzpmhxue69uhkummnw3ezucn0dejqygp29cyfd2husv0s3jv33exsh6gr98wemw29llrgap0p2v5t5thczs3tzfv5" />
    <content type="html">
      #[cfg(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;))]&lt;br/&gt;#[tokio::main]&lt;br/&gt;async fn main() {&lt;br/&gt;    use std::fs;&lt;br/&gt;    use std::path::PathBuf;&lt;br/&gt;&lt;br/&gt;    let manifest_dir = PathBuf::from(std::env::var(&amp;#34;CARGO_MANIFEST_DIR&amp;#34;).unwrap());&lt;br/&gt;    let crate_src_path = manifest_dir.join(&amp;#34;src&amp;#34;).join(&amp;#34;online_relays_gps.csv&amp;#34;);&lt;br/&gt;&lt;br/&gt;    // Only download if the file doesn&amp;#39;t exist or is empty&lt;br/&gt;    if !crate_src_path.exists() || fs::metadata(&amp;amp;crate_src_path).map(|m| m.len() == 0).unwrap_or(true) {&lt;br/&gt;        println!(&amp;#34;cargo:warning=Downloading online_relays_gps.csv...&amp;#34;);&lt;br/&gt;        let url = &amp;#34;&lt;a href=&#34;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&#34;&gt;https://raw.githubusercontent.com/permissionlesstech/bitchat/main/relays/online_relays_gps.csv&amp;#34&lt;/a&gt;;;&lt;br/&gt;        match reqwest::get(url).await {&lt;br/&gt;            Ok(response) =&amp;gt; {&lt;br/&gt;                if response.status().is_success() {&lt;br/&gt;                    match response.text().await {&lt;br/&gt;                        Ok(content) =&amp;gt; {&lt;br/&gt;                            fs::write(&amp;amp;crate_src_path, content).expect(&amp;#34;Unable to write online_relays_gps.csv&amp;#34;);&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Successfully downloaded online_relays_gps.csv to {:?}&amp;#34;, crate_src_path);&lt;br/&gt;                        },&lt;br/&gt;                        Err(e) =&amp;gt; {&lt;br/&gt;                            println!(&amp;#34;cargo:warning=Failed to get text from response: {}&amp;#34;, e);&lt;br/&gt;                        }&lt;br/&gt;                    }&lt;br/&gt;                } else {&lt;br/&gt;                    println!(&amp;#34;cargo:warning=Failed to download online_relays_gps.csv: HTTP status {}&amp;#34;, response.status());&lt;br/&gt;                }&lt;br/&gt;            },&lt;br/&gt;            Err(e) =&amp;gt; {&lt;br/&gt;                println!(&amp;#34;cargo:warning=Failed to fetch online_relays_gps.csv: {}&amp;#34;, e);&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;#[cfg(not(all(not(debug_assertions), feature = &amp;#34;nostr&amp;#34;)))]&lt;br/&gt;fn main() {&lt;br/&gt;    // Placeholder for when the nostr feature is not enabled or in debug mode&lt;br/&gt;    println!(&amp;#34;cargo:warning=Skipping online_relays_gps.csv download (nostr feature not enabled or debug mode)&amp;#34;);&lt;br/&gt;}&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:16:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqyenke4kuajp0lcplxfnqjpjr6ed277qnnhf82mned6v5kyeq62gpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsl3gjqk</id>
    
      <title type="html">Or this, your choice ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqyenke4kuajp0lcplxfnqjpjr6ed277qnnhf82mned6v5kyeq62gpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsl3gjqk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstr890e59x8tpm0q42792ydhlfqd8xjzcrt7tw4qxyn52cdpvtptspz4mhxue69uhhyetvv9ujumt0wd68ytnsw43qs2w0lk&#39;&gt;nevent1q…w0lk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Or this, your choice &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://pfp.nostr.build/1e32e7ded1df45aa5d63919eaf0eb3c5590906e70c28180809ca921d9ea6a2a6.gif&#34;&gt; 
    </content>
    <updated>2026-04-06T04:17:23Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2l8495c2xt8uspgtgerhtv2jqjx0qxptw2qxkkcrkjpcejczwtvspzpmhxue69uhkummnw3ezucn0dejqyg88h7x66dsg9rcz3xmmf04p5x7j36mdf4jj97shl9t7phac88hnmvx9gzdm</id>
    
      <title type="html">Block 943869 1 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2l8495c2xt8uspgtgerhtv2jqjx0qxptw2qxkkcrkjpcejczwtvspzpmhxue69uhkummnw3ezucn0dejqyg88h7x66dsg9rcz3xmmf04p5x7j36mdf4jj97shl9t7phac88hnmvx9gzdm" />
    <content type="html">
      Block 943869&lt;br/&gt;&lt;br/&gt;1 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:20:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst66mta4puveq4wkx70ky0vfwsrnwgxky4pgpg9jmlpk9hwls2nqcpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwcyekm70</id>
    
      <title type="html">Block 943869 1 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst66mta4puveq4wkx70ky0vfwsrnwgxky4pgpg9jmlpk9hwls2nqcpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwcyekm70" />
    <content type="html">
      Block 943869&lt;br/&gt;&lt;br/&gt;1 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:20:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswxrddfu0w0tpcppwpcj4kdtrk4kmnkjx7fg8sy89nx33gurqs0xqpzpmhxue69uhkummnw3ezucn0dejqygya5ad37n3lttyh0847e5nu4qpjkf3j8z0p7q8gl844an2q7fxud5dy707j</id>
    
      <title>Nostr event nevent1qqswxrddfu0w0tpcppwpcj4kdtrk4kmnkjx7fg8sy89nx33gurqs0xqpzpmhxue69uhkummnw3ezucn0dejqygya5ad37n3lttyh0847e5nu4qpjkf3j8z0p7q8gl844an2q7fxud5dy707j</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswxrddfu0w0tpcppwpcj4kdtrk4kmnkjx7fg8sy89nx33gurqs0xqpzpmhxue69uhkummnw3ezucn0dejqygya5ad37n3lttyh0847e5nu4qpjkf3j8z0p7q8gl844an2q7fxud5dy707j" />
    <content type="html">
      Hmmm a bridge too far 🙄
    </content>
    <updated>2026-04-06T04:21:16Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstk20809r80hllmesuksvmpkgqvje2r9dl0rk8yggx2m3jwtyj7uqpzpmhxue69uhkummnw3ezucn0dejqyg8gtmt49pktwar4wakpqp7l338lrjwx3mlersmzwdrmqew9haxu0qhnzqae</id>
    
      <title type="html">**Astronomy Picture of the Day** 06 April 2026 **NGC 3310: A ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstk20809r80hllmesuksvmpkgqvje2r9dl0rk8yggx2m3jwtyj7uqpzpmhxue69uhkummnw3ezucn0dejqyg8gtmt49pktwar4wakpqp7l338lrjwx3mlersmzwdrmqew9haxu0qhnzqae" />
    <content type="html">
      **Astronomy Picture of the Day**&lt;br/&gt;&lt;br/&gt;06 April 2026&lt;br/&gt;&lt;br/&gt;**NGC 3310: A Starburst Spiral Galaxy**&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://apod.nasa.gov/apod/image/2604/ngc3310_gemini_960.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Image Credit: AAO ITSO Office, Gemini Obs., AURA, T. A. Rector, U. Alaska Anchorage&lt;br/&gt;&lt;br/&gt;Explanation:  &lt;br/&gt;The party is still going on in spiral galaxy NGC 3310.  &lt;br/&gt;&lt;br/&gt;Roughly 100 million years ago, &lt;br/&gt;NGC 3310 likely &lt;br/&gt;collided with a smaller galaxy &lt;br/&gt;causing the large &lt;br/&gt;spiral galaxy &lt;br/&gt;to light up with a tremendous burst of &lt;br/&gt;star formation.  &lt;br/&gt;&lt;br/&gt;The changing gravity during the collision created &lt;br/&gt;density waves that compressed existing &lt;br/&gt;clouds of gas and triggered the &lt;br/&gt;star-forming party.  &lt;br/&gt;&lt;br/&gt;The featured image from the &lt;br/&gt;Gemini North Telescope shows the galaxy in great detail, &lt;br/&gt;color-coded so that pink highlights gas &lt;br/&gt;while white and blue highlight stars. &lt;br/&gt;&lt;br/&gt;Some of the &lt;br/&gt;star clusters &lt;br/&gt;in the galaxy are quite young, indicating that &lt;br/&gt;starburst galaxies may remain in &lt;br/&gt;star-burst mode for quite some time.  &lt;br/&gt;&lt;br/&gt;NGC 3310 spans about 50,000 light years, lies about 50 million light years away, &lt;br/&gt;and is visible with a small telescope towards the constellation of Great Bear &lt;br/&gt;Ursa Major.&lt;br/&gt;&lt;br/&gt;#APOD #NGC3310 #StarburstGalaxy #SpiralGalaxy #GalaxyCollision #StarFormation&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://apod.nasa.gov/apod/ap260405.html&#34;&gt;https://apod.nasa.gov/apod/ap260405.html&lt;/a&gt;&lt;br/&gt;
    </content>
    <updated>2026-04-06T04:22:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv5rjuzy48eg9f0lv2nlydw3uwpvsdxpfw7dd86ser46ku8mfumtgpzpmhxue69uhkummnw3ezucn0dejqygypjycgzfrdrykf54v4zuzzwp6kkg3qj3rskvt3uk9mtc7y9m5dk5l3nqht</id>
    
      <title>Nostr event nevent1qqsv5rjuzy48eg9f0lv2nlydw3uwpvsdxpfw7dd86ser46ku8mfumtgpzpmhxue69uhkummnw3ezucn0dejqygypjycgzfrdrykf54v4zuzzwp6kkg3qj3rskvt3uk9mtc7y9m5dk5l3nqht</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv5rjuzy48eg9f0lv2nlydw3uwpvsdxpfw7dd86ser46ku8mfumtgpzpmhxue69uhkummnw3ezucn0dejqygypjycgzfrdrykf54v4zuzzwp6kkg3qj3rskvt3uk9mtc7y9m5dk5l3nqht" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9qwyk827gk6r5xl2f0u0c8ct3usf364ttye5tfrsvglfqqf62ctcpr4mhxue69uhkzumfvyh8vetrw3hhyctswqhxjme0dehhxarjv4q2l3&#39;&gt;nevent1q…q2l3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;不知道是不是我脸盲，感觉最近好几个视频都是一个人😅
    </content>
    <updated>2026-04-06T04:31:57Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsr33qape58thqjparzlz757my4q0fawmgf9ned84kxvm3pqy98vhcpzpmhxue69uhkummnw3ezucn0dejqygqrv5eu42rjxa55d48ylh4ycxsyg8k68r9zm8v5z7anvqrvh24ltq2fx5e4</id>
    
      <title type="html">I&amp;#39;ll be upfront and say you&amp;#39;re probably over qualified, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsr33qape58thqjparzlz757my4q0fawmgf9ned84kxvm3pqy98vhcpzpmhxue69uhkummnw3ezucn0dejqygqrv5eu42rjxa55d48ylh4ycxsyg8k68r9zm8v5z7anvqrvh24ltq2fx5e4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqxuey6ckfk0jr3trt3rd3f8yxsze9nt0trurg520t0c3p4vfgqprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7t6a4za&#39;&gt;nevent1q…a4za&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll be upfront and say you&amp;#39;re probably over qualified, and I can also say the told me they wanted a full time employee and not consulting, so just a heads up on that. But I&amp;#39;d be happy to chat about it if you&amp;#39;re still interested!&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzqqm9x092su3hd9rdfe8aafxp5pzpak3cegkem9qhhvmqqm96406cqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcqyru7wdkwgmlcdn9pwh7l5fwmm3vc4kxwhkvepv86f63h63r3yj52va8czjq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…czjq&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Are you on signal? They&#39;re going to want to chat over email probably, so we can just go straight to email if you&#39;d prefer. My public email is on my website (just click the contact button to show it). I can give you more specifics. You&#39;d be expected to pick up on those tools with little guidance. Chances are I&#39;d be consulting with them on tech stack decisions. &lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.vaughnnugent.com/&#34;&gt;https://www.vaughnnugent.com/&lt;/a&gt;&lt;br/&gt;&lt;a href=&#34;https://signal.me/#eu/duR00-XpDlel3PjNSnO2E4CLlAbd3cYy0s0qOO2BYD9vmaow4kBMh79UXh7dPkgU&#34;&gt;https://signal.me/#eu/duR00-XpDlel3PjNSnO2E4CLlAbd3cYy0s0qOO2BYD9vmaow4kBMh79UXh7dPkgU&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-04-06T04:34:37Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqntxnxnu96t70ht9zylt4puasrc02dtvwj0exy5zvv68dfxdvn3cpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwcang076</id>
    
      <title type="html">Block 943870 2 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqntxnxnu96t70ht9zylt4puasrc02dtvwj0exy5zvv68dfxdvn3cpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwcang076" />
    <content type="html">
      Block 943870&lt;br/&gt;&lt;br/&gt;2 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:35:49Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvfqkcey8a3ngd437ftkndzwhkusqk4g8v30faua96d2zp8qmpm5qpzpmhxue69uhkummnw3ezucn0dejqygx74dua47su90jtffkn4jsn27mv4g9hgjl5dt2jnfdwgepgs4u7dqrmj4dh</id>
    
      <title type="html">This is how I Nostr ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvfqkcey8a3ngd437ftkndzwhkusqk4g8v30faua96d2zp8qmpm5qpzpmhxue69uhkummnw3ezucn0dejqygx74dua47su90jtffkn4jsn27mv4g9hgjl5dt2jnfdwgepgs4u7dqrmj4dh" />
    <content type="html">
      This is how I Nostr&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://haven.downisontheup.ca/f23da71bf716585154232c720681bf1e197abc9b91b27b1622e85e30a4f14d95.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-04-06T04:38:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqnf557kumcc2fzetw0hcdcasulj9m4vup2xtjs4rzr9q38j9z50qpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsl9gvmp</id>
    
      <title type="html">URL(remove spaces): https:// pfp.nostr.build ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqnf557kumcc2fzetw0hcdcasulj9m4vup2xtjs4rzr9q38j9z50qpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsl9gvmp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqyenke4kuajp0lcplxfnqjpjr6ed277qnnhf82mned6v5kyeq62gpz4mhxue69uhhyetvv9ujumt0wd68ytnsw43q494803&#39;&gt;nevent1q…4803&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;URL(remove spaces): https:// pfp.nostr.build /1e32e7ded1df45aa5d63919eaf0eb3c5590906e70c28180809ca921d9ea6a2a6.gif
    </content>
    <updated>2026-04-06T04:40:26Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0u9n70qrv50388al576qknseg4dquequp88yqdmh55mctx9ngd8qpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwc6u663f</id>
    
      <title type="html">Block 943871 1 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0u9n70qrv50388al576qknseg4dquequp88yqdmh55mctx9ngd8qpzpmhxue69uhkummnw3ezucn0dejqyg8s8heagy6zxppqehm6ewe4l94z2sjzgfr2kpft5fxxlmr2f48kwc6u663f" />
    <content type="html">
      Block 943871&lt;br/&gt;&lt;br/&gt;1 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:40:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs98jrsjwaaddgaxpsmsk3n3lkk7twgky9s5vc7v4vughpfxj39sugpzpmhxue69uhkummnw3ezucn0dejqyg88h7x66dsg9rcz3xmmf04p5x7j36mdf4jj97shl9t7phac88hnmv566ugz</id>
    
      <title type="html">Block 943871 1 - high priority 1 - medium priority 1 - low ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs98jrsjwaaddgaxpsmsk3n3lkk7twgky9s5vc7v4vughpfxj39sugpzpmhxue69uhkummnw3ezucn0dejqyg88h7x66dsg9rcz3xmmf04p5x7j36mdf4jj97shl9t7phac88hnmv566ugz" />
    <content type="html">
      Block 943871&lt;br/&gt;&lt;br/&gt;1 - high priority&lt;br/&gt;1 - medium priority&lt;br/&gt;1 - low priority&lt;br/&gt;1 - no priority&lt;br/&gt;1 - purging&lt;br/&gt;&lt;br/&gt;#bitcoinfees #mempool
    </content>
    <updated>2026-04-06T04:40:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs97tkdmckqj489zwxp36rsxajr67tpvw0y0ucs28wpkx6cng2z5vqpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsq9td49</id>
    
      <title type="html">Yes</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs97tkdmckqj489zwxp36rsxajr67tpvw0y0ucs28wpkx6cng2z5vqpzpmhxue69uhkummnw3ezucn0dejqygy0k9qtf6xaa7tuujuzr5j8y79p5s6nxcnz8ajqy9yykde0jjqqpsq9td49" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxgxm5kezry48r3n5k6uqtknn39vde5y7jsamgrjtjs7xn6cpsmksppamhxue69uhkummnw3ezumt0d5pw8m33&#39;&gt;nevent1q…8m33&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yes
    </content>
    <updated>2026-04-06T04:44:13Z</updated>
  </entry>

</feed>