2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/cfb18b939f74/
Changeset: cfb18b939f74
Branch: next-stable
User: dan
Date: 2013-03-22 19:23:24
Summary: Fix for average_rating in repository_review.
Affected #: 1 file
diff -r fc236ecff8ecd8864dee797e9a70ec800e63948d -r cfb18b939f74aaa97c277e172aee5a8e0f24b55e lib/galaxy/webapps/tool_shed/controllers/repository_review.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository_review.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository_review.py
@@ -320,7 +320,8 @@
trans.model.ComponentReview.table.c.deleted == False,
trans.model.ComponentReview.table.c.approved != trans.model.ComponentReview.approved_states.NA ) ) \
.scalar()
- review.rating = int( average_rating )
+ if average_rating is not None:
+ review.rating = int( average_rating )
trans.sa_session.add( review )
trans.sa_session.flush()
# Update the information in components_dict.
https://bitbucket.org/galaxy/galaxy-central/commits/b45e7e2cf125/
Changeset: b45e7e2cf125
User: dan
Date: 2013-03-22 19:23:24
Summary: Fix for average_rating in repository_review.
Affected #: 1 file
diff -r c923439d8226f292160faf04b1c66a6baa2450af -r b45e7e2cf125642efcbbcb112778a44f64de4ec2 lib/galaxy/webapps/tool_shed/controllers/repository_review.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository_review.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository_review.py
@@ -320,7 +320,8 @@
trans.model.ComponentReview.table.c.deleted == False,
trans.model.ComponentReview.table.c.approved != trans.model.ComponentReview.approved_states.NA ) ) \
.scalar()
- review.rating = int( average_rating )
+ if average_rating is not None:
+ review.rating = int( average_rating )
trans.sa_session.add( review )
trans.sa_session.flush()
# Update the information in components_dict.
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c923439d8226/
Changeset: c923439d8226
User: dan
Date: 2013-03-22 17:33:10
Summary: Add some comments to the new-style display applications module.
Affected #: 2 files
diff -r 49c09e9f8c8b97ca37ddf484efe4a539c7bbf9cc -r c923439d8226f292160faf04b1c66a6baa2450af lib/galaxy/datatypes/display_applications/__init__.py
--- a/lib/galaxy/datatypes/display_applications/__init__.py
+++ b/lib/galaxy/datatypes/display_applications/__init__.py
@@ -1,1 +1,3 @@
-
+"""
+Contains functionality of the newer XML defined external display applications (not hardcoded into datatype classes).
+"""
diff -r 49c09e9f8c8b97ca37ddf484efe4a539c7bbf9cc -r c923439d8226f292160faf04b1c66a6baa2450af lib/galaxy/datatypes/display_applications/link_generator.py
--- a/lib/galaxy/datatypes/display_applications/link_generator.py
+++ b/lib/galaxy/datatypes/display_applications/link_generator.py
@@ -1,8 +1,11 @@
-"""Classes to generate links for display applications.
+"""Classes to generate links for old-style display applications.
Separating Transaction based elements of display applications from datatypes.
"""
+#FIXME: The code contained within this file is for old-style display applications, but
+#this module namespace is intended to only handle the new-style display applications.
+
import urllib
# for the url_for hack
@@ -19,6 +22,8 @@
#TODO: these could be extended to handle file_function and parse/contain the builds.txt files
+#HACK: these duplicate functionality from the individual datatype classes themselves
+
def get_display_app_link_generator( display_app_name ):
"""Returns an instance of the proper link generator class
based on the display_app_name or DisplayAppLinkGenerator
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
5 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c78e28a5f748/
Changeset: c78e28a5f748
Branch: stable
User: dan
Date: 2013-03-22 17:23:05
Summary: Do not display old-style display links in server-side history when they are disabled.
Affected #: 1 file
diff -r c0a665a31e9160fa344255d6f3fe22a0ab2b6a6f -r c78e28a5f748e16b0a168d36ba55e5625f322548 lib/galaxy/datatypes/data.py
--- a/lib/galaxy/datatypes/data.py
+++ b/lib/galaxy/datatypes/data.py
@@ -437,12 +437,12 @@
apply anyway.
"""
try:
- if type in self.get_display_types():
+ if app.config.enable_old_display_applications and type in self.get_display_types():
return target_frame, getattr ( self, self.supported_display_apps[type]['links_function'] ) ( dataset, type, app, base_url, **kwd )
except:
log.exception( 'Function %s is referred to in datatype %s for generating links for type %s, but is not accessible' \
% ( self.supported_display_apps[type]['links_function'], self.__class__.__name__, type ) )
- return []
+ return target_frame, []
def get_converter_types(self, original_dataset, datatypes_registry):
"""Returns available converters by type for this dataset"""
return datatypes_registry.get_converters_by_datatype(original_dataset.ext)
https://bitbucket.org/galaxy/galaxy-central/commits/12b05ec9d3de/
Changeset: 12b05ec9d3de
Branch: next-stable
User: dan
Date: 2013-03-22 17:23:05
Summary: Do not display old-style display links in server-side history when they are disabled.
Affected #: 1 file
diff -r 66c67f015f9e8beb1bfaf4365bdaeb41d9090fe2 -r 12b05ec9d3de16202bb3005c39d61b6d643bfdcb lib/galaxy/datatypes/data.py
--- a/lib/galaxy/datatypes/data.py
+++ b/lib/galaxy/datatypes/data.py
@@ -448,12 +448,12 @@
apply anyway.
"""
try:
- if type in self.get_display_types():
+ if app.config.enable_old_display_applications and type in self.get_display_types():
return target_frame, getattr ( self, self.supported_display_apps[type]['links_function'] ) ( dataset, type, app, base_url, **kwd )
except:
log.exception( 'Function %s is referred to in datatype %s for generating links for type %s, but is not accessible' \
% ( self.supported_display_apps[type]['links_function'], self.__class__.__name__, type ) )
- return []
+ return target_frame, []
def get_converter_types(self, original_dataset, datatypes_registry):
"""Returns available converters by type for this dataset"""
return datatypes_registry.get_converters_by_datatype(original_dataset.ext)
https://bitbucket.org/galaxy/galaxy-central/commits/6701d9bb937e/
Changeset: 6701d9bb937e
User: dan
Date: 2013-03-22 17:23:05
Summary: Do not display old-style display links in server-side history when they are disabled.
Affected #: 1 file
diff -r 56799709a0f35d1f5cde0aa8f38939eafea98294 -r 6701d9bb937e488ac9797d14ad81ef1ced48cd41 lib/galaxy/datatypes/data.py
--- a/lib/galaxy/datatypes/data.py
+++ b/lib/galaxy/datatypes/data.py
@@ -448,12 +448,12 @@
apply anyway.
"""
try:
- if type in self.get_display_types():
+ if app.config.enable_old_display_applications and type in self.get_display_types():
return target_frame, getattr ( self, self.supported_display_apps[type]['links_function'] ) ( dataset, type, app, base_url, **kwd )
except:
log.exception( 'Function %s is referred to in datatype %s for generating links for type %s, but is not accessible' \
% ( self.supported_display_apps[type]['links_function'], self.__class__.__name__, type ) )
- return []
+ return target_frame, []
def get_converter_types(self, original_dataset, datatypes_registry):
"""Returns available converters by type for this dataset"""
return datatypes_registry.get_converters_by_datatype(original_dataset.ext)
https://bitbucket.org/galaxy/galaxy-central/commits/fc236ecff8ec/
Changeset: fc236ecff8ec
Branch: next-stable
User: dan
Date: 2013-03-22 17:26:03
Summary: Do not display old-style display links in client-side history when they are disabled.
Affected #: 1 file
diff -r 12b05ec9d3de16202bb3005c39d61b6d643bfdcb -r fc236ecff8ecd8864dee797e9a70ec800e63948d lib/galaxy/web/base/controller.py
--- a/lib/galaxy/web/base/controller.py
+++ b/lib/galaxy/web/base/controller.py
@@ -394,6 +394,8 @@
def get_old_display_applications( self, trans, hda ):
display_apps = []
+ if not trans.app.config.enable_old_display_applications:
+ return display_apps
for display_app_name in hda.datatype.get_display_types():
link_generator = get_display_app_link_generator( display_app_name )
display_links = link_generator.generate_links( trans, hda )
https://bitbucket.org/galaxy/galaxy-central/commits/49c09e9f8c8b/
Changeset: 49c09e9f8c8b
User: dan
Date: 2013-03-22 17:26:03
Summary: Do not display old-style display links in client-side history when they are disabled.
Affected #: 1 file
Diff not available.
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
3 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c0a665a31e91/
Changeset: c0a665a31e91
Branch: stable
User: dan
Date: 2013-03-22 16:43:42
Summary: Allow old-style display applications to be disabled.
Affected #: 3 files
diff -r 779b54139013946613772d02a3fbb61e067f3267 -r c0a665a31e9160fa344255d6f3fe22a0ab2b6a6f lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -141,6 +141,7 @@
self.log_actions = string_as_bool( kwargs.get( 'log_actions', 'False' ) )
self.log_events = string_as_bool( kwargs.get( 'log_events', 'False' ) )
self.sanitize_all_html = string_as_bool( kwargs.get( 'sanitize_all_html', True ) )
+ self.enable_old_display_applications = string_as_bool( kwargs.get( "enable_old_display_applications", "True" ) )
self.ucsc_display_sites = kwargs.get( 'ucsc_display_sites', "main,test,archaea,ucla" ).lower().split(",")
self.gbrowse_display_sites = kwargs.get( 'gbrowse_display_sites', "modencode,sgd_yeast,tair,wormbase,wormbase_ws120,wormbase_ws140,wormbase_ws170,wormbase_ws180,wormbase_ws190,wormbase_ws200,wormbase_ws204,wormbase_ws210,wormbase_ws220,wormbase_ws225" ).lower().split(",")
self.genetrack_display_sites = kwargs.get( 'genetrack_display_sites', "main,test" ).lower().split(",")
diff -r 779b54139013946613772d02a3fbb61e067f3267 -r c0a665a31e9160fa344255d6f3fe22a0ab2b6a6f lib/galaxy/webapps/galaxy/controllers/dataset.py
--- a/lib/galaxy/webapps/galaxy/controllers/dataset.py
+++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py
@@ -700,6 +700,8 @@
@web.expose
def display_at( self, trans, dataset_id, filename=None, **kwd ):
"""Sets up a dataset permissions so it is viewable at an external site"""
+ if not trans.app.config.enable_old_display_applications:
+ return trans.show_error_message( "This method of accessing external display applications has been disabled by a Galaxy administrator." )
site = filename
data = trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( dataset_id )
if not data:
diff -r 779b54139013946613772d02a3fbb61e067f3267 -r c0a665a31e9160fa344255d6f3fe22a0ab2b6a6f universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample
+++ b/universe_wsgi.ini.sample
@@ -247,6 +247,16 @@
# them).
#display_servers = hgw1.cse.ucsc.edu,hgw2.cse.ucsc.edu,hgw3.cse.ucsc.edu,hgw4.cse.ucsc.edu,hgw…
+# To disable the old-style display applications that are hardcoded into datatype classes,
+# set enable_old_display_applications = False.
+# This may be desirable due to using the new-style, XML-defined, display applications that
+# have been defined for many of the datatypes that have the old-style.
+# There is also a potential security concern with the old-style applications,
+# where a malicious party could provide a link that appears to reference the Galaxy server,
+# but contains a redirect to a third-party server, tricking a Galaxy user to access said
+# site.
+#enable_old_display_applications = True
+
# -- Next gen LIMS interface on top of existing Galaxy Sample/Request management code.
use_nglims = False
https://bitbucket.org/galaxy/galaxy-central/commits/66c67f015f9e/
Changeset: 66c67f015f9e
Branch: next-stable
User: dan
Date: 2013-03-22 16:43:42
Summary: Allow old-style display applications to be disabled.
Affected #: 3 files
diff -r 3bbbcdb044afdbd380d6cd4c0f721ab7262c5555 -r 66c67f015f9e8beb1bfaf4365bdaeb41d9090fe2 lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -151,6 +151,7 @@
self.log_actions = string_as_bool( kwargs.get( 'log_actions', 'False' ) )
self.log_events = string_as_bool( kwargs.get( 'log_events', 'False' ) )
self.sanitize_all_html = string_as_bool( kwargs.get( 'sanitize_all_html', True ) )
+ self.enable_old_display_applications = string_as_bool( kwargs.get( "enable_old_display_applications", "True" ) )
self.ucsc_display_sites = kwargs.get( 'ucsc_display_sites', "main,test,archaea,ucla" ).lower().split(",")
self.gbrowse_display_sites = kwargs.get( 'gbrowse_display_sites', "modencode,sgd_yeast,tair,wormbase,wormbase_ws120,wormbase_ws140,wormbase_ws170,wormbase_ws180,wormbase_ws190,wormbase_ws200,wormbase_ws204,wormbase_ws210,wormbase_ws220,wormbase_ws225" ).lower().split(",")
self.brand = kwargs.get( 'brand', None )
diff -r 3bbbcdb044afdbd380d6cd4c0f721ab7262c5555 -r 66c67f015f9e8beb1bfaf4365bdaeb41d9090fe2 lib/galaxy/webapps/galaxy/controllers/dataset.py
--- a/lib/galaxy/webapps/galaxy/controllers/dataset.py
+++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py
@@ -697,6 +697,8 @@
@web.expose
def display_at( self, trans, dataset_id, filename=None, **kwd ):
"""Sets up a dataset permissions so it is viewable at an external site"""
+ if not trans.app.config.enable_old_display_applications:
+ return trans.show_error_message( "This method of accessing external display applications has been disabled by a Galaxy administrator." )
site = filename
data = trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( dataset_id )
if not data:
diff -r 3bbbcdb044afdbd380d6cd4c0f721ab7262c5555 -r 66c67f015f9e8beb1bfaf4365bdaeb41d9090fe2 universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample
+++ b/universe_wsgi.ini.sample
@@ -247,6 +247,16 @@
# them).
#display_servers = hgw1.cse.ucsc.edu,hgw2.cse.ucsc.edu,hgw3.cse.ucsc.edu,hgw4.cse.ucsc.edu,hgw…
+# To disable the old-style display applications that are hardcoded into datatype classes,
+# set enable_old_display_applications = False.
+# This may be desirable due to using the new-style, XML-defined, display applications that
+# have been defined for many of the datatypes that have the old-style.
+# There is also a potential security concern with the old-style applications,
+# where a malicious party could provide a link that appears to reference the Galaxy server,
+# but contains a redirect to a third-party server, tricking a Galaxy user to access said
+# site.
+#enable_old_display_applications = True
+
# -- Next gen LIMS interface on top of existing Galaxy Sample/Request management code.
use_nglims = False
https://bitbucket.org/galaxy/galaxy-central/commits/56799709a0f3/
Changeset: 56799709a0f3
User: dan
Date: 2013-03-22 16:43:42
Summary: Allow old-style display applications to be disabled.
Affected #: 3 files
diff -r d629a346b859c91ba0da27f865952580d1054d80 -r 56799709a0f35d1f5cde0aa8f38939eafea98294 lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -151,6 +151,7 @@
self.log_actions = string_as_bool( kwargs.get( 'log_actions', 'False' ) )
self.log_events = string_as_bool( kwargs.get( 'log_events', 'False' ) )
self.sanitize_all_html = string_as_bool( kwargs.get( 'sanitize_all_html', True ) )
+ self.enable_old_display_applications = string_as_bool( kwargs.get( "enable_old_display_applications", "True" ) )
self.ucsc_display_sites = kwargs.get( 'ucsc_display_sites', "main,test,archaea,ucla" ).lower().split(",")
self.gbrowse_display_sites = kwargs.get( 'gbrowse_display_sites', "modencode,sgd_yeast,tair,wormbase,wormbase_ws120,wormbase_ws140,wormbase_ws170,wormbase_ws180,wormbase_ws190,wormbase_ws200,wormbase_ws204,wormbase_ws210,wormbase_ws220,wormbase_ws225" ).lower().split(",")
self.brand = kwargs.get( 'brand', None )
diff -r d629a346b859c91ba0da27f865952580d1054d80 -r 56799709a0f35d1f5cde0aa8f38939eafea98294 lib/galaxy/webapps/galaxy/controllers/dataset.py
--- a/lib/galaxy/webapps/galaxy/controllers/dataset.py
+++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py
@@ -697,6 +697,8 @@
@web.expose
def display_at( self, trans, dataset_id, filename=None, **kwd ):
"""Sets up a dataset permissions so it is viewable at an external site"""
+ if not trans.app.config.enable_old_display_applications:
+ return trans.show_error_message( "This method of accessing external display applications has been disabled by a Galaxy administrator." )
site = filename
data = trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( dataset_id )
if not data:
diff -r d629a346b859c91ba0da27f865952580d1054d80 -r 56799709a0f35d1f5cde0aa8f38939eafea98294 universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample
+++ b/universe_wsgi.ini.sample
@@ -247,6 +247,16 @@
# them).
#display_servers = hgw1.cse.ucsc.edu,hgw2.cse.ucsc.edu,hgw3.cse.ucsc.edu,hgw4.cse.ucsc.edu,hgw…
+# To disable the old-style display applications that are hardcoded into datatype classes,
+# set enable_old_display_applications = False.
+# This may be desirable due to using the new-style, XML-defined, display applications that
+# have been defined for many of the datatypes that have the old-style.
+# There is also a potential security concern with the old-style applications,
+# where a malicious party could provide a link that appears to reference the Galaxy server,
+# but contains a redirect to a third-party server, tricking a Galaxy user to access said
+# site.
+#enable_old_display_applications = True
+
# -- Next gen LIMS interface on top of existing Galaxy Sample/Request management code.
use_nglims = False
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/14ab08c0fbfe/
Changeset: 14ab08c0fbfe
User: inithello
Date: 2013-03-22 00:23:43
Summary: Update install and test script to correctly load tool data tables.
Affected #: 1 file
diff -r b79e2393c8ad8c88bda682e0767f572c0c09e26a -r 14ab08c0fbfe3e9735e94f4e399aeabc870fe4b2 test/install_and_test_tool_shed_repositories/functional_tests.py
--- a/test/install_and_test_tool_shed_repositories/functional_tests.py
+++ b/test/install_and_test_tool_shed_repositories/functional_tests.py
@@ -107,12 +107,21 @@
else:
additional_tool_data_tables = None
additional_tool_data_path = None
-# And set up a blank tool_data_table_conf.xml and shed_tool_data_table_conf.xml.
+
+# Also set up default tool data tables.
+if os.path.exists( 'tool_data_table_conf.xml' ):
+ tool_data_table_conf = 'tool_data_table_conf.xml'
+elif os.path.exists( 'tool_data_table_conf.xml.sample' ):
+ tool_data_table_conf = 'tool_data_table_conf.xml.sample'
+else:
+ tool_data_table_conf = None
+
+# And set up a blank shed_tool_data_table_conf.xml.
tool_data_table_conf_xml_template = '''<?xml version="1.0"?><tables></tables>
'''
-
+
# The tool shed url and api key must be set for this script to work correctly. Additionally, if the tool shed url does not
# point to one of the defaults, the GALAXY_INSTALL_TEST_TOOL_SHEDS_CONF needs to point to a tool sheds configuration file
# that contains a definition for that tool shed.
@@ -328,7 +337,7 @@
galaxy_test_proxy_port = None
# Set up the configuration files for the Galaxy instance.
shed_tool_data_table_conf_file = os.environ.get( 'GALAXY_INSTALL_TEST_SHED_TOOL_DATA_TABLE_CONF', os.path.join( galaxy_test_tmp_dir, 'test_shed_tool_data_table_conf.xml' ) )
- galaxy_tool_data_table_conf_file = os.environ.get( 'GALAXY_INSTALL_TEST_TOOL_DATA_TABLE_CONF', os.path.join( galaxy_test_tmp_dir, 'test_tool_data_table_conf.xml' ) )
+ galaxy_tool_data_table_conf_file = os.environ.get( 'GALAXY_INSTALL_TEST_TOOL_DATA_TABLE_CONF', tool_data_table_conf )
galaxy_tool_conf_file = os.environ.get( 'GALAXY_INSTALL_TEST_TOOL_CONF', os.path.join( galaxy_test_tmp_dir, 'test_tool_conf.xml' ) )
galaxy_shed_tool_conf_file = os.environ.get( 'GALAXY_INSTALL_TEST_SHED_TOOL_CONF', os.path.join( galaxy_test_tmp_dir, 'test_shed_tool_conf.xml' ) )
galaxy_migrated_tool_conf_file = os.environ.get( 'GALAXY_INSTALL_TEST_MIGRATED_TOOL_CONF', os.path.join( galaxy_test_tmp_dir, 'test_migrated_tool_conf.xml' ) )
@@ -350,7 +359,7 @@
galaxy_file_path = os.path.join( galaxy_db_path, 'files' )
new_repos_path = tempfile.mkdtemp( dir=galaxy_test_tmp_dir )
galaxy_tempfiles = tempfile.mkdtemp( dir=galaxy_test_tmp_dir )
- galaxy_shed_tool_path = tempfile.mkdtemp( dir=galaxy_test_tmp_dir )
+ galaxy_shed_tool_path = tempfile.mkdtemp( dir=galaxy_test_tmp_dir, prefix='shed_tools' )
galaxy_migrated_tool_path = tempfile.mkdtemp( dir=galaxy_test_tmp_dir )
galaxy_tool_dependency_dir = tempfile.mkdtemp( dir=galaxy_test_tmp_dir )
os.environ[ 'GALAXY_INSTALL_TEST_TOOL_DEPENDENCY_DIR' ] = galaxy_tool_dependency_dir
@@ -367,9 +376,6 @@
print "Database connection: ", database_connection
- # Generate the tool_data_table_conf.xml file.
- file( galaxy_tool_data_table_conf_file, 'w' ).write( tool_data_table_conf_xml_template )
- os.environ[ 'GALAXY_INSTALL_TEST_TOOL_DATA_TABLE_CONF' ] = galaxy_tool_data_table_conf_file
# Generate the shed_tool_data_table_conf.xml file.
file( shed_tool_data_table_conf_file, 'w' ).write( tool_data_table_conf_xml_template )
os.environ[ 'GALAXY_INSTALL_TEST_SHED_TOOL_DATA_TABLE_CONF' ] = shed_tool_data_table_conf_file
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.