Commit Graph

14848 Commits

Author SHA1 Message Date
3d94bb9560 Added an alignment to make button position be the same as the other
2002-08-07  Anna Marie Dirks  <anna@ximian.com>

	* e-summary-shown.c (e_summary_shown_init): Added an alignment to make
	button position be the same as the other buttons of this type in evo.
	(add_clicked): make this buttons sensitive when there is no proper
	selection
	(remove_clicked): same thing with the button

	* my-evolution.glade: Capitalized "Weather Settings" properly.

svn path=/trunk/; revision=17732
2002-08-07 18:01:20 +00:00
f7a5a0a261 If outbox_folder is NULL, don't try and get its message count (this should
2002-08-07  Peter Williams  <peterw@ximian.com>

	* component-factory.c (request_quit): If outbox_folder is NULL, don't
	try and get its message count (this should never happen, but has.)

svn path=/trunk/; revision=17731
2002-08-07 17:27:15 +00:00
043ad65cc2 agh, don't break the build (shame on me)
svn path=/trunk/; revision=17730
2002-08-07 05:40:00 +00:00
030019f5df forgot changelog
2002-08-07  Not Zed  <NotZed@Ximian.com>

        * folder-browser-ui.c: Enable the view type menu's always.  See
        #20901.

svn path=/trunk/; revision=17729
2002-08-07 04:29:30 +00:00
91ef40e627 Set the week start day from the calendar prefs, do same for 24 hour
2002-08-07  Not Zed  <NotZed@Ximian.com>

        * message-tag-followup.c (target_date_new): Set the week start day
        from the calendar prefs, do same for 24 hour format.  See #23423.

svn path=/trunk/; revision=17728
2002-08-07 04:14:47 +00:00
f5b0266037 Don't need to save temp/backup files anymore, e_xml_save_file() now
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* rule-context.c (save): Don't need to save temp/backup files
	anymore, e_xml_save_file() now handles this for us (well, at least
	the saving of temp files). I'm not sure we need a backup file
	anymore now that we can depend on e_xml_save_file() to "Just Work"

svn path=/trunk/; revision=17727
2002-08-07 03:58:56 +00:00
6bdebeda96 No need to save a temporary file first anymore since I updated
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-local.c (save_metainfo): No need to save a temporary file
	first anymore since I updated e_xml_save_file() to do this for us.

svn path=/trunk/; revision=17726
2002-08-07 03:54:09 +00:00
698c3b1afc Changed to handle saving to a temp file first, this allows us to remove a
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* gal/util/e-xml-utils.c (e_xml_save_file): Changed to handle
	saving to a temp file first, this allows us to remove a lot of
	duplicate code from everywhere.

svn path=/trunk/; revision=17725
2002-08-07 03:41:19 +00:00
7cc54f371c And finally here.
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* e-tree-table-adapter.c
	(e_tree_table_adapter_save_expanded_state): And finally here.

	* e-table-state.c (e_table_state_save_to_file): Same here.

	* e-table-specification.c (e_table_specification_save_to_file): No
	need to save to a temp file first here either since
	e_xml_save_file now does that for us.

	* e-table.c (e_table_save_specification): No need to handle
	writing to a temp file first anymore, since I've updated
	e_xml_save_file() to handle that for us.

svn path=/trunk/; revision=17724
2002-08-07 03:37:40 +00:00
b446318dfa Set the week start day from the calendar prefs, do same for 24 hour
2002-08-07  Not Zed  <NotZed@Ximian.com>

        * message-tag-followup.c (target_date_new): Set the week start day
        from the calendar prefs, do same for 24 hour format.  See #23423.

        * mail-config.c (config_read): Added week_start_day from
        Calendar/Display config.  Also time_24hour format.
        (mail_config_get_week_start_day):
        (mail_config_get_time_24hour): And read-only accessors.

svn path=/trunk/; revision=17723
2002-08-07 02:56:10 +00:00
6916d03ad6 Use "\r" rather than including literal CRs in the string, which confuses
* backend/ebook/test-client.c (TEST_VCARD): Use "\r" rather than
        including literal CRs in the string, which confuses gcc on OS X.

        * backend/ebook/test-card.c (TEST_VCARD): Likewise.

svn path=/trunk/; revision=17722
2002-08-07 02:15:40 +00:00
47a7a91181 Save to a temporary file first using e_xml_save_file rather than
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-local.c (save_metainfo): Save to a temporary file first
	using e_xml_save_file rather than xmlSaveFile, if the save
	completes successfully then rename it to the real filename. Make
	sure that errno is saved.
	(mls_get_folder): save_metainfo doesn't return -1 on fail, it
	returns FALSE.

svn path=/trunk/; revision=17721
2002-08-06 21:17:49 +00:00
b91558e435 Use e_xml_save_file(). (xml_doc_save): Removed this code and added it to
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* rule-context.c (save): Use e_xml_save_file().
	(xml_doc_save): Removed this code and added it to gal so that
	e-table and all other parts of evolution and so forth could use
	it.

svn path=/trunk/; revision=17720
2002-08-06 21:00:16 +00:00
cbb7e95fcf Need to check for gal 0.19.99.18 for e_xml_save_file().
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* configure.in (THREADS_CFLAGS): Need to check for gal 0.19.99.18
	for e_xml_save_file().

svn path=/trunk/; revision=17719
2002-08-06 20:45:10 +00:00
ff5210dad5 Bumped version to 0.19.99.18
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* configure.in: Bumped version to 0.19.99.18

	* gal/util/e-xml-utils.c (e_xml_save_file): New convenience
	function to save an xmlDocPtr. Replaces xmlSaveFile because
	xmlSaveFile isn't dependable.

svn path=/trunk/; revision=17718
2002-08-06 20:33:22 +00:00
71eabe9f8c #include <string.h> for memset
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* e-cell-progress.c: #include <string.h> for memset

	* e-table.c (e_table_save_specification): Updated to use
	e_xml_save_file() instead of xmlSaveFile(). Also fixed to save to
	a tmp file first.

	* e-table-specification.c (e_table_specification_save_to_file):
	Same as above.

	* e-table-state.c (e_table_state_save_to_file): Same here.

	* e-tree-table-adapter.c
	(e_tree_table_adapter_save_expanded_state): And here too.

svn path=/trunk/; revision=17717
2002-08-06 20:31:40 +00:00
eb83dd4dd0 Don't include the storage name in the path passed to
* e-storage-set-view.c (folder_property_item_verb_callback): Don't
	include the storage name in the path passed to
	e_corba_storage_show_folder_properties, for consistency with the
	other EStorage methods.

svn path=/trunk/; revision=17716
2002-08-06 20:25:10 +00:00
56aa60771f New placeholder at FolderPopup/StorageFolderPropertiesPlaceholder.
New placeholder at
FolderPopup/StorageFolderPropertiesPlaceholder.

svn path=/trunk/; revision=17715
2002-08-06 16:34:04 +00:00
f312a007fd New callback for the show_folder_properties signal.
* evolution-test-component.c
(storage_show_folder_properties_callback): New callback for the
show_folder_properties signal.
(setup_custom_storage): Add two property items, and connect the
callback to the signal.

* e-storage-set-view.c: Renamed private member container into
ui_container; new member ui_component.
(init): Initialize ui_component to NULL.
(impl_destroy): Unref if not NULL.
(e_storage_set_view_construct): If @ui_container is not NULL,
weakref it and create a new ui_component that uses it as its
container.
(ui_container_destroy_notify): New, weakref destroy callback for
priv->ui_container.
(remove_property_items): New helper function.
(setup_folder_properties_items_if_corba_storage_clicked): New
helper function.
(folder_property_item_verb_callback): New callback for the verbs
associated to the folder property items.
(popup_folder_menu): Set up the per-storage folder property items
using setup_folder_properties_items_if_corba_storage_clicked() and
remove them with remove_property_items() after the menu has been
popped down.  Don't invoke populate_folder_context_menu if there
is no handler for this node [this avoids a spurious warning].

* e-corba-storage.c (e_corba_storage_show_folder_properties): New.
(e_corba_storage_get_folder_property_items): New.
(e_corba_storage_free_property_items_list): New.

* evolution-storage.c: New private member folder_property_items.
(init): Init to NULL.
(destroy): Free.
(impl_showFolderProperties): New, implementation for the
Storage::showFolderProperties CORBA method.
(class_init): Set up the "show_folder_properties" signal here.
(impl_Storage__get_propertyItems): New, getter for the
Storage::propertyItems property.
(corba_class_init): Install the new methods.
(evolution_storage_add_property_item): New function to add
property items to the storage.

* evolution-storage.h: New signal show_folder_properties.

* e-storage-set.c (e_storage_set_create_new_view): Renamed from
e_storage_set_new_view().

* Evolution-Storage.idl: Added attribute folderPropertyItems and
method ::showFolderProperties.

svn path=/trunk/; revision=17714
2002-08-06 16:27:48 +00:00
8f6536de28 new function. (query_backend_get_uids): new function. (query_backend_new):
2002-08-05  Rodrigo Moya <rodrigo@ximian.com>

	* pcs/query-backend.[ch] (query_backend_get_object_component): new
	function.
	(query_backend_get_uids): new function.
	(query_backend_new): create the static GHashTable if it hasn't been
	created yet.
	(query_backend_destroy): destroy the static GHashTable if empty.
	(foreach_uid_cb): call object_updated_cb, which does everything.

	* pcs/query.c: make use of the new QueryBackend class.
	(query_init): initialize new private structure member.
	(query_destroy): clean up new member, without freeing it, since it is
	managed internally in query-backend.c.
	(query_construct): create a QueryBackend for the query.

svn path=/trunk/; revision=17713
2002-08-06 14:09:18 +00:00
1402b68e05 Set the rule name to include the search string, for #10979.
2002-08-06  Not Zed  <NotZed@Ximian.com>

        * folder-browser.c (folder_browser_search_menu_activated): Set the
        rule name to include the search string, for #10979.

svn path=/trunk/; revision=17712
2002-08-06 05:23:13 +00:00
3f8d6fddb3 If writing to the sendmail pipe fails, wait for the sendmail process to
2002-08-06  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/sendmail/camel-sendmail-transport.c
	(sendmail_send_to): If writing to the sendmail pipe fails, wait
	for the sendmail process to exit before returning. Fixes bug
	#19636.

svn path=/trunk/; revision=17711
2002-08-06 05:21:34 +00:00
115a2836e1 Set the query text into the filter name when saving it, for #10979.
2002-08-06  Not Zed  <NotZed@Ximian.com>

        * e-filter-bar.c (menubar_activated): Set the query text into the
        filter name when saving it, for #10979.

svn path=/trunk/; revision=17710
2002-08-06 05:19:49 +00:00
a75f6e461d Only count hidden messages which are in the folder. Should probably
2002-08-06  Not Zed  <NotZed@Ximian.com>

        * message-list.c (message_list_hidden): Only count hidden messages
        which are in the folder.  Should probably maintain hidden table
        better.  For #4334.

svn path=/trunk/; revision=17707
2002-08-06 04:32:24 +00:00
8a030c88e2 Add messageinfo to id table, and store array index in messageinfo too.
2002-08-06  Not Zed  <NotZed@Ximian.com>

        * providers/pop3/camel-pop3-folder.c (cmd_list): Add messageinfo
        to id table, and store array index in messageinfo too.
        (fi_to_index): Removed, use index member of messageinfo, fixed
        callers.
        (cmd_builduid): Parse the headers of the data, and ignore any
        status or x-status headers.
        (uid_to_fi): Removed, use the hashtable instead.
        (id_to_fi): Same.
        (cmd_uidl): Add messageinfo to uid table.
        (pop3_refresh_info): Setup hash tables, and fill out uid table for
        nonuid capable servers.
        (pop3_finalize): Destroy hash tables.  Only free resources if the
        uids table is not null (if finalised before we ran refresh info).
        (id_to_fi): Removed.  Use id hash table instead, fixed caller.

svn path=/trunk/; revision=17706
2002-08-06 04:11:33 +00:00
5c45e184a4 Check driver != NULL, if folder_filter freed it already.
2002-08-06  Not Zed  <NotZed@Ximian.com>

        * mail-ops.c
        (fetch_mail_fetch): Check driver != NULL, if folder_filter freed
        it already.

svn path=/trunk/; revision=17705
2002-08-06 03:55:12 +00:00
abafd9de4f Unref the driver before returning to main thread, so any closing
2002-08-06  Not Zed  <NotZed@Ximian.com>

        * mail-ops.c (filter_folder_filter): Unref the driver before
        returning to main thread, so any closing operations are handled
        async (as in fetch_mail_fetch()), for #28072.

        ** fixes for #24605.

        * mail-vfolder.c (vfolder_gui_add_from_mlist): Removed.

        * folder-browser.c (filter_type_uid,vfolder_type_uid): Changed to
        accept args directly.  Fixed callers.
        (filter_mlist_uid,vfolder_mlist_uid): Use filter_type_uid instead
        of mlist variant.
        (vfolder_type_current): new function to handle setup of vfolders
        from the main menu.  It now uses the vfolder_type_uid function the
        same as the popup.
        (vfolder_subject, vfolder_sender, vfolder_recipient,
        vfolder_mlist): Changed to use vfolder_type_current.
        (filter_type_current): Similar for filters.
        (filter_subject, filter_sender, filter_recipient,
        filter_mlist): Changed to use filter_type_current.

        * mail-autofilter.c (rule_from_message): Handle AUTO_MLIST type.
        (rule_from_mlist):
        (vfolder_rule_from_mlist):
        (filter_rule_from_mlist): Removed.
        (filter_gui_add_from_mlist): Removed.

        * mail-autofilter.h: Added AUTO_MLIST type.

svn path=/trunk/; revision=17704
2002-08-06 02:45:07 +00:00
4e8deb5e4c New internal function to replace xmlSaveFile. Does proper error checking
2002-08-05  Jeffrey Stedfast  <fejj@ximian.com>

	* rule-context.c (xml_doc_save): New internal function to replace
	xmlSaveFile. Does proper error checking and so forth to ensure
	that the resulting file does not ever get truncated.
	(save): Cal xml_doc_save rather than xmlSaveFile. Fixes bug
	#25980.

svn path=/trunk/; revision=17703
2002-08-05 23:37:08 +00:00
ce3ae88564 If we are not in interactive mode, don't display error dialogs.
2002-08-05  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-mt.c (mail_msg_check_error): If we are not in interactive
	mode, don't display error dialogs.

	* component-factory.c (interactive_cb): Updated to use the new
	function mail_session_set_interactive().
	(owner_unset_cb): Same here.

	* mail-session.c (mail_session_set_interactive): Renamed from
	mail_session_enable_interaction().
	(mail_session_get_interactive): New function to get the
	interactive state.

svn path=/trunk/; revision=17702
2002-08-05 21:20:59 +00:00
01fb066a57 Add a GHashTable pointer so we can remove the info once the operation is
2002-08-01  Peter Williams  <peterw@ximian.com>

	* mail-offline-handler.c (struct _sync_info): Add a GHashTable pointer
	so we can remove the info once the operation is done.
	(sync_done): Remove the info from the hash table.
	(impl_syncFolder): Save the table to which the info was added.

svn path=/trunk/; revision=17701
2002-08-05 21:04:30 +00:00
dcf5f55c1c Always set a g_atexit handler to flush/save the camel-certdb.
2002-08-05  Jeffrey Stedfast  <fejj@ximian.com>

	* camel.c (camel_init): Always set a g_atexit handler to
	flush/save the camel-certdb.

svn path=/trunk/; revision=17700
2002-08-05 20:04:05 +00:00
35f821112f If we are asking for the toplevel folders, use the IMAP store's namespace
2002-08-05  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c (get_folder_info_online): If
	we are asking for the toplevel folders, use the IMAP store's
	namespace as the toplevel folder rather than an empty
	string. Fixes bug #28574.
	(imap_forget_folder): Rearrange the code so that name can never be
	used uninitialised.

	* providers/imap/camel-imap-utils.c (imap_namespace_concat):
	Removed.

svn path=/trunk/; revision=17699
2002-08-05 19:59:24 +00:00
a8a50b5085 Updated to call post_to_url if the id is "post".
2002-08-05  Jeffrey Stedfast  <fejj@ximian.com>

	* component-factory.c (user_create_new_item_cb): Updated to call
	post_to_url if the id is "post".

	* mail-callbacks.c (post_to_url): New function so that we don't
	need a FolderBrowser to post a new message.
	(post_message): Call post_to_url since they shared so much code.

svn path=/trunk/; revision=17698
2002-08-05 18:33:04 +00:00
ffab9cc57f Fixes the crash in #19159
2002-08-04  Rodrigo Moya <rodrigo@ximian.com>

	Fixes the crash in #19159

	* gui/alarm-notify/alarm-queue.c (create_snooze): check for NULL
	pointers before using them.

svn path=/trunk/; revision=17697
2002-08-05 13:58:30 +00:00
fb410a4f98 Remove the logic that assumes "Rupert> " is a citation, since it misfires
* e-html-utils.c (is_citation): Remove the logic that assumes
	"Rupert> " is a citation, since it misfires more often than it
	hits.

svn path=/trunk/; revision=17696
2002-08-05 13:39:16 +00:00
becfb9e15d Only reply to all or reply to list, set CAMEL_MESSAGE_ANSWERED_ALL too.
* mail-callbacks.c (mail_reply): Only reply to all or reply to
	list, set CAMEL_MESSAGE_ANSWERED_ALL too.

svn path=/trunk/; revision=17695
2002-08-05 13:38:19 +00:00
aa069f945f Add CAMEL_MESSAGE_ANSWERED_ALL, for folders that can distinguish a
* camel-folder-summary.h (CamelMessageFlags): Add
	CAMEL_MESSAGE_ANSWERED_ALL, for folders that can distinguish a
	reply-to-sender from a reply-to-all. (eg, Exchange)

	* providers/local/camel-local-folder.c (local_init): Add
	ANSWERED_ALL to permanent_flags too.

svn path=/trunk/; revision=17694
2002-08-05 13:37:15 +00:00
338e936539 Fixes bug #26237.
2002-08-02  Jeffrey Stedfast  <fejj@ximian.com>

	Fixes bug #26237.

	* providers/imap/camel-imap-command.c
	(imap_command_strdup_vprintf): Don't prepend any namespace shit in
	the %F case.

	* providers/imap/camel-imap-utils.c (imap_parse_list_response):
	Don't strip off the namespace.

svn path=/trunk/; revision=17693
2002-08-03 00:45:15 +00:00
6aa2b61cc7 Set the default flag to Follow-Up.
2002-08-02  Jeffrey Stedfast  <fejj@ximian.com>

	* message-tag-followup.c (construct): Set the default flag to
	Follow-Up.

svn path=/trunk/; revision=17692
2002-08-02 22:48:15 +00:00
405ef3bcf3 Updated to use the new Follow-Up tags. Instead of storing a string
2002-08-02  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-display.c (mail_display_render): Updated to use the new
	Follow-Up tags. Instead of storing a string containing the
	follow-up tag value, we now have to store the CamelMessageInfo.
	(mail_display_destroy): Unref the folder and the message-info.

	* folder-browser.c (followup_tag_complete): No longer needed.
	(on_right_clicked): Use the individual follow-up tags to decide
	whether or not to enable something.

	* message-list.c (ml_tree_value_at): Update to use the new
	Follow-Up tags.

	* mail-callbacks.c (flag_for_followup): Update to use the new
	MessageTagEditor API.
	(tag_editor_ok): Update this too.
	(flag_followup_completed): Updated this too.
	(flag_followup_clear): Set all the follow-up tag values to "".

svn path=/trunk/; revision=17691
2002-08-02 22:36:11 +00:00
784fe19dd5 If the folder name contains the directory separator, reject it.
2002-08-01  Peter Williams  <peterw@ximian.com>

	* providers/imap/camel-imap-store.c (create_folder): If the folder
	name contains the directory separator, reject it.

svn path=/trunk/; revision=17690
2002-08-02 18:19:53 +00:00
2834a02187 don't warn if we can't use the small font, just set use_small_font to
2002-08-02  JP Rosevear  <jpr@ximian.com>

	* gui/e-week-view.c (e_week_view_init): don't warn if we can't use
	the small font, just set use_small_font to FALSE

svn path=/trunk/; revision=17689
2002-08-02 12:30:07 +00:00
ce4d96263c new util function to add information to an itip message that might not
2002-08-02  JP Rosevear  <jpr@ximian.com>

	* gui/e-itip-control.c (adjust_item): new util function to add
	information to an itip message that might not already be there for
	display purposes (summary, location, etc)
	(show_current_event): use above
	(show_current_todo): ditto

svn path=/trunk/; revision=17688
2002-08-02 12:26:25 +00:00
38251cc593 initialize value to corba nil
2002-08-02  JP Rosevear  <jpr@ximian.com>

	* gui/e-meeting-model.c (init): initialize value to corba nil

svn path=/trunk/; revision=17687
2002-08-02 12:23:28 +00:00
39215ce43d Clear the summary after building the 'removed uid' list.
2002-08-02  Not Zed  <NotZed@Ximian.com>

        * providers/local/camel-mbox-summary.c (mbox_summary_check): Clear
        the summary after building the 'removed uid' list.

svn path=/trunk/; revision=17686
2002-08-02 05:23:51 +00:00
d987b48e12 revert jeff's patch below, and do it slightly differently, and stop the
2002-08-02  Not Zed  <NotZed@Ximian.com>

        * camel-folder-summary.c (message_info_load): revert jeff's patch
        below, and do it slightly differently, and stop the auto-reformatting
        bullshit.

2002-08-02  Not Zed  <NotZed@Ximian.com>

        * providers/local/camel-maildir-summary.c (message_info_new): If
        we get a duplicate, just re-use the old info.
        (remove_summary): Add any removed to a change list.
        (maildir_summary_check): If we find new ones in 'cur' track them
        in the change list.  Removed FIXME about it.  For #18348.

svn path=/trunk/; revision=17685
2002-08-02 05:13:38 +00:00
a683952c13 Added a datespec editor window.
2002-08-02  Not Zed  <NotZed@Ximian.com>

	* filter.glade: Added a datespec editor window.

	* filter-datespec.c (button_clicked): Rewritten to use glade.
	Simplified all the code around it as a result, etc, and fixed bug
	#21798.

svn path=/trunk/; revision=17684
2002-08-02 04:00:22 +00:00
63f0feb664 [ fixes bug #25958 ] use FULL_NAME in the case where we're untoggling a
2002-08-01  Chris Toshok  <toshok@ximian.com>

	[ fixes bug #25958 ]
	* gui/component/addressbook.c (alphabet_state_changed): use
	FULL_NAME in the case where we're untoggling a letter, and... well
	use FULL_NAME in the other case too - we should never pop up the
	advanced dialog.

svn path=/trunk/; revision=17683
2002-08-02 00:58:54 +00:00
82f09c66c5 no more search_entry.
2002-08-01  Chris Toshok  <toshok@ximian.com>

	* gui/component/select-names/e-select-names.h (struct
	_ESelectNames): no more search_entry.

	* gui/component/select-names/e-select-names.c (update_query): no
	more search_entry, search_entry => select_entry, and add file_as
	to the query since some entries don't have names (like the Ximian,
	Inc. default card.)
	(e_select_names_init): no more search_entry, and add an "activate"
	handler on select_entry that updates the query.

svn path=/trunk/; revision=17682
2002-08-02 00:23:38 +00:00
c48c6afed5 remove folders and folders_by_uri, and the 2 listeners.
2002-08-01  Chris Toshok  <toshok@ximian.com>

	* gui/component/select-names/e-select-names.h (struct
	_ESelectNames): remove folders and folders_by_uri, and the 2
	listeners.

	* gui/component/select-names/e-select-names.c
	(e_select_names_destroy): remove the hash_table_destroys of
	folders and folders_by_uri, since they no longer exist.  same for
	other_contacts_listener and local_listener.

svn path=/trunk/; revision=17681
2002-08-01 22:53:44 +00:00