Your message dated Sat, 22 Oct 2022 10:00:11 +0000
with message-id <e1ombiz-00ecgf...@fasolo.debian.org>
and subject line Bug#997499: fixed in onionshare 2.5-1
has caused the Debian Bug report #997499,
regarding onionshare: FTBFS: dh_auto_test: error: pybuild --test --test-pytest 
-i python{version} -p 3.9 returned exit code 13
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
997499: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=997499
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: onionshare
Version: 2.2-3
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20211023 ftbfs-bookworm

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_auto_clean
> I: pybuild base:232: python3.9 setup.py clean 
> /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution 
> option: 'include_package_data'
>   warnings.warn(msg)
> running clean
> removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build' (and everything under 
> it)
> 'build/bdist.linux-x86_64' does not exist -- can't clean it
> 'build/scripts-3.9' does not exist -- can't clean it
> rm -rf *.egg-info
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>    dh_autoreconf_clean -O--buildsystem=pybuild
>    dh_clean -O--buildsystem=pybuild
>  dpkg-source -b .
> dpkg-source: info: using source format '3.0 (quilt)'
> dpkg-source: info: building onionshare using existing 
> ./onionshare_2.2.orig.tar.gz
> dpkg-source: info: using patch list from debian/patches/series
> dpkg-source: info: building onionshare in onionshare_2.2-3.debian.tar.xz
> dpkg-source: info: building onionshare in onionshare_2.2-3.dsc
>  debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:232: python3.9 setup.py config 
> /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution 
> option: 'include_package_data'
>   warnings.warn(msg)
> running config
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:232: /usr/bin/python3 setup.py build 
> /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution 
> option: 'include_package_data'
>   warnings.warn(msg)
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare
> copying onionshare/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare
> copying onionshare/strings.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare
> copying onionshare/common.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare
> copying onionshare/onion.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare
> copying onionshare/settings.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare
> copying onionshare/onionshare.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web
> copying onionshare/web/receive_mode.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web
> copying onionshare/web/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web
> copying onionshare/web/send_base_mode.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web
> copying onionshare/web/website_mode.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web
> copying onionshare/web/share_mode.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web
> copying onionshare/web/web.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/threads.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/widgets.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/update_checker.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/onionshare_gui.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/server_status.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/settings_dialog.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> copying onionshare_gui/tor_connection_dialog.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode
> copying onionshare_gui/mode/file_selection.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode
> copying onionshare_gui/mode/history.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode
> copying onionshare_gui/mode/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/share_mode
> copying onionshare_gui/mode/share_mode/threads.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/share_mode
> copying onionshare_gui/mode/share_mode/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/share_mode
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/receive_mode
> copying onionshare_gui/mode/receive_mode/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/receive_mode
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/website_mode
> copying onionshare_gui/mode/website_mode/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/website_mode
> running build_scripts
> creating build
> creating build/scripts-3.9
> copying and adjusting install/scripts/onionshare -> build/scripts-3.9
> copying and adjusting install/scripts/onionshare-gui -> build/scripts-3.9
> changing mode of build/scripts-3.9/onionshare from 644 to 755
> changing mode of build/scripts-3.9/onionshare-gui from 644 to 755
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:232: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; 
> python3.9 -m pytest tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>
> collected 290 items
> 
> tests/local_onionshare_401_public_mode_skips_ratelimit_test.py s         [  
> 0%]
> tests/local_onionshare_401_triggers_ratelimit_test.py s                  [  
> 0%]
> tests/local_onionshare_quitting_during_share_prompts_warning_test.py s   [  
> 1%]
> tests/local_onionshare_receive_mode_clear_all_button_test.py s           [  
> 1%]
> tests/local_onionshare_receive_mode_timer_test.py s                      [  
> 1%]
> tests/local_onionshare_receive_mode_upload_non_writable_dir_test.py s    [  
> 2%]
> tests/local_onionshare_receive_mode_upload_public_mode_non_writable_dir_test.py
>  s [  2%]
>                                                                          [  
> 2%]
> tests/local_onionshare_receive_mode_upload_public_mode_test.py s         [  
> 2%]
> tests/local_onionshare_receive_mode_upload_test.py s                     [  
> 3%]
> tests/local_onionshare_settings_dialog_legacy_tor_test.py s              [  
> 3%]
> tests/local_onionshare_settings_dialog_no_tor_test.py s                  [  
> 3%]
> tests/local_onionshare_settings_dialog_v3_tor_test.py s                  [  
> 4%]
> tests/local_onionshare_share_mode_autostart_and_autostop_timer_mismatch_test.py
>  s [  4%]
>                                                                          [  
> 4%]
> tests/local_onionshare_share_mode_autostart_timer_test.py s              [  
> 4%]
> tests/local_onionshare_share_mode_autostart_timer_too_short_test.py s    [  
> 5%]
> tests/local_onionshare_share_mode_cancel_share_test.py s                 [  
> 5%]
> tests/local_onionshare_share_mode_clear_all_button_test.py s             [  
> 5%]
> tests/local_onionshare_share_mode_download_public_mode_test.py s         [  
> 6%]
> tests/local_onionshare_share_mode_download_stay_open_test.py s           [  
> 6%]
> tests/local_onionshare_share_mode_download_test.py s                     [  
> 6%]
> tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py s [  
> 7%]
>                                                                          [  
> 7%]
> tests/local_onionshare_share_mode_individual_file_view_test.py s         [  
> 7%]
> tests/local_onionshare_share_mode_large_download_test.py s               [  
> 7%]
> tests/local_onionshare_share_mode_password_persistent_test.py s          [  
> 8%]
> tests/local_onionshare_share_mode_timer_test.py s                        [  
> 8%]
> tests/local_onionshare_share_mode_timer_too_short_test.py s              [  
> 8%]
> tests/local_onionshare_share_mode_unreadable_file_test.py s              [  
> 9%]
> tests/local_onionshare_website_mode_csp_enabled_test.py s                [  
> 9%]
> tests/local_onionshare_website_mode_test.py s                            [ 
> 10%]
> tests/onionshare_790_cancel_on_second_share_test.py s                    [ 
> 10%]
> tests/onionshare_receive_mode_upload_public_mode_test.py s               [ 
> 10%]
> tests/onionshare_receive_mode_upload_test.py s                           [ 
> 11%]
> tests/onionshare_share_mode_cancel_share_test.py s                       [ 
> 11%]
> tests/onionshare_share_mode_download_public_mode_test.py s               [ 
> 11%]
> tests/onionshare_share_mode_download_stay_open_test.py s                 [ 
> 12%]
> tests/onionshare_share_mode_download_test.py s                           [ 
> 12%]
> tests/onionshare_share_mode_persistent_test.py s                         [ 
> 12%]
> tests/onionshare_share_mode_stealth_test.py s                            [ 
> 13%]
> tests/onionshare_share_mode_timer_test.py s                              [ 
> 13%]
> tests/onionshare_share_mode_tor_connection_killed_test.py s              [ 
> 13%]
> tests/onionshare_share_mode_v2_onion_test.py s                           [ 
> 14%]
> tests/test_onionshare.py .......                                         [ 
> 16%]
> tests/test_onionshare_common.py ........................................ [ 
> 30%]
> .......................................................................  [ 
> 54%]
> tests/test_onionshare_settings.py ............                           [ 
> 58%]
> tests/test_onionshare_strings.py ....                                    [ 
> 60%]
> tests/test_onionshare_web.py FFFFFF..................................... [ 
> 75%]
> ........................................................................ 
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ___________________________ TestWeb.test_share_mode 
> ____________________________
> 
> self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb5108910>
> common_obj = <onionshare.common.Common object at 0x7f8bb5108c70>
> 
>     def test_share_mode(self, common_obj):
> >       web = web_obj(common_obj, "share", 3)
> 
> tests/test_onionshare_web.py:73: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_onionshare_web.py:48: in web_obj
>     web = Web(common_obj, False, mode)
> onionshare/web/web.py:77: in __init__
>     self.generate_static_url_path()
> onionshare/web/web.py:166: in generate_static_url_path
>     self.app.add_url_rule(
> /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func
>     return f(self, *args, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Flask 'onionshare.web.web'>
> rule = <Rule '/static_5pxhxfxveqsc6jbqkaeguaoi6q/<filename>' (GET, OPTIONS, 
> HEAD) -> static>
> endpoint = 'static'
> view_func = <bound method Scaffold.send_static_file of <Flask 
> 'onionshare.web.web'>>
> provide_automatic_options = True, options = {'endpoint': 'static'}
> methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'}
> old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4fdb430>
> 
>     @setupmethod
>     def add_url_rule(
>         self,
>         rule: str,
>         endpoint: t.Optional[str] = None,
>         view_func: t.Optional[t.Callable] = None,
>         provide_automatic_options: t.Optional[bool] = None,
>         **options: t.Any,
>     ) -> None:
>         if endpoint is None:
>             endpoint = _endpoint_from_view_func(view_func)  # type: ignore
>         options["endpoint"] = endpoint
>         methods = options.pop("methods", None)
>     
>         # if the methods are not given and the view_func object knows its
>         # methods we can use that instead.  If neither exists, we go with
>         # a tuple of only ``GET`` as default.
>         if methods is None:
>             methods = getattr(view_func, "methods", None) or ("GET",)
>         if isinstance(methods, str):
>             raise TypeError(
>                 "Allowed methods must be a list of strings, for"
>                 ' example: @app.route(..., methods=["POST"])'
>             )
>         methods = {item.upper() for item in methods}
>     
>         # Methods that should always be added
>         required_methods = set(getattr(view_func, "required_methods", ()))
>     
>         # starting with Flask 0.8 the view_func object can disable and
>         # force-enable the automatic options handling.
>         if provide_automatic_options is None:
>             provide_automatic_options = getattr(
>                 view_func, "provide_automatic_options", None
>             )
>     
>         if provide_automatic_options is None:
>             if "OPTIONS" not in methods:
>                 provide_automatic_options = True
>                 required_methods.add("OPTIONS")
>             else:
>                 provide_automatic_options = False
>     
>         # Add the required methods now.
>         methods |= required_methods
>     
>         rule = self.url_rule_class(rule, methods=methods, **options)
>         rule.provide_automatic_options = provide_automatic_options  # type: 
> ignore
>     
>         self.url_map.add(rule)
>         if view_func is not None:
>             old_func = self.view_functions.get(endpoint)
>             if old_func is not None and old_func != view_func:
> >               raise AssertionError(
>                     "View function mapping is overwriting an existing"
>                     f" endpoint function: {endpoint}"
>                 )
> E               AssertionError: View function mapping is overwriting an 
> existing endpoint function: static
> 
> /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError
> ____________ TestWeb.test_share_mode_close_after_first_download_on 
> _____________
> 
> self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f13d00>
> common_obj = <onionshare.common.Common object at 0x7f8bb4f13f10>
> temp_file_1024 = '/tmp/tmpqtr3117l'
> 
>     def test_share_mode_close_after_first_download_on(self, common_obj, 
> temp_file_1024):
> >       web = web_obj(common_obj, "share", 3)
> 
> tests/test_onionshare_web.py:98: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_onionshare_web.py:48: in web_obj
>     web = Web(common_obj, False, mode)
> onionshare/web/web.py:77: in __init__
>     self.generate_static_url_path()
> onionshare/web/web.py:166: in generate_static_url_path
>     self.app.add_url_rule(
> /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func
>     return f(self, *args, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Flask 'onionshare.web.web'>
> rule = <Rule '/static_azcqtqve565h7cv7rwm5smid6q/<filename>' (GET, OPTIONS, 
> HEAD) -> static>
> endpoint = 'static'
> view_func = <bound method Scaffold.send_static_file of <Flask 
> 'onionshare.web.web'>>
> provide_automatic_options = True, options = {'endpoint': 'static'}
> methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'}
> old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4f9df70>
> 
>     @setupmethod
>     def add_url_rule(
>         self,
>         rule: str,
>         endpoint: t.Optional[str] = None,
>         view_func: t.Optional[t.Callable] = None,
>         provide_automatic_options: t.Optional[bool] = None,
>         **options: t.Any,
>     ) -> None:
>         if endpoint is None:
>             endpoint = _endpoint_from_view_func(view_func)  # type: ignore
>         options["endpoint"] = endpoint
>         methods = options.pop("methods", None)
>     
>         # if the methods are not given and the view_func object knows its
>         # methods we can use that instead.  If neither exists, we go with
>         # a tuple of only ``GET`` as default.
>         if methods is None:
>             methods = getattr(view_func, "methods", None) or ("GET",)
>         if isinstance(methods, str):
>             raise TypeError(
>                 "Allowed methods must be a list of strings, for"
>                 ' example: @app.route(..., methods=["POST"])'
>             )
>         methods = {item.upper() for item in methods}
>     
>         # Methods that should always be added
>         required_methods = set(getattr(view_func, "required_methods", ()))
>     
>         # starting with Flask 0.8 the view_func object can disable and
>         # force-enable the automatic options handling.
>         if provide_automatic_options is None:
>             provide_automatic_options = getattr(
>                 view_func, "provide_automatic_options", None
>             )
>     
>         if provide_automatic_options is None:
>             if "OPTIONS" not in methods:
>                 provide_automatic_options = True
>                 required_methods.add("OPTIONS")
>             else:
>                 provide_automatic_options = False
>     
>         # Add the required methods now.
>         methods |= required_methods
>     
>         rule = self.url_rule_class(rule, methods=methods, **options)
>         rule.provide_automatic_options = provide_automatic_options  # type: 
> ignore
>     
>         self.url_map.add(rule)
>         if view_func is not None:
>             old_func = self.view_functions.get(endpoint)
>             if old_func is not None and old_func != view_func:
> >               raise AssertionError(
>                     "View function mapping is overwriting an existing"
>                     f" endpoint function: {endpoint}"
>                 )
> E               AssertionError: View function mapping is overwriting an 
> existing endpoint function: static
> 
> /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError
> ____________ TestWeb.test_share_mode_close_after_first_download_off 
> ____________
> 
> self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f7a550>
> common_obj = <onionshare.common.Common object at 0x7f8bb4f7a6d0>
> temp_file_1024 = '/tmp/tmpmcvgg74y'
> 
>     def test_share_mode_close_after_first_download_off(
>         self, common_obj, temp_file_1024
>     ):
> >       web = web_obj(common_obj, "share", 3)
> 
> tests/test_onionshare_web.py:115: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_onionshare_web.py:48: in web_obj
>     web = Web(common_obj, False, mode)
> onionshare/web/web.py:77: in __init__
>     self.generate_static_url_path()
> onionshare/web/web.py:166: in generate_static_url_path
>     self.app.add_url_rule(
> /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func
>     return f(self, *args, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Flask 'onionshare.web.web'>
> rule = <Rule '/static_4st7qaktxwgsvmuc5i5hqzxkbi/<filename>' (GET, OPTIONS, 
> HEAD) -> static>
> endpoint = 'static'
> view_func = <bound method Scaffold.send_static_file of <Flask 
> 'onionshare.web.web'>>
> provide_automatic_options = True, options = {'endpoint': 'static'}
> methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'}
> old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb50a8790>
> 
>     @setupmethod
>     def add_url_rule(
>         self,
>         rule: str,
>         endpoint: t.Optional[str] = None,
>         view_func: t.Optional[t.Callable] = None,
>         provide_automatic_options: t.Optional[bool] = None,
>         **options: t.Any,
>     ) -> None:
>         if endpoint is None:
>             endpoint = _endpoint_from_view_func(view_func)  # type: ignore
>         options["endpoint"] = endpoint
>         methods = options.pop("methods", None)
>     
>         # if the methods are not given and the view_func object knows its
>         # methods we can use that instead.  If neither exists, we go with
>         # a tuple of only ``GET`` as default.
>         if methods is None:
>             methods = getattr(view_func, "methods", None) or ("GET",)
>         if isinstance(methods, str):
>             raise TypeError(
>                 "Allowed methods must be a list of strings, for"
>                 ' example: @app.route(..., methods=["POST"])'
>             )
>         methods = {item.upper() for item in methods}
>     
>         # Methods that should always be added
>         required_methods = set(getattr(view_func, "required_methods", ()))
>     
>         # starting with Flask 0.8 the view_func object can disable and
>         # force-enable the automatic options handling.
>         if provide_automatic_options is None:
>             provide_automatic_options = getattr(
>                 view_func, "provide_automatic_options", None
>             )
>     
>         if provide_automatic_options is None:
>             if "OPTIONS" not in methods:
>                 provide_automatic_options = True
>                 required_methods.add("OPTIONS")
>             else:
>                 provide_automatic_options = False
>     
>         # Add the required methods now.
>         methods |= required_methods
>     
>         rule = self.url_rule_class(rule, methods=methods, **options)
>         rule.provide_automatic_options = provide_automatic_options  # type: 
> ignore
>     
>         self.url_map.add(rule)
>         if view_func is not None:
>             old_func = self.view_functions.get(endpoint)
>             if old_func is not None and old_func != view_func:
> >               raise AssertionError(
>                     "View function mapping is overwriting an existing"
>                     f" endpoint function: {endpoint}"
>                 )
> E               AssertionError: View function mapping is overwriting an 
> existing endpoint function: static
> 
> /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError
> __________________________ TestWeb.test_receive_mode 
> ___________________________
> 
> self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f76580>
> common_obj = <onionshare.common.Common object at 0x7f8bb4f76460>
> 
>     def test_receive_mode(self, common_obj):
> >       web = web_obj(common_obj, "receive")
> 
> tests/test_onionshare_web.py:129: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_onionshare_web.py:48: in web_obj
>     web = Web(common_obj, False, mode)
> onionshare/web/web.py:77: in __init__
>     self.generate_static_url_path()
> onionshare/web/web.py:166: in generate_static_url_path
>     self.app.add_url_rule(
> /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func
>     return f(self, *args, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Flask 'onionshare.web.web'>
> rule = <Rule '/static_7fxs6sxieg44my6jogsjngzjoi/<filename>' (GET, OPTIONS, 
> HEAD) -> static>
> endpoint = 'static'
> view_func = <bound method Scaffold.send_static_file of <Flask 
> 'onionshare.web.web'>>
> provide_automatic_options = True, options = {'endpoint': 'static'}
> methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'}
> old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4fdb790>
> 
>     @setupmethod
>     def add_url_rule(
>         self,
>         rule: str,
>         endpoint: t.Optional[str] = None,
>         view_func: t.Optional[t.Callable] = None,
>         provide_automatic_options: t.Optional[bool] = None,
>         **options: t.Any,
>     ) -> None:
>         if endpoint is None:
>             endpoint = _endpoint_from_view_func(view_func)  # type: ignore
>         options["endpoint"] = endpoint
>         methods = options.pop("methods", None)
>     
>         # if the methods are not given and the view_func object knows its
>         # methods we can use that instead.  If neither exists, we go with
>         # a tuple of only ``GET`` as default.
>         if methods is None:
>             methods = getattr(view_func, "methods", None) or ("GET",)
>         if isinstance(methods, str):
>             raise TypeError(
>                 "Allowed methods must be a list of strings, for"
>                 ' example: @app.route(..., methods=["POST"])'
>             )
>         methods = {item.upper() for item in methods}
>     
>         # Methods that should always be added
>         required_methods = set(getattr(view_func, "required_methods", ()))
>     
>         # starting with Flask 0.8 the view_func object can disable and
>         # force-enable the automatic options handling.
>         if provide_automatic_options is None:
>             provide_automatic_options = getattr(
>                 view_func, "provide_automatic_options", None
>             )
>     
>         if provide_automatic_options is None:
>             if "OPTIONS" not in methods:
>                 provide_automatic_options = True
>                 required_methods.add("OPTIONS")
>             else:
>                 provide_automatic_options = False
>     
>         # Add the required methods now.
>         methods |= required_methods
>     
>         rule = self.url_rule_class(rule, methods=methods, **options)
>         rule.provide_automatic_options = provide_automatic_options  # type: 
> ignore
>     
>         self.url_map.add(rule)
>         if view_func is not None:
>             old_func = self.view_functions.get(endpoint)
>             if old_func is not None and old_func != view_func:
> >               raise AssertionError(
>                     "View function mapping is overwriting an existing"
>                     f" endpoint function: {endpoint}"
>                 )
> E               AssertionError: View function mapping is overwriting an 
> existing endpoint function: static
> 
> /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError
> _________________________ TestWeb.test_public_mode_on 
> __________________________
> 
> self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4d9c5e0>
> common_obj = <onionshare.common.Common object at 0x7f8bb4d9cf10>
> 
>     def test_public_mode_on(self, common_obj):
> >       web = web_obj(common_obj, "receive")
> 
> tests/test_onionshare_web.py:149: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_onionshare_web.py:48: in web_obj
>     web = Web(common_obj, False, mode)
> onionshare/web/web.py:77: in __init__
>     self.generate_static_url_path()
> onionshare/web/web.py:166: in generate_static_url_path
>     self.app.add_url_rule(
> /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func
>     return f(self, *args, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Flask 'onionshare.web.web'>
> rule = <Rule '/static_esozljwz3ijwsxm2kdprh5ty7q/<filename>' (GET, OPTIONS, 
> HEAD) -> static>
> endpoint = 'static'
> view_func = <bound method Scaffold.send_static_file of <Flask 
> 'onionshare.web.web'>>
> provide_automatic_options = True, options = {'endpoint': 'static'}
> methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'}
> old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4fdba60>
> 
>     @setupmethod
>     def add_url_rule(
>         self,
>         rule: str,
>         endpoint: t.Optional[str] = None,
>         view_func: t.Optional[t.Callable] = None,
>         provide_automatic_options: t.Optional[bool] = None,
>         **options: t.Any,
>     ) -> None:
>         if endpoint is None:
>             endpoint = _endpoint_from_view_func(view_func)  # type: ignore
>         options["endpoint"] = endpoint
>         methods = options.pop("methods", None)
>     
>         # if the methods are not given and the view_func object knows its
>         # methods we can use that instead.  If neither exists, we go with
>         # a tuple of only ``GET`` as default.
>         if methods is None:
>             methods = getattr(view_func, "methods", None) or ("GET",)
>         if isinstance(methods, str):
>             raise TypeError(
>                 "Allowed methods must be a list of strings, for"
>                 ' example: @app.route(..., methods=["POST"])'
>             )
>         methods = {item.upper() for item in methods}
>     
>         # Methods that should always be added
>         required_methods = set(getattr(view_func, "required_methods", ()))
>     
>         # starting with Flask 0.8 the view_func object can disable and
>         # force-enable the automatic options handling.
>         if provide_automatic_options is None:
>             provide_automatic_options = getattr(
>                 view_func, "provide_automatic_options", None
>             )
>     
>         if provide_automatic_options is None:
>             if "OPTIONS" not in methods:
>                 provide_automatic_options = True
>                 required_methods.add("OPTIONS")
>             else:
>                 provide_automatic_options = False
>     
>         # Add the required methods now.
>         methods |= required_methods
>     
>         rule = self.url_rule_class(rule, methods=methods, **options)
>         rule.provide_automatic_options = provide_automatic_options  # type: 
> ignore
>     
>         self.url_map.add(rule)
>         if view_func is not None:
>             old_func = self.view_functions.get(endpoint)
>             if old_func is not None and old_func != view_func:
> >               raise AssertionError(
>                     "View function mapping is overwriting an existing"
>                     f" endpoint function: {endpoint}"
>                 )
> E               AssertionError: View function mapping is overwriting an 
> existing endpoint function: static
> 
> /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError
> _________________________ TestWeb.test_public_mode_off 
> _________________________
> 
> self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f7a070>
> common_obj = <onionshare.common.Common object at 0x7f8bb4f76700>
> 
>     def test_public_mode_off(self, common_obj):
> >       web = web_obj(common_obj, "receive")
> 
> tests/test_onionshare_web.py:159: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_onionshare_web.py:48: in web_obj
>     web = Web(common_obj, False, mode)
> onionshare/web/web.py:77: in __init__
>     self.generate_static_url_path()
> onionshare/web/web.py:166: in generate_static_url_path
>     self.app.add_url_rule(
> /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func
>     return f(self, *args, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Flask 'onionshare.web.web'>
> rule = <Rule '/static_xw6au6nmq6k5du364thvcy66tu/<filename>' (GET, OPTIONS, 
> HEAD) -> static>
> endpoint = 'static'
> view_func = <bound method Scaffold.send_static_file of <Flask 
> 'onionshare.web.web'>>
> provide_automatic_options = True, options = {'endpoint': 'static'}
> methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'}
> old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb50945e0>
> 
>     @setupmethod
>     def add_url_rule(
>         self,
>         rule: str,
>         endpoint: t.Optional[str] = None,
>         view_func: t.Optional[t.Callable] = None,
>         provide_automatic_options: t.Optional[bool] = None,
>         **options: t.Any,
>     ) -> None:
>         if endpoint is None:
>             endpoint = _endpoint_from_view_func(view_func)  # type: ignore
>         options["endpoint"] = endpoint
>         methods = options.pop("methods", None)
>     
>         # if the methods are not given and the view_func object knows its
>         # methods we can use that instead.  If neither exists, we go with
>         # a tuple of only ``GET`` as default.
>         if methods is None:
>             methods = getattr(view_func, "methods", None) or ("GET",)
>         if isinstance(methods, str):
>             raise TypeError(
>                 "Allowed methods must be a list of strings, for"
>                 ' example: @app.route(..., methods=["POST"])'
>             )
>         methods = {item.upper() for item in methods}
>     
>         # Methods that should always be added
>         required_methods = set(getattr(view_func, "required_methods", ()))
>     
>         # starting with Flask 0.8 the view_func object can disable and
>         # force-enable the automatic options handling.
>         if provide_automatic_options is None:
>             provide_automatic_options = getattr(
>                 view_func, "provide_automatic_options", None
>             )
>     
>         if provide_automatic_options is None:
>             if "OPTIONS" not in methods:
>                 provide_automatic_options = True
>                 required_methods.add("OPTIONS")
>             else:
>                 provide_automatic_options = False
>     
>         # Add the required methods now.
>         methods |= required_methods
>     
>         rule = self.url_rule_class(rule, methods=methods, **options)
>         rule.provide_automatic_options = provide_automatic_options  # type: 
> ignore
>     
>         self.url_map.add(rule)
>         if view_func is not None:
>             old_func = self.view_functions.get(endpoint)
>             if old_func is not None and old_func != view_func:
> >               raise AssertionError(
>                     "View function mapping is overwriting an existing"
>                     f" endpoint function: {endpoint}"
>                 )
> E               AssertionError: View function mapping is overwriting an 
> existing endpoint function: static
> 
> /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError
> =============================== warnings summary 
> ===============================
> onionshare/settings.py:179
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/settings.py:179: 
> DeprecationWarning: invalid escape sequence \O
>     return os.path.expanduser("~\OnionShare")
> 
> tests/conftest.py:55
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:55: 
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
>   Use @pytest.fixture instead; they are the same.
>     def temp_dir_1024_delete():
> 
> tests/conftest.py:79
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:79: 
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
>   Use @pytest.fixture instead; they are the same.
>     def temp_file_1024_delete():
> 
> tests/conftest.py:92
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:92: 
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
>   Use @pytest.fixture instead; they are the same.
>     @pytest.yield_fixture(scope="session")
> 
> tests/conftest.py:105
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:105: 
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
>   Use @pytest.fixture instead; they are the same.
>     @pytest.yield_fixture(scope="session")
> 
> onionshare_gui/settings_dialog.py:1423
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/settings_dialog.py:1423:
>  DeprecationWarning: invalid escape sequence \s
>     
> "(obfs4\s+)?(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):([0-9]+)(\s+)([A-Z0-9]+)(.+)$"
> 
> onionshare_gui/settings_dialog.py:1426
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/settings_dialog.py:1426:
>  DeprecationWarning: invalid escape sequence \s
>     
> "(obfs4\s+)?\[(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\]:[0-9]+\s+[A-Z0-9]+(.+)$"
> 
> onionshare_gui/settings_dialog.py:1429
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/settings_dialog.py:1429:
>  DeprecationWarning: invalid escape sequence \s
>     
> "(meek_lite)(\s)+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+)(\s)+([0-9A-Z]+)(\s)+url=(.+)(\s)+front=(.+)"
> 
> tests/local_onionshare_401_public_mode_skips_ratelimit_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_401_public_mode_skips_ratelimit_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_401_triggers_ratelimit_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_401_triggers_ratelimit_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_quitting_during_share_prompts_warning_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_quitting_during_share_prompts_warning_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_receive_mode_clear_all_button_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_clear_all_button_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_receive_mode_timer_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_timer_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_receive_mode_upload_non_writable_dir_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_non_writable_dir_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_receive_mode_upload_public_mode_non_writable_dir_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_public_mode_non_writable_dir_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_receive_mode_upload_public_mode_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_public_mode_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_receive_mode_upload_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_settings_dialog_legacy_tor_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_settings_dialog_legacy_tor_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_settings_dialog_no_tor_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_settings_dialog_no_tor_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_settings_dialog_v3_tor_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_settings_dialog_v3_tor_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_autostart_and_autostop_timer_mismatch_test.py:22
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_autostart_and_autostop_timer_mismatch_test.py:22:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_autostart_timer_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_autostart_timer_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_autostart_timer_too_short_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_autostart_timer_too_short_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_cancel_share_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_cancel_share_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_clear_all_button_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_clear_all_button_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_download_public_mode_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_download_public_mode_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_download_stay_open_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_download_stay_open_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_download_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_download_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_individual_file_view_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_individual_file_view_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_large_download_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_large_download_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_password_persistent_test.py:23
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_password_persistent_test.py:23:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_timer_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_timer_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_timer_too_short_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_timer_too_short_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_share_mode_unreadable_file_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_unreadable_file_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_website_mode_csp_enabled_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_website_mode_csp_enabled_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/local_onionshare_website_mode_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_website_mode_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_790_cancel_on_second_share_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_790_cancel_on_second_share_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_790_cancel_on_second_share_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_790_cancel_on_second_share_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_receive_mode_upload_public_mode_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_public_mode_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_receive_mode_upload_public_mode_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_public_mode_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_receive_mode_upload_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_receive_mode_upload_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_cancel_share_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_cancel_share_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_cancel_share_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_cancel_share_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_download_public_mode_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_public_mode_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_download_public_mode_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_public_mode_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_download_stay_open_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_stay_open_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_download_stay_open_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_stay_open_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_download_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_download_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_persistent_test.py:24
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_persistent_test.py:24:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_persistent_test.py:25
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_persistent_test.py:25:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_stealth_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_stealth_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_stealth_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_stealth_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_timer_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_timer_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_timer_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_timer_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_tor_connection_killed_test.py:14
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_tor_connection_killed_test.py:14:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_tor_connection_killed_test.py:15
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_tor_connection_killed_test.py:15:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> tests/onionshare_share_mode_v2_onion_test.py:18
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_v2_onion_test.py:18:
>  PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.gui
> 
> tests/onionshare_share_mode_v2_onion_test.py:19
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_v2_onion_test.py:19:
>  PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo?  You can 
> register custom marks to avoid this warning - for details, see 
> https://docs.pytest.org/en/stable/mark.html
>     @pytest.mark.tor
> 
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info 
> ============================
> FAILED tests/test_onionshare_web.py::TestWeb::test_share_mode - 
> AssertionErro...
> FAILED 
> tests/test_onionshare_web.py::TestWeb::test_share_mode_close_after_first_download_on
> FAILED 
> tests/test_onionshare_web.py::TestWeb::test_share_mode_close_after_first_download_off
> FAILED tests/test_onionshare_web.py::TestWeb::test_receive_mode - 
> AssertionEr...
> FAILED tests/test_onionshare_web.py::TestWeb::test_public_mode_on - 
> Assertion...
> FAILED tests/test_onionshare_web.py::TestWeb::test_public_mode_off - 
> Assertio...
> ============ 6 failed, 243 passed, 41 skipped, 61 warnings in 0.85s 
> ============
> E: pybuild pybuild:354: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 
> returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2021/10/23/onionshare_2.2-3_unstable.log

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

--- End Message ---
--- Begin Message ---
Source: onionshare
Source-Version: 2.5-1
Done: Clément Hermann <nod...@debian.org>

We believe that the bug you reported is fixed in the latest version of
onionshare, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 997...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Clément Hermann <nod...@debian.org> (supplier of updated onionshare package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Fri, 21 Oct 2022 12:44:10 +0200
Source: onionshare
Binary: onionshare onionshare-cli
Architecture: source all
Version: 2.5-1
Distribution: unstable
Urgency: medium
Maintainer: Debian Privacy Tools Maintainers 
<pkg-privacy-maintain...@lists.alioth.debian.org>
Changed-By: Clément Hermann <nod...@debian.org>
Description:
 onionshare - Share a file over Tor Hidden Services anonymously and securely
 onionshare-cli - Share a file over Tor Hidden Services anonymously and 
securely -
Closes: 965088 965150 997499 998402 1004375 1018428
Changes:
 onionshare (2.5-1) unstable; urgency=medium
 .
   [ Ulrike Uhlig ]
   * New upstream version.
   * Remove myself from uploaders
 .
   [ Clément Hermann ]
   * New upstream version 2.4
   * Remove obsolete patch for cryptodome
   * Update debian/rules to follow upstream changes
   * d/control: Reorder Build-depends, add some missing ones for tests
   * Add a patch to use pytest-3 instead of just pytest
 .
   [ Sandro Knauß ]
   * New upstream release 2.5 (Closes: #965150, #998402, #965088, #997499)
   * Update copyright for 2.5.
   * Update Build-Depends.
   * Remove python3-nose from build-deps. (Closes: 1018428)
   * Switch to pybuild pyproject plugin
     (to detect python dependencies automatically).
   * Built cli/desktop in two different packages.
   * Give pybuild the missing dependency information.
   * Do not complain about missing-source for the actual source ;)
   * Update manpages for 2.5 version.
   * Add patch to work with Flask version in Debian.
   * Recommend obfs4proxy instead of Depend (Closes: #1004375)
   * Enable Salsa CI.
   * remove not needed patch
   * Fix cli tests and mark gui tests to not fail the build.
   * Replace minified javascript with a known version.
   * Update copyright file.
   * Fix copyright name for debian files.
   * Add autopkgtests.
   * resort copyright file correctly.
   * Move resources files to /usr/share
   * Add lintian-overrides.
 .
   [ Clément Hermann ]
   * d/copyright: Update http urls to https ones
   * d/upstream/metadata: update URLs
   * Requires python3-stem >= 1.8.1 to allow v3 onion service client
     authorization
   * bump compat level to recommended version (13)
   * Declare compliance with Standards-Version 4.6.1
Checksums-Sha1:
 5aeb283f4662692a361412992b0cfcee898cdf49 2734 onionshare_2.5-1.dsc
 e8840ce7f40afb18e5baa9771e3519b2f6c5c4ef 6585296 onionshare_2.5.orig.tar.gz
 5c671fdf1e0a7655660723d815e7c7fca211b0c2 111244 onionshare_2.5-1.debian.tar.xz
 54d7c78f28c0b6f15b2177521045591167d8240a 139340 onionshare-cli_2.5-1_all.deb
 ae13d4035574d3975b8d2403966a72ad9fbaf6ab 614168 onionshare_2.5-1_all.deb
 87c00cdb85bed2e6350d002389294a6d95db532f 14338 onionshare_2.5-1_amd64.buildinfo
Checksums-Sha256:
 f01a976b6d3b0ba7e806865573f540b008953c9f327d94f530650edd5aaff52f 2734 
onionshare_2.5-1.dsc
 a1de4b43f6e1edbb39a6fcc1e1339856c7c7584d2899312d69449ad22f2834e7 6585296 
onionshare_2.5.orig.tar.gz
 fc3349ffae5ac9920cddae2d656226ba9a1cdd9e3ddd009d176c512e6ada84c6 111244 
onionshare_2.5-1.debian.tar.xz
 386d3f81f730dc797685492275182976c3e9343eed78af5f7224019d0740070f 139340 
onionshare-cli_2.5-1_all.deb
 d54a19c01878353cae52b2b14e1de6a9b4d5f0be8b2c60cef6a5f042fade8a30 614168 
onionshare_2.5-1_all.deb
 124b8d8845120d7c31b2c04a541eaae673ba18cb793f83bf7a7a32a367ecee1f 14338 
onionshare_2.5-1_amd64.buildinfo
Files:
 82c54406be1445c95a382fe6538ffc53 2734 net optional onionshare_2.5-1.dsc
 e3589c2c6acbf4044122608ebde10e32 6585296 net optional 
onionshare_2.5.orig.tar.gz
 64265d2e20f96c3c224a827c3b7a0c78 111244 net optional 
onionshare_2.5-1.debian.tar.xz
 f200737b25e36b05358f6f03647c21bc 139340 net optional 
onionshare-cli_2.5-1_all.deb
 32908219a7d5c3b46e729d6d34da271c 614168 net optional onionshare_2.5-1_all.deb
 12cc258ef9d4f80413d688595bf760d1 14338 net optional 
onionshare_2.5-1_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEboF7OBIOe73fYj9R2KOaUw8NzMsFAmNSe9MACgkQ2KOaUw8N
zMsW9Q/8D3YjIvfrhSkUKFPOCWMIGjZ4zG74fYWtD9ARp4zfswGtHChvvxKMdkxe
R7GE/q3pIqqcv4OrzQSuR45nozDjQGpxDWhq+j0mlZHuAL7cXN4GoAM54zUIXzZx
2v2mBNpH40VGU0X8Qtk7JTkPCpQT0ruEh/i0vMbecIxL2ODy6QqJalvLGZvDkJXz
nMIgMHozGyUlRiqIA3L23kmNbgfQk0xGStnodfvYGkSsKKFLsBvvFJo1XWVVO/FA
IQtwWbsQDGWeRA0Of+z5RFPP8H5MfOCJBBWcNFB+3Shc7Oj6zXUKhKk5I6IfQBO8
EDnEd170LPw2C2jKNTfLxLa5kH9XIjJnFbiIiw+MpdJ8GUt3MXl0RAbi1CS0zqVU
x6SaprAWvkX2fh/UQCNG1KtiGxLZ2JprewzBLOq/jtkp8KIKAHkStQaxy4y8niym
cQxzEe6OP+Qcqc/gvsA3o8I7rmgmoTGpOreFcLtgb+zAPdizxzDNd4tFa1KPL2zY
qj0n6+slLsxjmqlf30LzYtd3Vrsp65CMah7EpHL6KVfodWDjgo2bSkeHSjlSq2AI
WNRF0zOITMPD5xic4wQoQom8bz+FQTeYZFzjzaFJCMgezUw8TAHgJdYaP/lI8T2t
F53zzoS7BBaOQUdfJ9Drbb3s8y8QMWi8u3glSlQyPbPK63Alq6Q=
=9qXK
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to