12 Commits

Author SHA1 Message Date
idk
38ee4bef5c Clean my GPG key 2023-01-21 03:43:30 +00:00
zzz
1e33399af4 add note on outproxies 2023-01-19 09:21:15 -05:00
zzz
e795daa239 bittorrent: more info 2023-01-17 08:19:25 -05:00
zzz
76bcd2ad15 bittorrent: Add dev guidance section, mostly copied from SAM spec 2023-01-17 08:07:21 -05:00
idk
a1914b0f97 fix hall of fame link, closes #37 2023-01-15 23:10:46 +00:00
idk
46aa306710 Merge branch 'no-more-monotone-and-trac' into 'master'
No more monotone and trac

See merge request i2p-hackers/i2p.www!22
2023-01-15 19:05:20 +00:00
65ec4eeb91 No more monotone and trac 2023-01-15 19:05:20 +00:00
idk
da6a59e3d7 Merge branch 'there-is-no-target-bundle' into 'master'
There is no target bundle for ant, instead it seems git-bundle is the one to use

See merge request i2p-hackers/i2p.www!21
2023-01-14 16:18:44 +00:00
zzz
8afe26a895 Streaming: Clarify when ID may be 0 2023-01-13 19:10:50 -05:00
idk
d56f43a5d0 check in my key 2023-01-13 22:56:51 +00:00
idk
5bbeb4975f update bundle versions and indicate they are unsigned 2023-01-13 17:02:58 +00:00
lbt
df53d22c04 There is no target bundle for ant, instead it seems git-bundle is the one to use 2023-01-11 18:57:29 +01:00
15 changed files with 167 additions and 45 deletions

View File

@@ -23,7 +23,7 @@ except ImportError:
# Constants
CURRENT_I2P_VERSION = '2.1.0'
CURRENT_I2P_FIREFOX_PROFILE_VERSION = '2.0.0'
CURRENT_I2P_FIREFOX_PROFILE_VERSION = '2.1.0'
CURRENT_I2P_OSX_VERSION = '1.9.0'
CANONICAL_DOMAIN = 'geti2p.net'

View File

@@ -59,7 +59,7 @@ special configuration. You don't even need to close existing Firefox windows.
{%- set name = 'Windows' -%}
{%- set icon = 'images/download/windows.png' -%}
{%- set filename = 'I2P-Easy-Install-Bundle-%s-signed.exe' -%}
{%- set filename = 'I2P-Easy-Install-Bundle-%s.exe' -%}
{%- set hash = '862de2f2e05cfc46c2f612656b93dd9c94b6bc7a034912d732dd0ade2ad477f6' -%}
{% call package_outer('windows', name, icon) %}

View File

@@ -44,7 +44,7 @@ start an installer, "double-click" the downloaded .exe file.
{%- set name = 'Windows' -%}
{%- set icon = 'images/download/windows.png' -%}
{%- set filename = 'I2P-Easy-Install-Bundle-%s-signed.exe' -%}
{%- set filename = 'I2P-Easy-Install-Bundle-%s.exe' -%}
{%- set hash = '862de2f2e05cfc46c2f612656b93dd9c94b6bc7a034912d732dd0ade2ad477f6' -%}
{% call package_outer('windows', name, icon) %}
@@ -65,12 +65,6 @@ start an installer, "double-click" the downloaded .exe file.
{%- endtrans %}</p>
{% endcall %}
{% trans signer='zlatinb',
signingkey=url_for('static', filename='zlatinb.key.crt') -%}
The files are signed by {{ signer }},
<a href="{{ signingkey }}">whose key is here</a>.
{%- endtrans %}
<h2>{{ _('What is in it?') }}</h2>
<p><strong>{% trans -%}
A Jpackaged I2P Router: {%- endtrans %}</strong>

View File

@@ -403,7 +403,7 @@ network.
<td valign="top" colspan="2">{% trans %}&hellip; and many others{% endtrans %}</td>
</tr>
<tr>
<td><a href="site_url(about/hall-of-fame)">Hall of Fame!</a></td>
<td>{% trans famehall=site_url('about/hall-of-fame') -%}<a href="{{ famehall }}">Hall of Fame!</a>{%- endtrans %}</td>
</tr>
</table>
{% endblock %}

View File

@@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Bittorrent over I2P{% endtrans %}{% endblock %}
{% block lastupdated %}2022-01{% endblock %}
{% block accuratefor %}0.9.52{% endblock %}
{% block lastupdated %}2023-01{% endblock %}
{% block accuratefor %}0.9.57{% endblock %}
{% block content %}
<p>{% trans -%}
@@ -23,6 +23,60 @@ We welcome additional ports of client and tracker software to I2P.
<h2>General Guidance for Developers</h2>
<p>
Most non-Java bittorrent clients will connect to I2P via <a href="{{ site_url('docs/api/samv3') }}">SAMv3</a>.
SAM sessions (or inside I2P, tunnel pools or sets of tunnels) are designed to be long-lived.
Most bittorrent clients will only need one session, created at startup and closed on exit.
I2P is different from Tor, where circuits may be rapidly created and discarded.
Think carefully and consult with I2P developers before designing your application
to use more than one or two simultaneous sessions, or to rapidly create and discard them.
Bittorrent clients must not create a unique session for every connection.
Design your client to use the same session for announces and client connections.
</p><p>
Also, please ensure your client settings
(and guidance to users about router settings, or router defaults if you bundle a router)
will result in your users contributing more resources to the network than they consume.
I2P is a peer-to-peer network, and the network cannot survive if a popular application
drives the network into permanent congestion.
</p><p>
Do not provide support for bittorrent through an I2P outproxy to the clearnet
as it will probably be blocked. Consult with outproxy operators for guidance.
</p><p>
The Java I2P and i2pd router implementations are independent and have minor differences
in behavior, feature support, and defaults.
Please test your application with the latest version of both routers.
</p><p>
i2pd SAM is enabled by default; Java I2P SAM is not.
Provide instructions to your users on how to enable SAM in Java I2P (via /configclients in the router console),
and/or provide a good error message to the user if the initial connect fails,
e.g. "ensure that I2P is running and the SAM interface is enabled".
</p><p>
The Java I2P and i2pd routers have different defaults for tunnel quantities.
The Java default is 2 and the i2pd default is 5.
For most low- to medium-bandwidth and low- to medium-connection counts, 3 is sufficient.
Please specify the tunnel quantity in the SESSION CREATE message
to get consistent performance with the Java I2P and i2pd routers.
</p><p>
DHT support requires SAM v3.3 PRIMARY and SUBSESSIONS for TCP and UDP over the same session.
This will require substantial development effort on the client side, unless the client is written in Java.
i2pd does not currently support SAM v3.3.
libtorrent does not currently support SAM v3.3.
</p><p>
Without DHT support, you may wish to automatically announce to
a configurable list of known open trackers so that magnet links will work.
Consult with I2P users for information on currently-up open trackers and keep your defaults up-to-date.
Supporting the i2p_pex extension will also help alleviate the lack of DHT support.
</p><p>
For more guidance to developers on ensuring your application uses only the resources it needs, please see
the <a href="{{ site_url('docs/api/samv3') }}">SAMv3 specification</a> and
<a href="{{ site_url('docs/applications/embedding') }}">our guide to bundling I2P with your application</a>.
Contact I2P or i2pd developers for further assistance.
</p>
<h2>{% trans %}Announces{% endtrans %}</h2>
<p>{% trans -%}
Clients generally include a fake port=6881 parameter in the announce, for compatibility with older trackers.

View File

@@ -384,6 +384,15 @@ Build your own. If you are hardcoding seed nodes, we recommend that you have sev
<h3>Outproxies</h3>
<p>
I2P outproxies to the clearnet are a limited resource.
Use outproxies only for normal user-initiated web browsing or other limited traffic.
For any other usage, consult with and get approval from the outproxy operator.
</p>
<h3>{% trans %}Comarketing{% endtrans %}</h3>
<p>{% trans -%}
Let's work together. Don't wait until it's done.

View File

@@ -28,7 +28,7 @@
<h2 id="generating-a-bundle">{% trans -%}Generating a Bundle{%- endtrans %}</h2>
<p>{% trans -%} First, follow the <a href="GIT.md">Git guide for Users</a> until you have a successfully <code>--unshallow</code>ed clone of clone of the i2p.i2p repository. If you already have a clone, make sure you run <code>git fetch --unshallow</code> before you generate a torrent bundle. {%- endtrans %}</p>
<p>{% trans -%}Once you have that, simply run the corresponding ant target:{%- endtrans %}</p>
<pre><code>ant bundle</code></pre>
<pre><code>ant git-bundle</code></pre>
<p>{% trans -%} and copy the resulting bundle into your I2PSnark downloads directory. For instance: {%- endtrans %}</p>
<pre><code>cp i2p.i2p.bundle* $HOME/.i2p/i2psnark/</code></pre>
<p>{% trans -%} In a minute or two, I2PSnark will pick up on the torrent. Click on the “Start” button to begin seeding the torrent. {%- endtrans %}</p>

View File

@@ -178,7 +178,7 @@ scheduled development meetings, however <a href="{{ meetings }}">archives are av
{%- endtrans %}</p>
<p>{% trans monotone=site_url('get-involved/guides/monotone') -%}
The current source is available in <a href="{{ monotone }}">monotone</a>.
The current source is available in <a href="{{ monotone }}">git</a>.
{%- endtrans %}</p>
<h2>{% trans %}Additional Information{% endtrans %}</h2>

View File

@@ -149,7 +149,7 @@ or easily add some feature.
<h3>{% trans %}Getting Started{% endtrans %}</h3>
<p>{% trans url='https://github.com/i2p/i2p.scripts/tree/master/plugin/makeplugin.sh' -%}
To create a plugin from an existing binary package you will need to get
makeplugin.sh from <a href="{{ url }}">the i2p.scripts branch in monotone</a>.
makeplugin.sh from <a href="{{ url }}">the i2p.scripts repository in git</a>.
{%- endtrans %}</p>

View File

@@ -473,13 +473,13 @@ These are described in detail below.
</tr>
<tr>
<td>
8998
7670 (8998)
</td>
<td>
mtn.i2p-projekt.i2p (Monotone)
gitssh.idk.i2p git over ssh
</td>
<td>
{% trans -%}May be disabled or changed on the i2ptunnel page in the router console.
{% trans -%}This used to be port 8998 for monotone. Elder installations may still have that and not this one. May be disabled or changed on the i2ptunnel page in the router console.
May also be configured to be bound to a specific interface or all interfaces.{%- endtrans %}
</td>
</tr>

View File

@@ -309,7 +309,7 @@ Except where otherwise noted, content on this site is licensed under a
<p>{% trans git=site_url('docs/applications/git') -%}
Developers may push changes to a distributed git repository if you
receive permission from the person running that repository.
See the <a href="{{ git }}">Monotone Page</a> for details.
See the <a href="{{ git }}">Git Page</a> for details.
{%- endtrans %}</p>
<p>{% trans -%}

View File

@@ -46,13 +46,13 @@ These will give you a good overview of how I2P is structured and what different
<p>{% trans -%}
For development on the I2P router or the embedded applications,
there are two ways to get the source code:
you need to get the source code:
{%- endtrans %}</p>
<h3 id="git">{% trans %}The new way: Git{% endtrans %}</h3>
<h3 id="git">{% trans %}Our current way: Git{% endtrans %}</h3>
<p>{% trans trac="https://i2pgit.org" -%}I2P now has official Git services and accepts contributions via Git at our own gitlab.
Trac issues have also been migrated to <a href="{{ trac }}">gitlab</a> and the old Trac is not available anymore by now. Two-way syncing of
<p>{% trans trac="https://i2pgit.org" -%}I2P has official Git services and accepts contributions via Git at <a href="{{ trac }}">our own gitlab</a>.
Trac issues have also been migrated there and the former Trac is not available anymore by now. Two-way syncing of
issues between Gitlab and Github is a work-in-progress.{%- endtrans %}</p>
<li>{% trans git_url='https://git-scm.com/' -%}

View File

@@ -1,7 +1,11 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}New Translator's Guide{% endtrans %}{% endblock %}
{% block content %}
{% trans %}Here's a very quick guide to getting started.{% endtrans %}
{% trans %}Here's a very quick guide to getting started.
Note that for both (website/console) there is an <b>easy way</b> using a
translation web-site (and requiring nothing else than to use that) and
the <b>other way</b> which requires you to set up a build-environment
(installing software etc.).{% endtrans %}
<h2>{% trans %}How to Translate the Website{% endtrans %}</h2>
@@ -24,8 +28,8 @@ please update the translation status on <a href="{{ url }}">this wiki page</a>.
{%- endtrans %}</li>
<li>{% trans newdevs=site_url('get-involved/guides/new-developers') -%}
Follow the <a href="{{ newdevs }}">new developer's guide</a>,
Including the installation of monotone,
checking out i2p.www branch, and generate your own monotone keys.
including the installation of git and the gettext tools. You will need
the i2p.www repository.
It is not required that you sign a dev agreement.
{%- endtrans %}</li>
</ol>
@@ -56,10 +60,9 @@ To work with .po files efficiently, you may wish to use <a href="http://www.poed
{%- endtrans %}</li>
<li>{% trans -%}
<b>Check in:</b>
"<code>mtn pull</code>", "<code>mtn update</code>". Then check in by "<code>mtn ci -k yourname@mail.i2p file1 file2 ...</code>"
This collects the diff info of your changed file into your local repo. Then "<code>mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p i2p.i2p</code>".
This synchronizes your local repo with the repo on the target machine.
<b>Git Workflow:</b>
You can then add all new and changed files to your next commit using <code>git add .</code> (or specify which files instead of the dot).
Please note the suggested workflow for git on our git-page.
{%- endtrans %}</li>
<li>{% trans -%}
@@ -89,8 +92,8 @@ please update the translation status on <a href="{{ url }}">this wiki page</a>.
{%- endtrans %}</li>
<li>{% trans newdevs=site_url('get-involved/guides/new-developers') -%}
Follow the <a href="{{ newdevs }}">new developer's guide</a>,
including the installation of monotone and the gettext tools,
checking out i2p.i2p branch, and generate your own monotone keys.
including the installation of git and the gettext tools. You will need
the i2p.i2p repository.
{%- endtrans %}</li>
<li>{% trans -%}
Generate your own gpg key and sign the dev agreement.
@@ -149,10 +152,9 @@ To work with .po files efficiently, you may wish to use <a href="http://www.poed
{%- endtrans %}</li>
<li>{% trans -%}
<b>Check in:</b>
"<code>mtn pull</code>", "<code>mtn update</code>". Then check in by "<code>mtn ci -k yourname@mail.i2p file1 file2 ...</code>"
This collects the diff info of your changed file into your local repo. Then "<code>mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p i2p.i2p</code>".
This synchronizes your local repo with the repo on the target machine.
<b>Git Workflow:</b>
You can then add all new and changed files to your next commit using <code>git add .</code> (or specify which files instead of the dot).
Please note the suggested workflow for git on our git-page.
{%- endtrans %}</li>
<li>{% trans -%}
@@ -169,14 +171,14 @@ If you have questions about the meaning of the terms in the console, ask in <cod
<h2>{% trans %}FAQ{% endtrans %}</h2>
<p><b>{% trans -%}
Q: Why do I have to install monotone, Java, jsp, learn about .po files and html, etc.? Why can't I just do a translation and email it to you?
Q: Why do I have to install git, Java, jsp, learn about .po files and html, etc.? Why can't I just do a translation and email it to you?
{%- endtrans %}</b></p>
<p><b>{% trans %}A: Several reasons:{% endtrans %}</b></p>
<p><b>{% trans %}A: You do not / Several reasons:{% endtrans %}</b></p>
<ul>
<li>{% trans transifex='https://www.transifex.com/projects/p/I2P/' -%}
You might be interested in translating via Transifex. Request to join a translation team <a href="{{ transifex }}">here</a>.
First of all: you don't have to, you can translate via Transifex (aka "using a web-site to translate"). Request to join a translation team <a href="{{ transifex }}">here</a>. Aside from that ...
{%- endtrans %}</li>
<li>{% trans -%}
@@ -200,7 +202,7 @@ HTML files are not difficult. Just ignore the html stuff and translate the text.
{%- endtrans %}</li>
<li>{% trans -%}
Installing and using monotone is not that difficult. Several of the translators and other contributors to I2P are non-programmers, and they use monotone regularly. Monotone is simply a source control system, it is not about "coding".
Installing and using git is not that difficult. Several of the translators and other contributors to I2P are non-programmers, and they use git regularly. Git is simply a source control system, it is not about "coding".
{%- endtrans %}</li>
<li>{% trans -%}

View File

@@ -3,8 +3,8 @@ Streaming Protocol Specification
================================
.. meta::
:category: Protocols
:lastupdated: 2022-04
:accuratefor: 0.9.53
:lastupdated: 2023-01
:accuratefor: 0.9.57
.. contents::
@@ -88,15 +88,15 @@ Framing is provided by the lower layers - I2CP and I2NP.
sendStreamId :: 4 byte `Integer`
Random number selected by the packet recipient before sending
the first SYN reply packet and constant for the life of the
connection. 0 in the SYN message sent by the connection
connection, greater than zero. 0 in the SYN message sent by the connection
originator, and in subsequent messages, until a SYN reply is
received, containing the peer's stream ID.
receiveStreamId :: 4 byte `Integer`
Random number selected by the packet originator before
sending the first SYN packet and constant for the life of
the connection. May be 0 if unknown, for example in a RESET
packet.
the connection, greater than zero.
May be 0 if unknown, for example in a RESET packet.
sequenceNum :: 4 byte `Integer`
The sequence for this message, starting at 0 in the SYN

View File

@@ -0,0 +1,63 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFllPP4BCAC00FYAOPuUWVbUcli+MY5U62AHhg3qXu2FMwdi4WJPP38e4Py1
bYXv3q8kgc4mq/wG2Y0KQtbpJ1sx4ZHv26Ipa2bZH6WyBX+hUc5tzXEe98kBjdXO
Pv/RYfUryhfsLpTdzaH0zvaC24gYxP3lpv046X91PvJ9nRgtgRrmGlFnybtDApeA
JEdY144EAqt3SVP/tMMGCmrM+0guaDR1N6iLNF0RdpLoplJ/8FrjCwIn7fvvx0gR
94anhYBkW3I33NMArQTFDf7blbw3LryVyHtH/3/xnbrQ8d3ISYy2CfP5l8pTNKQh
kaSi18O27fL5KS45VxPdt6IuApn0bEqYC8bbABEBAAG0I2V5ZWRlZWtheSA8ZXll
ZGVla2F5QHNhZmUtbWFpbC5uZXQ+iQFXBBMBCABBAhsDBQsJCAcCBhUICQoLAgQW
AgMBAh4BAheAAhkBFiEEcNIGBzi++AUjrK/311wDs5teFOEFAmPLXQMFCQpst4UA
CgkQ11wDs5teFOHuFgf+O22rvadtee/GqayKwrkEZ3SQ/jaJ4Az2fYdDR3Vy0Qx6
bRRyHu+9IWQrTsgNyRAiPdZszcKQLFdezW53wDzf+yF2J2loYpuKVkquOSbQVFqL
IA+0snPncllAU4cYISNzYULyG8PjwUz8/vBPoF223vaQebGA7PJJ9i8FdrFrH0IJ
dgt/zfW5i04xDfKO0kx6eZFjSUUSrWlCCDC1Ww+WkJEUZxyBf+iAevcMTEW/6Kwe
BMR8OEhlYUN58NKKB9foAbw9sDDM3dzuTc9zGYFBqIuCsfZ5asI4z4MJasP9PSbU
FtunqSgGpiyDWkdD3LfuBY1lrB6TRcM6qPUbaUzvHbQjZXllZGVla2F5IDxoYW5r
aGlsbDE5NTgwQGdtYWlsLmNvbT6JAVQEEwEKAD4CGwMFCwkIBwIGFQoJCAsCBBYC
AwECHgECF4AWIQRw0gYHOL74BSOsr/fXXAOzm14U4QUCY8tdAwUJCmy3hQAKCRDX
XAOzm14U4eayB/9vaGD0j1AkWAqqhwr003/MXEt+3Z7veDwmT5gECs3Of77XWmVx
ChW50cgj3uQpKdpozURK03vio3plsSf8Lci3Lg/SGSwoMy7ieLcsCek/D+/hUmCW
gISm2o9B17iYB2cI9uBDcFdTXQsZYvWaC82NArbczPwfKlziYpa5KmwO7m6VAB7b
MgOef6KynPZwoiE52kXb7RBs/3RgkDH9aVbKC6IDbsXYKksWPiIdlvEfq0eDsZKC
uW08dfwLb5HxLD0q2ZmZX2fCv2RpnkD9JKES5pf/G7lozDmfSiBsdvzUJrI1iEpP
6+00zEd6mV0WyJTbVOBhaFKJIAyLHYmuOgMgtClleWVkZWVrYXkgPHByb2JsZW1z
b2x2ZXJAb3Blbm1haWxib3gub3JnPokBVAQTAQgAPgIbAwULCQgHAgYVCAkKCwIE
FgIDAQIeAQIXgBYhBHDSBgc4vvgFI6yv99dcA7ObXhThBQJjy10DBQkKbLeFAAoJ
ENdcA7ObXhThmC0H/1cXZLyaI0l8uOzPMYpnnwEWZhdZZp7hAS0Ckmdmupp2IL+T
9dOyqYj7km+4siXkJ8x+MqA+gDkvJyE4m76Cxk4lypS4uEG9ItJtCtyK42uN/X+r
WOVBoBEKtK9SJP0tPSImZ2wwxX/s0UoDiIK/EIctk9LxnICchXteC2dWxXYPd+ts
MMqyebi7keAAFBlPGuZIxUxwlLN1Ea8k11l5FFLVNgclUrAp2KIQKks1VzbypwJn
JBOlpw3AG2Ywac9RF2lSk/ytuanXEXVs7OToACFmtOJF+6l/V7YLrd8DyvmGHFBC
Q7J396CWFJoVym7NrnfDpwPNwAYq5Bt1HwtWTEK0OmV5ZWRlZWtheSAoYWxpYXMg
Zm9yIGlka2kycEBpMnBtYWlsLm9yZykgPGlka2kycEBtYWlsLmkycD6JAVQEEwEK
AD4CGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRw0gYHOL74BSOsr/fXXAOz
m14U4QUCY8tdAwUJCmy3hQAKCRDXXAOzm14U4WY1B/0f0P8PjKYNdDxjwSoEmW2q
bbqSAjOGYZw6rZshcpbwiRY9XEhkgbucvDOFqtvKllXjquNUEc1nN2EFacqcspys
6aQh338H0rGBXazb0kbHMMpUizHasdUYQaS55abzrNDRwva44KXAbXUtFqCON3+z
Zun31IB2FOpENR+nceVp2TGormZHnniqeCq7zQ6duIoLuBRhqpBOLhRj3ntfTFxk
cIpCFpOyZ4mCrwigFd939o+qwoK6jNyiVe7FLx9zR9i+siOCVUxx+X7qQ8WAalCO
zPQTiykEQtx4jzXu2X/cGOmIjoc1KYYQzB+qW2n4iLmztw1KDLNKWzfsAxP4SCru
tDpleWVkZWVrYXkgKGFsaWFzIGZvciBpZGtpMnBAbWFpbC5pMnApIDxpZGtpMnBA
aTJwbWFpbC5vcmc+iQFUBBMBCgA+AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
FiEEcNIGBzi++AUjrK/311wDs5teFOEFAmPLXQMFCQpst4UACgkQ11wDs5teFOG3
2wf9FVqS+R0Rqmp7+ZbLZ1raKzEjtHu1U9vVWQ33KcJJ5Vzq5XDSu5gS5zOk0Wwv
YTx3RNiNyQcfCkYIi46QakuxE7IEwHFgCXfSM0I7hy5rvsXaNpwtYwTbMi7uukt6
+6bnGpsumsZPMaYlcBkErOQYj9M9kUeVk4ixFWr3Plve4Ki3yjWfdn8Nkn8qjDGt
oge/y8WPyR/f5fpfQZ5hAFEpwu3KakcFU8bzRnav5dery8yxkrUfckpNtQDxTMHc
HZ0RhXek+2S9HM/QlCetkIjBsY1o5M7JEjlsKug/uNRMrJ1NWZrvEyLsFS+Zk7Bl
hMepcy//0Hu2+dQn0Wcm4cLs4rkBDQRZZTz+AQgAuZSkn0lRHxkS3IhtXowYREQb
Qq9jIc51nYNvangbFTK4EoqzVHCP6eMFLr9RtbnxvDD8/VnT2KR2AWyK5qWIV/Zs
FsAShPzCKY5Taees2ZP5cV4CPQH5pJQq0tKfu97lKAkzYxtf/f5oKf+SMnLahTkn
VbsL4JBJjk/j3zM4uL0WGa6sEGf6S+AcSzzd1s1a9M21kbUwF7xFm+Nh+e8/vGT5
ZcKJW7ACsyhcNym9qsNNaO/SIqf9FenPsM7gXa78CzW0XH1DVSBoUbpnnzGt88kF
lBHCqXvqNrKRsMQzxJJWJJ1aAm4Z0COpOU7m6vtImootQjr0//QtISSupKQSewAR
AQABiQE8BBgBCAAmAhsMFiEEcNIGBzi++AUjrK/311wDs5teFOEFAl4SHx0FCQpQ
fJ8ACgkQ11wDs5teFOHLggf/VE7IZx5ZfhRCWAB31pu6ttpwVZ6vH268QlUyiMDj
Yt/XwG6zvNQooBFNfzsJNUNAToMkk17rpr/3/U1/e/Q91y+aThl2Z84OVRSqGfIB
gDBKM9J19dOGs/4sbowVWoHZ5vPjzGTMCjNEczW4Mqru9WdnlauFvcdVSvK1vMT5
sj/TEEqeNlTiKw5V9MQOTZzFyluvrhpAS2HwP8vq4yNRp/fD5Vbniodbf2M8IEDO
fBJ4dRmdf2LT3IsYM5sjvfaP6tahSNVkjReE107ZZfSopH0euJ72C1ZnxYLjUFM+
6HGvH/LHEo5KY/P3DRqA48Xro/6DQ2maqsiYcAw+H9/0wg==
=5V4x
-----END PGP PUBLIC KEY BLOCK-----