§
    s—ÊižŠ  ã                   óÚ  — d dl Z d dlZd dlZd dlZd dlZd dlT d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlZ G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d e¦  «        Z G d!„ d"e¦  «        Z G d#„ d$e¦  «        Z G d%„ d&e¦  «        Z  G d'„ d(e¦  «        Z! G d)„ d*e¦  «        Z" G d+„ d,e¦  «        Z# G d-„ d.e¦  «        Z$ G d/„ d0e¦  «        Z% G d1„ d2e¦  «        Z&dS )3é    N)Ú*)ÚStatusVariableMismatch)Úparse_decimal_from_bytes)Úlogger)ÚUnionÚOptionalc                   óx   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zd„ Zedefd„¦   «         Zd	„ Z	de
fd
„Zdefd„Zd„ ZdS )ÚBinLogEvent©r   r   r   NFc                 ó:  — || _         || _        | j         j        | _        | j         j        | _        || _        || _        || _        || _        || _        d | _	        d| _
        d| _        |                      ¦   «          | j                             ¦   «         | _        d S )NT)ÚpacketÚ	table_mapÚ
event_typeÚ	timestampÚ
event_sizeÚ_ctl_connectionÚmysql_versionÚ_ignore_decode_errorsÚ_verify_checksumÚ_is_event_validÚ
_processedÚcompleteÚ_verify_eventÚ	_get_dbmsÚdbms)ÚselfÚfrom_packetr   r   Úctl_connectionr   Úonly_tablesÚignored_tablesÚonly_schemasÚignored_schemasÚfreeze_schemaÚignore_decode_errorsÚverify_checksumÚoptional_meta_dataÚenable_loggingÚuse_column_name_caches                   ú]/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/pymysqlreplication/event.pyÚ__init__zBinLogEvent.__init__   s•   € ð$ "ˆŒØ"ˆŒØœ+Ô0ˆŒØœÔ.ˆŒØ$ˆŒØ-ˆÔØ*ˆÔØ%9ˆÔ"Ø /ˆÔØ#ˆÔð ˆŒØˆŒØ×ÒÑÔÐØÔ(×2Ò2Ñ4Ô4ˆŒ	ˆ	ˆ	ó    c                 ór   — | j                              d¦  «        dz   }t          j        d|¦  «        d         S )Né   s     ú<Qr   )r   ÚreadÚstructÚunpack)r   Útable_ids     r)   Ú_read_table_idzBinLogEvent._read_table_id3   s5   € ð ”;×#Ò# AÑ&Ô&¨Ñ4ˆÝŒ}˜T 8Ñ,Ô,¨QÔ/Ð/r+   c                 óð  — | j         sd S | j                             d¦  «         | j                             d| j        z   ¦  «        }| j                             d¦  «        }t          j        |¦  «                             dd¬¦  «        }||k    rdnd| _        | j        st          j
        d| j        › d	�¦  «         | j        xj        d| j        z   dz   z  c_        | j                             d
¦  «         d S )Né   é   é   Úlittle)Ú	byteorderTFz'An CRC32 has failed for the event type z7, indicating a potential integrity issue with the data.é   )r   r   Úrewindr/   r   ÚzlibÚcrc32Úto_bytesr   r   Úerrorr   Ú
read_bytes)r   ÚdataÚfooterÚ	byte_datas       r)   r   zBinLogEvent._verify_event9   s  € ØÔ$ð 	ØˆFàŒ×Ò˜1ÑÔÐØŒ{×Ò  T¤_Ñ 4Ñ5Ô5ˆØ”×!Ò! !Ñ$Ô$ˆÝ”J˜tÑ$Ô$×-Ò-¨a¸8Ð-ÑDÔDˆ	Ø'0°FÒ':Ð':˜t˜tÀˆÔØÔ#ð 	ÝŒLðH¸$¼/ð Hð Hð Hñô ð ð 	ŒÐÔ " t¤Ñ"6¸Ñ":Ñ:ÐÔØŒ×Ò˜2ÑÔÐÐÐr+   Úreturnc                 ón   — t           j                              | j        ¦  «                             ¦   «         S ©N)ÚdatetimeÚutcfromtimestampr   Ú	isoformat©r   s    r)   Úformatted_timestampzBinLogEvent.formatted_timestampJ   s'   € åÔ ×1Ò1°$´.ÑAÔA×KÒKÑMÔMÐMr+   c                 óP  — t          d| j        j        › d�¦  «         t          d| j        › �¦  «         t          d| j        j        › �¦  «         t          d| j        › �¦  «         t          d| j        j        › �¦  «         |                      ¦   «          t          ¦   «          d S )Nú=== ú ===zDate: zLog position: zEvent size: zRead bytes: )	ÚprintÚ	__class__Ú__name__rK   r   Úlog_posr   r@   Ú_dumprJ   s    r)   ÚdumpzBinLogEvent.dumpN   s¦   € ÝÐ2�T”^Ô,Ð2Ð2Ð2Ñ3Ô3Ð3ÝÐ1�tÔ/Ð1Ð1Ñ2Ô2Ð2ÝÐ4˜tœ{Ô2Ð4Ð4Ñ5Ô5Ð5ÝÐ.˜Tœ_Ð.Ð.Ñ/Ô/Ð/ÝÐ5˜Tœ[Ô3Ð5Ð5Ñ6Ô6Ð6Ø�
Š
‰ŒˆÝ‰Œˆˆˆr+   c                 óL   — | j         | j        j        | j        | j        j        dœS )N)r   rR   r   r@   )rK   r   rR   r   r@   rJ   s    r)   Úto_dictzBinLogEvent.to_dictW   s,   € àÔ1Ø”{Ô*Øœ/Øœ+Ô0ð	
ð 
ð 	
r+   c                 óN   — t          j        |                      ¦   «         ¦  «        S rF   )ÚjsonÚdumpsrV   rJ   s    r)   Úto_jsonzBinLogEvent.to_json_   s   € ÝŒz˜$Ÿ,š,™.œ.Ñ)Ô)Ð)r+   c                 ó   — dS )zCore data dumped for the eventN© rJ   s    r)   rS   zBinLogEvent._dumpb   s   € àˆr+   )r   NNNNFFFFFF)rQ   Ú
__module__Ú__qualname__r*   r3   r   ÚpropertyÚstrrK   rT   ÚdictrV   rZ   rS   r\   r+   r)   r
   r
      sê   € € € € € ð  ØØØØØØ"ØØ ØØ#ð!!5ð !5ð !5ð !5ðF0ð 0ð 0ðð ð ð" ðN Sð Nð Nð Nñ „XðNðð ð ð
˜ð 
ð 
ð 
ð 
ð*˜ð *ð *ð *ð *ðð ð ð ð r+   r
   c                   óD   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zd„ Zd„ Zˆ xZ	S )Ú	GtidEventa¤  
    GTID change in binlog event

    For more information: `[GTID] <https://mariadb.com/kb/en/gtid/>`_ `[see also] <https://dev.mysql.com/doc/dev/mysql-server/latest/classbinary__log_1_1Gtid__event.html>`_

    :ivar commit_flag: 1byte - 00000001 = Transaction may have changes logged with SBR.
            In 5.6, 5.7.0-5.7.18, and 8.0.0-8.0.1, this flag is always set. Starting in 5.7.19 and 8.0.2, this flag is cleared if the transaction only contains row events. It is set if any part of the transaction is written in statement format.
    :ivar sid: 16 byte sequence - UUID representing the SID
    :ivar gno: int - Group number, second component of GTID.
    :ivar lt_type: int(1 byte) - The type of logical timestamp used in the logical clock fields.
    :ivar last_committed: Store the transaction's commit parent sequence_number
    :ivar sequence_number: The transaction's logical timestamp assigned at prepare phase
    c                 ó¬  •—  t          ¦   «         j        ||||fi |¤Ž t          j        d| j                             d¦  «        ¦  «        d         dk    | _        | j                             d¦  «        | _        t          j        d| j                             d¦  «        ¦  «        d         | _        | j                             d¦  «        d         | _	        | j
        dk    rrt          j        d| j                             d¦  «        ¦  «        d         | _        t          j        d| j                             d¦  «        ¦  «        d         | _        d S d S )Nú!Br5   r   é   r.   é   )é   é   )Úsuperr*   r0   r1   r   r/   Úcommit_flagÚsidÚgnoÚlt_typer   Úlast_committedÚsequence_number©r   r   r   r   r   ÚkwargsrP   s         €r)   r*   zGtidEvent.__init__v   s  ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVå!œ=¨¨t¬{×/?Ò/?ÀÑ/BÔ/BÑCÔCÀAÔFÈ!ÒKˆÔØ”;×#Ò# BÑ'Ô'ˆŒÝ”=  t¤{×'7Ò'7¸Ñ':Ô':Ñ;Ô;¸AÔ>ˆŒØ”{×'Ò'¨Ñ*Ô*¨1Ô-ˆŒàÔ Ò'Ð'Ý"(¤-°°d´k×6FÒ6FÀqÑ6IÔ6IÑ"JÔ"JÈ1Ô"MˆDÔÝ#)¤=°°t´{×7GÒ7GÈÑ7JÔ7JÑ#KÔ#KÈAÔ#NˆDÔ Ð Ð ð (Ð'r+   c                 óÞ   — t          j        | j        ¦  «                             d¦  «        }|dd…         › d|dd…         › d|dd…         › d|dd…         › d|dd…         › d| j        › �}|S )	z°
        GTID = source_id:transaction_id
        Eg: 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
        See: http://dev.mysql.com/doc/refman/5.6/en/replication-gtids-concepts.htmlÚasciiNrg   Ú-é   rf   r:   ú:)ÚbinasciiÚhexlifyrl   Údecoderm   )r   ÚnibblesÚgtids      r)   r|   zGtidEvent.gtid‚   s®   € õ Ô" 4¤8Ñ,Ô,×3Ò3°GÑ<Ô<ˆà�r˜�rŒ{ð ð Ø�q˜�tŒ}ðð à�r˜"�uŒ~ðð ð �r˜"�uŒ~ðð ð �r�s�sŒ|ð	ð ð
 Œxðð ð 	ð ˆr+   c                 óâ   — t          d| j        › �¦  «         t          d| j        › �¦  «         t          | d¦  «        r0t          d| j        › �¦  «         t          d| j        › �¦  «         d S d S )NzCommit: zGTID_NEXT: ro   zlast_committed: zsequence_number: )rO   rk   r|   Úhasattrro   rp   rJ   s    r)   rS   zGtidEvent._dump“   sŒ   € ÝÐ+˜Ô)Ð+Ð+Ñ,Ô,Ð,ÝÐ'˜DœIÐ'Ð'Ñ(Ô(Ð(Ý�4Ð)Ñ*Ô*ð 	>ÝÐ: TÔ%8Ð:Ð:Ñ;Ô;Ð;ÝÐ< dÔ&:Ð<Ð<Ñ=Ô=Ð=Ð=Ð=ð	>ð 	>r+   c                 ó   — d| j         › d�S )Nz<GtidEvent "ú">)r|   rJ   s    r)   Ú__repr__zGtidEvent.__repr__š   s   € Ø+˜dœiÐ+Ð+Ð+Ð+r+   )
rQ   r]   r^   Ú__doc__r*   r_   r|   rS   r�   Ú__classcell__©rP   s   @r)   rc   rc   g   s€   ø€ € € € € ðð ð
Oð 
Oð 
Oð 
Oð 
Oð ðð ñ „Xðð >ð >ð >ð,ð ,ð ,ð ,ð ,ð ,ð ,r+   rc   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚPreviousGtidsEventaN  
    PreviousGtidEvent is contains the Gtids executed in the last binary log file.
    Attributes:
        n_sid: which size is the gtid_set
        sid: 16bytes UUID as a binary
        n_intervals: how many intervals are sent
    Eg: [4c9e3dfc-9d25-11e9-8d2e-0242ac1cfd7e:1-100, 4c9e3dfc-9d25-11e9-8d2e-0242ac1cfd7e:1-10:20-30]
    c                 óœ  •‡ —  t          t          ‰ ¦  «        j        ||||fi |¤Ž ‰ j                             ¦   «         ‰ _        g ‰ _        t          ‰ j        ¦  «        D ]Ì}‰ j                             d¦  «        }‰ j         	                    ¦   «         }ˆ fd„t          |¦  «        D ¦   «         }	t          j        |¦  «                             d¦  «        }
|
d d…         › d|
dd…         › d|
dd…         › d|
dd…         › d|
dd …         › d|	› �}‰ j                             |¦  «         ŒÍd	                     ‰ j        ¦  «        ‰ _        d S )
Nrf   c                 óz   •— g | ]7}‰j                              ¦   «         › d ‰j                              ¦   «         › �‘Œ8S )ru   )r   Ú
read_int64Úread_uint64)Ú.0Ú_r   s     €r)   ú
<listcomp>z/PreviousGtidsEvent.__init__.<locals>.<listcomp>³   sS   ø€ ð ð ð àð ”;×)Ò)Ñ+Ô+ÐIÐI¨d¬k×.EÒ.EÑ.GÔ.GÐIÐIðð ð r+   rt   rg   ru   rv   r:   z-:Ú,)rj   r†   r*   r   r‰   Ú_n_sidÚ_gtidsÚranger/   rŠ   rx   ry   rz   ÚappendÚjoinÚ_previous_gtids)r   r   r   r   r   rr   rŒ   rl   Ún_intervalsÚ	intervalsr{   r|   rP   s   `           €r)   r*   zPreviousGtidsEvent.__init__¨   s£  øø€ Ø0�Õ  $Ñ'Ô'Ô0Ø˜ Y°ð	
ð 	
ØBHð	
ð 	
ð 	
ð ”k×,Ò,Ñ.Ô.ˆŒØˆŒå�t”{Ñ#Ô#ð 	%ð 	%ˆAØ”+×"Ò" 2Ñ&Ô&ˆCØœ+×1Ò1Ñ3Ô3ˆKðð ð ð å˜{Ñ+Ô+ðñ ô ˆIõ Ô& sÑ+Ô+×2Ò2°7Ñ;Ô;ˆGà˜2˜A˜2”;ð  ð  Ø˜1˜R˜4”=ð ð  à˜2˜b˜5”>ð ð  ð ˜2˜b˜5”>ð ð  ð ˜2˜3˜3”<ð	 ð  ð
 ð ð  ð ð ŒK×Ò˜tÑ$Ô$Ð$Ð$à"Ÿxšx¨¬Ñ4Ô4ˆÔÐÐr+   c                 ó4   — t          d| j        › �¦  «         d S )Nzprevious_gtids: )rO   r”   rJ   s    r)   rS   zPreviousGtidsEvent._dumpÄ   s"   € ÝÐ7 Ô!5Ð7Ð7Ñ8Ô8Ð8Ð8Ð8r+   c                 ó   — d| j         › d�S )Nz<PreviousGtidsEvent "r€   )r”   rJ   s    r)   r�   zPreviousGtidsEvent.__repr__Ç   s   € Ø? tÔ';Ð?Ð?Ð?Ð?r+   )rQ   r]   r^   r‚   r*   rS   r�   rƒ   r„   s   @r)   r†   r†   ž   sg   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð89ð 9ð 9ð@ð @ð @ð @ð @ð @ð @r+   r†   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚMariadbGtidEventu&  
    GTID(Global Transaction Identifier) change in binlog event in MariaDB

    For more information: `[see details] <https://mariadb.com/kb/en/gtid_event/>`_.

    :ivar server_id: int - The ID of the server where the GTID event occurred.
    :ivar gtid_seq_no: int - The sequence number of the GTID event.
    :ivar domain_id: int - The domain ID associated with the GTID event.
    :ivar flags: int - Flags related to the GTID event.
    :ivar gtid: str - The Global Transaction Identifier in the format â€˜domain_id-server_id-gtid_seq_noâ€™.
    c                 óT  •—  t          ¦   «         j        ||||fi |¤Ž | j        j        | _        | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             ¦   «         | _	        | j        › d| j        › d| j        › �| _
        d S ©Nru   )rj   r*   r   Ú	server_idrŠ   Úgtid_seq_noÚread_uint32Ú	domain_idÚ
read_uint8Úflagsr|   rq   s         €r)   r*   zMariadbGtidEvent.__init__Ø   sœ   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVàœÔ.ˆŒØœ;×2Ò2Ñ4Ô4ˆÔØœ×0Ò0Ñ2Ô2ˆŒØ”[×+Ò+Ñ-Ô-ˆŒ
Ø”~ÐKÐK¨¬ÐKÐK¸Ô9IÐKÐKˆŒ	ˆ	ˆ	r+   c                 ó¤   •— t          ¦   «                              ¦   «          t          d| j        › �¦  «         t          d| j        › �¦  «         d S )NúFlags: zGTID: )rj   rS   rO   r¢   r|   ©r   rP   s    €r)   rS   zMariadbGtidEvent._dumpá   sL   ø€ Ý‰Œ�Š‰ŒˆÝÐ$˜œ
Ð$Ð$Ñ%Ô%Ð%ÝÐ"�t”yÐ"Ð"Ñ#Ô#Ð#Ð#Ð#r+   ©rQ   r]   r^   r‚   r*   rS   rƒ   r„   s   @r)   rš   rš   Ë   s`   ø€ € € € € ð
ð 
ðLð Lð Lð Lð Lð$ð $ð $ð $ð $ð $ð $ð $ð $r+   rš   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚMariadbBinLogCheckPointEventa;  
    Represents a checkpoint in a binlog event in MariaDB.

    More details are available in the MariaDB Knowledge Base:
    https://mariadb.com/kb/en/binlog_checkpoint_event/

    :ivar filename_length: int - The length of the filename.
    :ivar filename: str - The name of the file saved at the checkpoint.
    c                 óä   •—  t          t          | ¦  «        j        ||||fi |¤Ž | j                             ¦   «         }| j                             |¦  «                             ¦   «         | _        d S rF   )rj   r¨   r*   r   rŸ   r/   rz   Úfilename)r   r   r   r   r   rr   Úfilename_lengthrP   s          €r)   r*   z%MariadbBinLogCheckPointEvent.__init__ò   sw   ø€ Ø:�Õ*¨DÑ1Ô1Ô:Ø˜ Y°ð	
ð 	
ØBHð	
ð 	
ð 	
ð œ+×1Ò1Ñ3Ô3ˆØœ×(Ò(¨Ñ9Ô9×@Ò@ÑBÔBˆŒˆˆr+   c                 ó4   — t          d| j        › �¦  «         d S )Nz
Filename: )rO   rª   rJ   s    r)   rS   z"MariadbBinLogCheckPointEvent._dumpù   s!   € ÝÐ*˜4œ=Ð*Ð*Ñ+Ô+Ð+Ð+Ð+r+   r¦   r„   s   @r)   r¨   r¨   ç   sV   ø€ € € € € ðð ðCð Cð Cð Cð Cð,ð ,ð ,ð ,ð ,ð ,ð ,r+   r¨   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚMariadbAnnotateRowsEventzô
    Annotate rows event
    If you want to check this binlog, change the value of the flag(line 382 of the 'binlogstream.py') option to 2
    https://mariadb.com/kb/en/annotate_rows_event/

    :ivar sql_statement: str - The SQL statement
    c                 ó€   •—  t          ¦   «         j        ||||fi |¤Ž | j                             |¦  «        | _        d S rF   )rj   r*   r   r/   Úsql_statementrq   s         €r)   r*   z!MariadbAnnotateRowsEvent.__init__  sF   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVØ!œ[×-Ò-¨jÑ9Ô9ˆÔÐÐr+   c                 óv   •— t          ¦   «                              ¦   «          t          d| j        › �¦  «         d S )NzSQL statement : )rj   rS   rO   r°   r¥   s    €r)   rS   zMariadbAnnotateRowsEvent._dump
  s4   ø€ Ý‰Œ�Š‰ŒˆÝÐ5 Ô!3Ð5Ð5Ñ6Ô6Ð6Ð6Ð6r+   r¦   r„   s   @r)   r®   r®   ý   s[   ø€ € € € € ðð ð:ð :ð :ð :ð :ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7r+   r®   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚMariadbGtidListEventas  
    GTID List event
    https://mariadb.com/kb/en/gtid_list_event/

    :ivar gtid_length: int - Number of GTIDs
    :ivar gtid_list: list - list of 'MariadbGtidObejct'

    'MariadbGtidObejct' Attributes:
        domain_id: Replication Domain ID
        server_id: Server_ID
        gtid_seq_no: GTID sequence
        gtid: 'domain_id'+ 'server_id' + 'gtid_seq_no'
    c                 ó  •‡‡‡‡‡‡—  t          t          | ¦  «        j        ‰‰‰‰fi ‰¤Ž  G ˆfd„dt          ¦  «        Š| j                             ¦   «         | _        ˆˆˆˆˆˆfd„t          | j        ¦  «        D ¦   «         | _        d S )Nc                   ó&   •‡ — e Zd ZdZˆˆ fd„Zˆ xZS )ú8MariadbGtidListEvent.__init__.<locals>.MariadbGtidObejctzD
            Information class of elements in GTID list
            c                 ó6  •—  t          ‰| ¦  «        j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             ¦   «         | _        | j        › d| j        › d| j        › �| _        d S rœ   )	rj   r*   r   rŸ   r    r�   rŠ   rž   r|   ©r   r   r   r   r   rr   ÚMariadbGtidObejctrP   s         €€r)   r*   zAMariadbGtidListEvent.__init__.<locals>.MariadbGtidObejct.__init__(  s§   ø€ ð 8•Ð'¨Ñ.Ô.Ô7Ø ¨Y¸ðð ØJPðð ð ð "&¤×!8Ò!8Ñ!:Ô!:�”Ø!%¤×!8Ò!8Ñ!:Ô!:�”Ø#'¤;×#:Ò#:Ñ#<Ô#<�Ô Ø#œ~ÐSÐS°´ÐSÐSÀÔAQÐSÐS�”	�	�	r+   ©rQ   r]   r^   r‚   r*   rƒ   )rP   r¹   s   @€r)   r¹   r¶   #  sR   øø€ € € € € ðð ð	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tr+   r¹   c                 ó(   •— g | ]} ‰‰‰‰‰fi ‰¤Ž‘ŒS r\   r\   )r‹   Úir¹   r   r   r   rr   r   s     €€€€€€r)   r�   z1MariadbGtidListEvent.__init__.<locals>.<listcomp>4  sN   ø€ ð 
ð 
ð 
ð ð ÐØ˜Z¨°Nðð ØFLðð ð
ð 
ð 
r+   )	rj   r³   r*   r
   r   rŸ   Úgtid_lengthr‘   Ú	gtid_listr¸   s    `````@€r)   r*   zMariadbGtidListEvent.__init__  së   øøøøøøø€ Ø2�Õ" DÑ)Ô)Ô2Ø˜ Y°ð	
ð 	
ØBHð	
ð 	
ð 	
ð	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	T¥ñ 	Tô 	Tð 	Tð   œ;×2Ò2Ñ4Ô4ˆÔð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ˜4Ô+Ñ,Ô,ð	
ñ 
ô 
ˆŒˆˆr+   rº   r„   s   @r)   r³   r³     sB   ø€ € € € € ðð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r+   r³   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚRotateEventa|  
    Change MySQL bin log file
    Represents information for the slave to know the name of the binary log it is going to receive.

    For more information: `[see details] <https://dev.mysql.com/doc/dev/mysql-server/latest/classbinary__log_1_1Rotate__event.html>`_.

    :ivar position: int - Position inside next binlog
    :ivar next_binlog: str - Name of next binlog file
    c                 ó  •—  t          ¦   «         j        ||||fi |¤Ž t          j        d| j                             d¦  «        ¦  «        d         | _        | j                             |dz
  ¦  «                             ¦   «         | _        d S ©Nr.   rg   r   )	rj   r*   r0   r1   r   r/   Úpositionrz   Únext_binlogrq   s         €r)   r*   zRotateEvent.__init__G  s~   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVÝœ d¨D¬K×,<Ò,<¸QÑ,?Ô,?Ñ@Ô@ÀÔCˆŒØœ;×+Ò+¨J¸©NÑ;Ô;×BÒBÑDÔDˆÔÐÐr+   c                 ó¸   — t          d| j        j        › d�¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          ¦   «          d S )NrM   rN   z
Position: zNext binlog file: )rO   rP   rQ   rÃ   rÄ   rJ   s    r)   rT   zRotateEvent.dumpL  sa   € ÝÐ2�T”^Ô,Ð2Ð2Ð2Ñ3Ô3Ð3ÝÐ*˜4œ=Ð*Ð*Ñ+Ô+Ð+ÝÐ5 4Ô#3Ð5Ð5Ñ6Ô6Ð6Ý‰Œˆˆˆr+   ©rQ   r]   r^   r‚   r*   rT   rƒ   r„   s   @r)   rÀ   rÀ   <  sV   ø€ € € € € ðð ðEð Eð Eð Eð Eð
ð ð ð ð ð ð r+   rÀ   c                   ó>   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zd„ Zˆ xZS )ÚXAPrepareEventaê  
    An XA prepare event is generated for a XA prepared transaction.
    Like Xid_event, it contains XID of the **prepared** transaction.

    For more information: `[see details] <https://dev.mysql.com/doc/refman/8.0/en/xa-statements.html>`_.

    :ivar one_phase: current XA transaction commit method
    :ivar xid_format_id: a number that identifies the format used by the gtrid and bqual values
    :ivar xid: serialized XID representation of XA transaction (xid_gtrid + xid_bqual)
    c                 ó@  •—  t          ¦   «         j        ||||fi |¤Ž | j                             d¦  «        dk    | _        t          j        d| j                             d¦  «        ¦  «        d         | _        t          j        d| j                             d¦  «        ¦  «        d         }t          j        d| j                             d¦  «        ¦  «        d         }| j                             |¦  «        | _        | j                             |¦  «        | _	        d S )Nr5   ó    ú<Ir7   r   )
rj   r*   r   r/   Ú	one_phaser0   r1   Úxid_format_idÚ	xid_gtridÚ	xid_bqual)	r   r   r   r   r   rr   Úgtrid_lengthÚbqual_lengthrP   s	           €r)   r*   zXAPrepareEvent.__init___  sí   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVð œ×)Ò)¨!Ñ,Ô,°Ò7ˆŒÝ#œ]¨4°´×1AÒ1AÀ!Ñ1DÔ1DÑEÔEÀaÔHˆÔÝ”} T¨4¬;×+;Ò+;¸AÑ+>Ô+>Ñ?Ô?ÀÔBˆÝ”} T¨4¬;×+;Ò+;¸AÑ+>Ô+>Ñ?Ô?ÀÔBˆØœ×)Ò)¨,Ñ7Ô7ˆŒØœ×)Ò)¨,Ñ7Ô7ˆŒˆˆr+   c                 óh   — | j                              ¦   «         | j                             ¦   «         z   S rF   )rÎ   rz   rÏ   rJ   s    r)   ÚxidzXAPrepareEvent.xidk  s)   € àŒ~×$Ò$Ñ&Ô&¨¬×)>Ò)>Ñ)@Ô)@Ñ@Ð@r+   c                 ó�   — t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         d S )NzOne phase: zXID formatID: zXID: )rO   rÌ   rÍ   rÓ   rJ   s    r)   rS   zXAPrepareEvent._dumpo  sT   € ÝÐ,˜DœNÐ,Ð,Ñ-Ô-Ð-ÝÐ3˜tÔ1Ð3Ð3Ñ4Ô4Ð4ÝÐ �d”hÐ Ð Ñ!Ô!Ð!Ð!Ð!r+   )	rQ   r]   r^   r‚   r*   r_   rÓ   rS   rƒ   r„   s   @r)   rÈ   rÈ   S  so   ø€ € € € € ð	ð 	ð
8ð 
8ð 
8ð 
8ð 
8ð ðAð Añ „XðAð"ð "ð "ð "ð "ð "ð "r+   rÈ   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚFormatDescriptionEventa}  
    Represents a Format Description Event in the MySQL binary log.

    This event is written at the start of a binary log file for binlog version 4.
    It provides the necessary information to decode subsequent events in the file.

    :ivar binlog_version: int - Version of the binary log format.
    :ivar mysql_version_str: str - Server's MySQL version in string format.
    c                 ó4  •—  t          ¦   «         j        ||||fi |¤Ž t          j        d| j                             d¦  «        ¦  «        | _        | j                             d¦  «                             d¦  «                             ¦   «         | _	        | j	         
                    d¦  «        d         }t          t          t          | 
                    d¦  «        ¦  «        ¦  «        | _        t          j        d| j                             d	¦  «        ¦  «        d         | _        t          j        d
| j                             d¦  «        ¦  «        d         | _        d}d}d	}	||z
  | j        z
  |z
  |	z
  }
t          j        d|
› d�| j                             |
¦  «        ¦  «        | _        t          j        d| j                             d¦  «        ¦  «        | _        t          j        d
| j                             d¦  «        ¦  «        d         | _        d S )Nz<Hé   é2   rÊ   ru   r   ú.rË   r7   z<Br5   é9   Ú<ÚBz<3Bé   )rj   r*   r0   r1   r   r/   Úbinlog_versionÚrstriprz   Úmysql_version_strÚsplitÚtupleÚmapÚintr   ÚcreatedÚcommon_header_lenÚpost_header_lenÚserver_version_splitÚnumber_of_event_types)r   r   r   r   r   rr   ÚnumbersÚoffsetÚchecksum_algorithmÚchecksumÚnrP   s              €r)   r*   zFormatDescriptionEvent.__init__€  sÂ  ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVÝ$œm¨D°$´+×2BÒ2BÀ1Ñ2EÔ2EÑFÔFˆÔØ!%¤×!1Ò!1°"Ñ!5Ô!5×!<Ò!<¸UÑ!CÔ!C×!JÒ!JÑ!LÔ!LˆÔØÔ(×.Ò.¨sÑ3Ô3°AÔ6ˆÝ"¥3¥s¨G¯MªM¸#Ñ,>Ô,>Ñ#?Ô#?Ñ@Ô@ˆÔÝ”} T¨4¬;×+;Ò+;¸AÑ+>Ô+>Ñ?Ô?ÀÔBˆŒÝ!'¤¨t°T´[×5EÒ5EÀaÑ5HÔ5HÑ!IÔ!IÈ!Ô!LˆÔàð 	ð ÐØˆØ˜Ñ $Ô"8Ñ8Ð;MÑMÐPXÑXˆÝ%œ}¨X°¨X¨X¨X°t´{×7GÒ7GÈÑ7JÔ7JÑKÔKˆÔÝ$*¤M°%¸¼×9IÒ9IÈ!Ñ9LÔ9LÑ$MÔ$MˆÔ!Ý%+¤]°4¸¼×9IÒ9IÈ!Ñ9LÔ9LÑ%MÔ%MÈaÔ%PˆÔ"Ð"Ð"r+   c                 óH  — t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         d S )NzBinlog version: zmysql version: z	Created: zCommon header length: zPost header length: zServer version split: zNumber of event types: )rO   rß   rá   ræ   rç   rè   ré   rê   rJ   s    r)   rS   zFormatDescriptionEvent._dump’  s½   € ÝÐ6 Ô!4Ð6Ð6Ñ7Ô7Ð7ÝÐ8 Ô 6Ð8Ð8Ñ9Ô9Ð9ÝÐ(˜$œ,Ð(Ð(Ñ)Ô)Ð)ÝÐ? tÔ'=Ð?Ð?Ñ@Ô@Ð@ÝÐ; TÔ%9Ð;Ð;Ñ<Ô<Ð<ÝÐB tÔ'@ÐBÐBÑCÔCÐCÝÐD¨Ô(BÐDÐDÑEÔEÐEÐEÐEr+   r¦   r„   s   @r)   rÖ   rÖ   u  s]   ø€ € € € € ðð ðQð Qð Qð Qð Qð$Fð Fð Fð Fð Fð Fð Fr+   rÖ   c                   ó   — e Zd ZdS )Ú	StopEventN)rQ   r]   r^   r\   r+   r)   rò   rò   œ  s   € € € € € Ø€Dr+   rò   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚXidEventa  
    A COMMIT event generated when COMMIT of a transaction that modifies one or more tables of an XA-capable storage engine occurs.

    For more information: `[see details] <https://mariadb.com/kb/en/xid_event/>`_.

    :ivar xid: uint - Transaction ID for 2 Phase Commit.
    c                 ó²   •—  t          ¦   «         j        ||||fi |¤Ž t          j        d| j                             d¦  «        ¦  «        d         | _        d S rÂ   )rj   r*   r0   r1   r   r/   rÓ   rq   s         €r)   r*   zXidEvent.__init__©  sT   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVÝ”=  t¤{×'7Ò'7¸Ñ':Ô':Ñ;Ô;¸AÔ>ˆŒˆˆr+   c                 óv   •— t          ¦   «                              ¦   «          t          d| j        › �¦  «         d S )NzTransaction ID: )rj   rS   rO   rÓ   r¥   s    €r)   rS   zXidEvent._dump­  s3   ø€ Ý‰Œ�Š‰ŒˆÝÐ+ ¤Ð+Ð+Ñ,Ô,Ð,Ð,Ð,r+   r¦   r„   s   @r)   rô   rô      s[   ø€ € € € € ðð ð?ð ?ð ?ð ?ð ?ð-ð -ð -ð -ð -ð -ð -ð -ð -r+   rô   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚHeartbeatLogEventaû  A Heartbeat event
    Heartbeats are sent by the master.
    Master sends heartbeats when there are no unsent events in the binary log file after certain period of time.
    The interval is defined by MASTER_HEARTBEAT_PERIOD connection setting.

    `[see MASTER_HEARTBEAT_PERIOD] <https://dev.mysql.com/doc/refman/8.0/en/change-master-to.html>`_.

    A Mysql server also does it for each skipped events in the log.
    This is because to make the slave bump its position so that
    if a disconnection occurs, the slave will only reconnects from the lasted skipped position. (Baloo's idea)

    (see Binlog_sender::send_events in sql/rpl_binlog_sender.cc)

    Warning:
    That makes 106 bytes of data for skipped event in the binlog.
    *this is also the case with GTID replication*.
    To mitigate such behavior, you are expected to keep the binlog small
    (see max_binlog_size, defaults to 1G).
    In any case, the timestamp is 0 (as in 1970-01-01T00:00:00).

    :ivar ident: Name of the current binlog
    c                 ó¤   •—  t          ¦   «         j        ||||fi |¤Ž | j                             |¦  «                             ¦   «         | _        d S rF   )rj   r*   r   r/   rz   Úidentrq   s         €r)   r*   zHeartbeatLogEvent.__init__Ê  sO   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVØ”[×%Ò% jÑ1Ô1×8Ò8Ñ:Ô:ˆŒ
ˆ
ˆ
r+   c                 óv   •— t          ¦   «                              ¦   «          t          d| j        › �¦  «         d S )NzCurrent binlog: )rj   rS   rO   rú   r¥   s    €r)   rS   zHeartbeatLogEvent._dumpÎ  s3   ø€ Ý‰Œ�Š‰ŒˆÝÐ- ¤Ð-Ð-Ñ.Ô.Ð.Ð.Ð.r+   r¦   r„   s   @r)   rø   rø   ²  s[   ø€ € € € € ðð ð.;ð ;ð ;ð ;ð ;ð/ð /ð /ð /ð /ð /ð /ð /ð /r+   rø   c                   ó2   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zd„ Zˆ xZS )Ú
QueryEventaÇ  
    QueryEvent is generated for each query that modified database.
    If row-based replication is used, DML will not be logged as RowsEvent instead.

    :ivar slave_proxy_id: int - The id of the thread that issued this statement on the master server
    :ivar execution_time: int - The time from when the query started to when it was logged in the binlog, in seconds.
    :ivar schema_length: int - The length of the name of the currently selected database.
    :ivar error_code: int - Error code generated by the master
    :ivar status_vars_length: int - The length of the status variable

    :ivar schema: str - The name of the currently selected database.
    :ivar query: str - The query executed.
    c                 óz  •—  t          ¦   «         j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             ¦   «         | _        t          j        d| j                             d¦  «        ¦  «        d         | _	        | j         
                    ¦   «         | _        | j         
                    ¦   «         | _        | j        j        | j        z   }| j        j        |k     r>| j                             ¦   «         }|                      |¦  «         | j        j        |k     °>| j                             | j	        ¦  «        | _        | j                             d¦  «         | j                             |dz
  | j        z
  | j	        z
  dz
  ¦  «        }|                     dd¬¦  «        | _        d S )Nre   r5   r   é   úutf-8Úbackslashreplace)Úerrors)rj   r*   r   rŸ   Úslave_proxy_idÚexecution_timer0   r1   r/   Úschema_lengthÚread_uint16Ú
error_codeÚstatus_vars_lengthr@   r¡   Ú_read_status_vars_value_for_keyÚschemaÚadvancerz   Úquery)
r   r   r   r   r   rr   Ústatus_vars_end_posÚstatus_vars_keyr  rP   s
            €r)   r*   zQueryEvent.__init__â  s�  ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVð #œk×5Ò5Ñ7Ô7ˆÔØ"œk×5Ò5Ñ7Ô7ˆÔÝ#œ]¨4°´×1AÒ1AÀ!Ñ1DÔ1DÑEÔEÀaÔHˆÔØœ+×1Ò1Ñ3Ô3ˆŒØ"&¤+×"9Ò"9Ñ";Ô";ˆÔð #œkÔ4°tÔ7NÑNÐØŒkÔ$Ð':Ò:Ð:à"œk×4Ò4Ñ6Ô6ˆOà×0Ò0°ÑAÔAÐAð	 ŒkÔ$Ð':Ò:Ð:ð ”k×&Ò& tÔ'9Ñ:Ô:ˆŒØŒ×Ò˜AÑÔÐØ”× Ò Ø˜‰O˜dÔ5Ñ5¸Ô8JÑJÈQÑNñ
ô 
ˆð —\’\ 'Ð2D�\ÑEÔEˆŒ
ˆ
ˆ
r+   c                 óâ   •— t          ¦   «                              ¦   «          t          d| j        › �| j        z  ¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         d S )NúSchema: úExecution time: úQuery: )rj   rS   rO   r
  r  r  r¥   s    €r)   rS   zQueryEvent._dumpü  sm   ø€ Ý‰Œ�Š‰ŒˆÝÐ&˜œÐ&Ð&¨$¬+Ñ6Ñ7Ô7Ð7ÝÐ6 Ô!4Ð6Ð6Ñ7Ô7Ð7ÝÐ$˜œ
Ð$Ð$Ñ%Ô%Ð%Ð%Ð%r+   c                 óP	  — |t           k    r | j                             ¦   «         | _        dS |t          k    r | j                             ¦   «         | _        dS |t          k    rdS |t          k    r>| j         	                    ¦   «         | _
        | j         	                    ¦   «         | _        dS |t          k    r\| j         	                    ¦   «         | _        | j         	                    ¦   «         | _        | j         	                    ¦   «         | _        dS |t           k    r>| j                             ¦   «         }|r!| j                             |¦  «        | _        dS dS |t(          k    r>| j                             ¦   «         }|r!| j                             |¦  «        | _        dS dS |t,          k    r | j         	                    ¦   «         | _        dS |t0          k    r | j         	                    ¦   «         | _        dS |t4          k    r | j                             ¦   «         | _        dS |t8          k    rdS |t:          k    rx| j                             ¦   «         }|r| j                             |¦  «        | _        | j                             ¦   «         }|r!| j                             |¦  «        | _        dS dS |t@          k    rm| j                             ¦   «         }	 |dk    rdS g }tC          |¦  «        D ]0}| j         "                    ¦   «         }	| #                    |	¦  «         Œ1|| _$        dS |tJ          k    r | j         &                    ¦   «         | _'        dS |tP          k    rdS |tR          k    rdS |tT          k    r | j                             ¦   «         | _+        dS |tX          k    r | j                             ¦   «         | _-        dS |t\          k    r | j         	                    ¦   «         | _/        dS |t`          k    r | j                             ¦   «         | _1        dS |td          k    r | j                             ¦   «         | _3        dS |th          k    r | j         &                    ¦   «         | _5        dS |tl          k    r | j                             ¦   «         | _7        dS tp          ‚)a�  parse status variable VALUE for given KEY

        A status variable in query events is a sequence of status KEY-VALUE pairs.
        Parsing logic from mysql-server source code edited by dongwook-chan
        https://github.com/mysql/mysql-server/blob/beb865a960b9a8a16cf999c323e46c5b0c67f21f/libbinlogevents/src/statement_events.cpp#L181-L336

        :ivar key: key for status variable
        éþ   N)9ÚQ_FLAGS2_CODEr   rŸ   Úflags2ÚQ_SQL_MODE_CODErŠ   Úsql_modeÚQ_CATALOG_CODEÚQ_AUTO_INCREMENTr  Úauto_increment_incrementÚauto_increment_offsetÚQ_CHARSET_CODEÚcharacter_set_clientÚcollation_connectionÚcollation_serverÚQ_TIME_ZONE_CODEr¡   r/   Ú	time_zoneÚQ_CATALOG_NZ_CODEÚcatalog_nz_codeÚQ_LC_TIME_NAMES_CODEÚlc_time_names_numberÚQ_CHARSET_DATABASE_CODEÚcharset_database_numberÚQ_TABLE_MAP_FOR_UPDATE_CODEÚtable_map_for_updateÚQ_MASTER_DATA_WRITTEN_CODEÚ	Q_INVOKERÚuserÚhostÚQ_UPDATED_DB_NAMESr‘   Úread_stringr’   Úmts_accessed_db_namesÚQ_MICROSECONDSÚread_uint24ÚmicrosecondsÚQ_COMMIT_TSÚQ_COMMIT_TS2Ú!Q_EXPLICIT_DEFAULTS_FOR_TIMESTAMPÚexplicit_defaults_tsÚQ_DDL_LOGGED_WITH_XIDÚddl_xidÚQ_DEFAULT_COLLATION_FOR_UTF8MB4Ú$default_collation_for_utf8mb4_numberÚQ_SQL_REQUIRE_PRIMARY_KEYÚsql_require_primary_keyÚQ_DEFAULT_TABLE_ENCRYPTIONÚdefault_table_encryptionÚQ_HRNOWÚhrnowÚQ_XIDrÓ   r   )
r   ÚkeyÚtime_zone_lenÚcatalog_lenÚuser_lenÚhost_lenÚmts_accessed_dbsÚdbsr¼   Údbs
             r)   r	  z*QueryEvent._read_status_vars_value_for_key  sp  € ð •-ÒÐØœ+×1Ò1Ñ3Ô3ˆDŒKˆKˆKØ•OÒ#Ð#Ø œK×3Ò3Ñ5Ô5ˆDŒMˆMˆMØ•NÒ"Ð"ØˆDØÕ$Ò$Ð$Ø,0¬K×,CÒ,CÑ,EÔ,EˆDÔ)Ø)-¬×)@Ò)@Ñ)BÔ)BˆDÔ&Ð&Ð&Ø•NÒ"Ð"Ø(,¬×(?Ò(?Ñ(AÔ(AˆDÔ%Ø(,¬×(?Ò(?Ñ(AÔ(AˆDÔ%Ø$(¤K×$;Ò$;Ñ$=Ô$=ˆDÔ!Ð!Ð!ØÕ$Ò$Ð$Ø œK×2Ò2Ñ4Ô4ˆMØð AØ!%¤×!1Ò!1°-Ñ!@Ô!@�”��ðAð AàÕ%Ò%Ð%Øœ+×0Ò0Ñ2Ô2ˆKØð EØ'+¤{×'7Ò'7¸Ñ'DÔ'D�Ô$Ð$Ð$ðEð EàÕ(Ò(Ð(Ø(,¬×(?Ò(?Ñ(AÔ(AˆDÔ%Ð%Ð%ØÕ+Ò+Ð+Ø+/¬;×+BÒ+BÑ+DÔ+DˆDÔ(Ð(Ð(ØÕ/Ò/Ð/Ø(,¬×(?Ò(?Ñ(AÔ(AˆDÔ%Ð%Ð%ØÕ.Ò.Ð.ØˆDØ•IÒÐØ”{×-Ò-Ñ/Ô/ˆHØð 7Ø œK×,Ò,¨XÑ6Ô6�”	Ø”{×-Ò-Ñ/Ô/ˆHØð 7Ø œK×,Ò,¨XÑ6Ô6�”	�	�	ð7ð 7àÕ&Ò&Ð&Ø#œ{×5Ò5Ñ7Ô7Ððð   3Ò&Ð&Ø�ØˆCÝÐ+Ñ,Ô,ð ð �Ø”[×,Ò,Ñ.Ô.�Ø—
’
˜2‘”��Ø),ˆDÔ&Ð&Ð&Ø•NÒ"Ð"Ø $¤× 7Ò 7Ñ 9Ô 9ˆDÔÐÐØ•KÒÐØˆDØ•LÒ Ð ØˆDØÕ5Ò5Ð5Ø(,¬×(>Ò(>Ñ(@Ô(@ˆDÔ%Ð%Ð%ØÕ)Ò)Ð)Øœ;×2Ò2Ñ4Ô4ˆDŒLˆLˆLØÕ3Ò3Ð3Ø8<¼×8OÒ8OÑ8QÔ8QˆDÔ5Ð5Ð5ØÕ-Ò-Ð-Ø+/¬;×+AÒ+AÑ+CÔ+CˆDÔ(Ð(Ð(ØÕ.Ò.Ð.Ø,0¬K×,BÒ,BÑ,DÔ,DˆDÔ)Ð)Ð)Ø•GŠ^ˆ^Øœ×0Ò0Ñ2Ô2ˆDŒJˆJˆJØ•EŠ\ˆ\Ø”{×.Ò.Ñ0Ô0ˆDŒHˆHˆHå(Ð(r+   )rQ   r]   r^   r‚   r*   rS   r	  rƒ   r„   s   @r)   rý   rý   Ó  sv   ø€ € € € € ðð ðFð Fð Fð Fð Fð4&ð &ð &ð &ð &ðT)ð T)ð T)ð T)ð T)ð T)ð T)r+   rý   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚBeginLoadQueryEventzô
    This event is written into the binary log file for LOAD DATA INFILE events
    if the server variable binlog_mode was set to "STATEMENT".

    :ivar file_id: the id of the file
    :ivar block-data: data block about "LOAD DATA INFILE"
    c                 óÂ   •—  t          ¦   «         j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             |dz
  ¦  «        | _        d S )Nr7   )rj   r*   r   rŸ   Úfile_idr/   Ú
block_datarq   s         €r)   r*   zBeginLoadQueryEvent.__init__b  s^   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVð ”{×.Ò.Ñ0Ô0ˆŒØœ+×*Ò*¨:¸©>Ñ:Ô:ˆŒˆˆr+   c                 ó¤   •— t          ¦   «                              ¦   «          t          d| j        › �¦  «         t          d| j        › �¦  «         d S )Nú	File id: zBlock data: )rj   rS   rO   rO  rP  r¥   s    €r)   rS   zBeginLoadQueryEvent._dumpi  sL   ø€ Ý‰Œ�Š‰ŒˆÝÐ(˜$œ,Ð(Ð(Ñ)Ô)Ð)ÝÐ.˜Tœ_Ð.Ð.Ñ/Ô/Ð/Ð/Ð/r+   r¦   r„   s   @r)   rM  rM  Y  s[   ø€ € € € € ðð ð;ð ;ð ;ð ;ð ;ð0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0r+   rM  c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚExecuteLoadQueryEventaz  
    This event handles "LOAD DATA INFILE" statement.
    LOAD DATA INFILE statement reads data from file and insert into database's table.
    Since QueryEvent cannot explain this special action, ExecuteLoadQueryEvent is needed.
    So it is similar to a QUERY_EVENT except that it has extra static fields.

    :ivar slave_proxy_id: int - The id of the thread that issued this statement on the master server
    :ivar execution_time: int - The number of seconds that the statement took to execute
    :ivar schema_length: int - The length of the default database's name when the statement was executed.
    :ivar error_code: int - The error code resulting from execution of the statement on the master
    :ivar status_vars_length: int - The length of the status variable block
    :ivar file_id: int - The id of the loaded file
    :ivar start_pos: int - Offset from the start of the statement to the beginning of the filename
    :ivar end_pos: int - Offset from the start of the statement to the end of the filename
    :ivar dup_handling_flags: int - How LOAD DATA INFILE handles duplicated data (0x0: error, 0x1: ignore, 0x2: replace)
    c                 ó^  •—  t          ¦   «         j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             ¦   «         | _	        | j                             ¦   «         | _
        | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             ¦   «         | _        d S rF   )rj   r*   r   rŸ   r  r  r¡   r  r  r  r  rO  Ú	start_posÚend_posÚdup_handling_flagsrq   s         €r)   r*   zExecuteLoadQueryEvent.__init__�  sô   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVð #œk×5Ò5Ñ7Ô7ˆÔØ"œk×5Ò5Ñ7Ô7ˆÔØ!œ[×3Ò3Ñ5Ô5ˆÔØœ+×1Ò1Ñ3Ô3ˆŒØ"&¤+×"9Ò"9Ñ";Ô";ˆÔð ”{×.Ò.Ñ0Ô0ˆŒØœ×0Ò0Ñ2Ô2ˆŒØ”{×.Ò.Ñ0Ô0ˆŒØ"&¤+×"8Ò"8Ñ":Ô":ˆÔÐÐr+   c                 óô  •— t          t          | ¦  «                             ¦   «          t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j	        › �¦  «         t          d| j
        › �¦  «         t          d| j        › �¦  «         t          d	| j        › �¦  «         d S )
NzSlave proxy id: r  zSchema length: zError code: zStatus vars length: rR  zStart pos: z	End pos: zDup handling flags: )rj   rT  rS   rO   r  r  r  r  r  rO  rV  rW  rX  r¥   s    €r)   rS   zExecuteLoadQueryEvent._dump‘  s  ø€ ÝÕ# TÑ*Ô*×0Ò0Ñ2Ô2Ð2ÝÐ6 Ô!4Ð6Ð6Ñ7Ô7Ð7ÝÐ6 Ô!4Ð6Ð6Ñ7Ô7Ð7ÝÐ4 Ô 2Ð4Ð4Ñ5Ô5Ð5ÝÐ.˜Tœ_Ð.Ð.Ñ/Ô/Ð/ÝÐ> TÔ%<Ð>Ð>Ñ?Ô?Ð?ÝÐ(˜$œ,Ð(Ð(Ñ)Ô)Ð)ÝÐ,˜DœNÐ,Ð,Ñ-Ô-Ð-ÝÐ(˜$œ,Ð(Ð(Ñ)Ô)Ð)ÝÐ> TÔ%<Ð>Ð>Ñ?Ô?Ð?Ð?Ð?r+   r¦   r„   s   @r)   rT  rT  o  sd   ø€ € € € € ðð ð";ð ;ð ;ð ;ð ;ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@r+   rT  c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚIntvarEventa+  
    Stores the value of auto-increment variables.
    This event will be created just before a QueryEvent.

    :ivar type: int - 1 byte identifying the type of variable stored.
    Can be either LAST_INSERT_ID_EVENT (1) or INSERT_ID_EVENT (2).
    :ivar value: int - The value of the variable
    c                 óº   •—  t          ¦   «         j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             ¦   «         | _        d S rF   )rj   r*   r   r¡   ÚtyperŸ   Úvaluerq   s         €r)   r*   zIntvarEvent.__init__¨  sX   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVð ”K×*Ò*Ñ,Ô,ˆŒ	Ø”[×,Ò,Ñ.Ô.ˆŒ
ˆ
ˆ
r+   c                 ó¤   •— t          ¦   «                              ¦   «          t          d| j        › �¦  «         t          d| j        › �¦  «         d S )Nztype: úValue: )rj   rS   rO   r]  r^  r¥   s    €r)   rS   zIntvarEvent._dump¯  sL   ø€ Ý‰Œ�Š‰ŒˆÝÐ"�t”yÐ"Ð"Ñ#Ô#Ð#ÝÐ$˜œ
Ð$Ð$Ñ%Ô%Ð%Ð%Ð%r+   r¦   r„   s   @r)   r[  r[  ž  s[   ø€ € € € € ðð ð/ð /ð /ð /ð /ð&ð &ð &ð &ð &ð &ð &ð &ð &r+   r[  c                   óX   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zˆ fd„Zˆ xZ	S )Ú	RandEventa´  
    RandEvent is generated every time a statement uses the RAND() function.
    Indicates the seed values to use for generating a random number with RAND() in the next statement.

    RandEvent only works in statement-based logging (need to set binlog_format as 'STATEMENT')
    and only works when the seed number is not specified.

    :ivar seed1: int - value for the first seed
    :ivar seed2: int - value for the second seed
    c                 óº   •—  t          ¦   «         j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             ¦   «         | _        d S rF   )rj   r*   r   rŠ   Ú_seed1Ú_seed2rq   s         €r)   r*   zRandEvent.__init__Á  sV   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVà”k×-Ò-Ñ/Ô/ˆŒØ”k×-Ò-Ñ/Ô/ˆŒˆˆr+   c                 ó   — | j         S )zGet the first seed value)rd  rJ   s    r)   Úseed1zRandEvent.seed1Ç  ó   € ð Œ{Ðr+   c                 ó   — | j         S )zGet the second seed value)re  rJ   s    r)   Úseed2zRandEvent.seed2Ì  rh  r+   c                 ó¤   •— t          ¦   «                              ¦   «          t          d| j        › �¦  «         t          d| j        › �¦  «         d S )Nzseed1: zseed2: )rj   rS   rO   rg  rj  r¥   s    €r)   rS   zRandEvent._dumpÑ  sL   ø€ Ý‰Œ�Š‰ŒˆÝÐ$˜œ
Ð$Ð$Ñ%Ô%Ð%ÝÐ$˜œ
Ð$Ð$Ñ%Ô%Ð%Ð%Ð%r+   )
rQ   r]   r^   r‚   r*   r_   rg  rj  rS   rƒ   r„   s   @r)   rb  rb  µ  s‘   ø€ € € € € ð	ð 	ð0ð 0ð 0ð 0ð 0ð ðð ñ „Xðð ðð ñ „Xðð&ð &ð &ð &ð &ð &ð &ð &ð &r+   rb  c                   óŽ   ‡ — e Zd ZdZˆ fd„Zd„ Zdedefd„Zdede	fd„Z
dededefd	„Zdedej        fd
„Zdefd„Zdˆ fd„Zˆ xZS )ÚUserVarEventaI  
    UserVarEvent is generated every time a statement uses a user variable.
    Indicates the value to use for the user variable in the next statement.

    :ivar name_len: int - Length of user variable
    :ivar name: str - User variable name
    :ivar value: str - Value of the user variable
    :ivar type: int - Type of the user variable
    :ivar charset: int - The number of the character set for the user variable
    :ivar is_null: int - Non-zero if the variable value is the SQL NULL value, 0 otherwise
    :ivar flags: int - Extra flags associated with the user variable
    c                 ór  •—  t          t          | ¦  «        j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             | j        ¦  «                             ¦   «         | _        | j         	                    ¦   «         | _
        d| j        gd| j        gd| j        gd| j        gd| j        gdœ| _        d | _        d | _        d| _        | j
        s²| j         	                    ¦   «         | _        | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             | j        ¦  «        | _        | j         	                    ¦   «         | _        |                      ¦   «          d S d\  | _        | _        | _        | _        | _        d S )	NÚSTRING_RESULTÚREAL_RESULTÚ
INT_RESULTÚ
ROW_RESULTÚDECIMAL_RESULT)r   r5   rØ   rÞ   r7   r+   )NNNNN)rj   rm  r*   r   rŸ   Úname_lenr/   rz   Únamer¡   Úis_nullÚ_read_stringÚ
_read_realÚ	_read_intÚ_read_defaultÚ_read_decimalÚtype_to_codes_and_methodr^  r¢   Útemp_value_bufferr]  ÚcharsetÚ	value_lenÚ_set_value_from_temp_bufferrq   s         €r)   r*   zUserVarEvent.__init__å  s£  ø€ Ø*��l˜DÑ!Ô!Ô*Ø˜ Y°ð	
ð 	
ØBHð	
ð 	
ð 	
ð
 "œ[×4Ò4Ñ6Ô6ˆŒØœ×)Ò)¨$¬-Ñ8Ô8×?Ò?ÑAÔAˆŒ	Ø œK×2Ò2Ñ4Ô4ˆŒà" DÔ$5Ð6Ø  $¤/Ð2Ø ¤Ð0Ø Ô!3Ð4Ø# TÔ%7Ð8ð/
ð /
ˆÔ%ð IMˆŒ
Ø$(ˆŒ
Ø;>ˆÔàŒ|ð 	Ø!œ[×3Ò3Ñ5Ô5ˆDŒIØ $¤× 7Ò 7Ñ 9Ô 9ˆDŒLØ"&¤+×"9Ò"9Ñ";Ô";ˆDŒNØ?C¼{×?OÒ?OØ”ñ@ô @ˆDÔ"ð #œk×4Ò4Ñ6Ô6ˆDŒJØ×,Ò,Ñ.Ô.Ð.Ð.Ð.ðOÑKˆDŒI�t”| T¤^°T´ZÀÄÀÀr+   c                 óÜ   — | j         rd| j                             | j        d| j        g¦  «        \  }}|dk    r || j         | j        ¦  «        | _        dS  || j         ¦  «        | _        dS dS )zQ
        Set the value from the temporary buffer based on the type code.
        ÚUNKNOWN_RESULTrq  N)r}  r|  Úgetr]  rz  r¢   r^  )r   Ú	type_codeÚread_methods      r)   r€  z(UserVarEvent._set_value_from_temp_buffer  sŠ   € ð Ô!ð 	AØ%)Ô%B×%FÒ%FØ”	Ð,¨dÔ.@ÐAñ&ô &Ñ"ˆI�{ð ˜LÒ(Ð(Ø(˜[¨Ô)?ÀÄÑLÔL�”
�
�
à(˜[¨Ô)?Ñ@Ô@�”
�
�
ð	Að 	Ar+   ÚbufferrD   c                 ó*   — |                      ¦   «         S )z#
        Read string data.
        )rz   ©r   r†  s     r)   rw  zUserVarEvent._read_string  s   € ð �}Š}‰ŒÐr+   c                 ó8   — t          j        d|¦  «        d         S )z!
        Read real data.
        z<dr   ©r0   r1   rˆ  s     r)   rx  zUserVarEvent._read_real  s   € õ Œ}˜T 6Ñ*Ô*¨1Ô-Ð-r+   r¢   c                 óL   — |dk    rdnd}t          j        ||¦  «        d         S )z$
        Read integer data.
        r5   r.   z<qr   rŠ  )r   r†  r¢   Úfmts       r)   ry  zUserVarEvent._read_int%  s,   € ð ˜q’j�jˆdˆd dˆÝŒ}˜S &Ñ)Ô)¨!Ô,Ð,r+   c                 óž   — | j         d         | _        | j         d         | _        | j         dd…         }t          || j        | j        ¦  «        S )z$
        Read decimal data.
        r   r5   rØ   N)r}  Ú	precisionÚdecimalsr   )r   r†  Úraw_decimals      r)   r{  zUserVarEvent._read_decimal,  sI   € ð Ô/°Ô2ˆŒØÔ.¨qÔ1ˆŒØÔ,¨Q¨R¨RÔ0ˆÝ'¨°T´^ÀTÄ]ÑSÔSÐSr+   c                 ó@   — | j                              | j        ¦  «        S )zH
        Read default data.
        Used when the type is None.
        )r   r/   r  rJ   s    r)   rz  zUserVarEvent._read_default5  s   € ð
 Œ{×Ò ¤Ñ/Ô/Ð/r+   Nc                 óÄ  •— t          t          | ¦  «                             ¦   «          t          d| j        › �¦  «         t          d| j        rdnd› �¦  «         | j        s~t          d| j                             | j        dg¦  «        d         › �¦  «         t          d| j	        › �¦  «         t          d	| j
        › �¦  «         t          d
| j        › �¦  «         d S d S )NzUser variable name: z	Is NULL: ÚYesÚNozType: ÚUNKNOWN_TYPEr   z	Charset: r`  r¤   )rj   rm  rS   rO   ru  rv  r|  rƒ  r]  r~  r^  r¢   r¥   s    €r)   rS   zUserVarEvent._dump<  sü   ø€ Ý�l˜DÑ!Ô!×'Ò'Ñ)Ô)Ð)ÝÐ0 T¤YÐ0Ð0Ñ1Ô1Ð1ÝÐ; 4¤<Ð9˜%˜%°TÐ;Ð;Ñ<Ô<Ð<ØŒ|ð 	*ÝØ\˜Ô6×:Ò:¸4¼9À~ÐFVÑWÔWÐXYÔZÐ\Ð\ñô ð õ Ð,˜dœlÐ,Ð,Ñ-Ô-Ð-ÝÐ(˜DœJÐ(Ð(Ñ)Ô)Ð)ÝÐ(˜DœJÐ(Ð(Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*r+   )rD   N)rQ   r]   r^   r‚   r*   r€  Úbytesr`   rw  Úfloatrx  rå   ry  ÚdecimalÚDecimalr{  rz  rS   rƒ   r„   s   @r)   rm  rm  ×  s%  ø€ € € € € ðð ð%ð %ð %ð %ð %ðNAð Að Að 5ð ¨Sð ð ð ð ð. ð .¨5ð .ð .ð .ð .ð- ð -¨cð -°cð -ð -ð -ð -ðT Eð T¨g¬oð Tð Tð Tð Tð0˜uð 0ð 0ð 0ð 0ð
*ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*r+   rm  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚMariadbStartEncryptionEventu:  
    SinceÂ MariaDB 10.1.7,
    theÂ START_ENCRYPTIONÂ event is written to everyÂ binary logÂ file
    ifÂ encrypt_binlogÂ is set to ON. Prior to enabling this setting,
    additional configuration steps are required in MariaDB.
    (Link: https://mariadb.com/kb/en/encrypting-binary-logs/)

    This event is written just once, after the Format Description event

    Attributes:
        schema: The Encryption scheme, always set to 1 for system files.
        key_version: The Encryption key version.
        nonce: Nonce (12 random bytes) of current binlog file.
    c                 óø   •—  t          ¦   «         j        ||||fi |¤Ž | j                             ¦   «         | _        | j                             ¦   «         | _        | j                             d¦  «        | _        d S )Nrv   )	rj   r*   r   r¡   r
  rŸ   Úkey_versionr/   Únoncerq   s         €r)   r*   z$MariadbStartEncryptionEvent.__init__Y  sn   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVà”k×,Ò,Ñ.Ô.ˆŒØœ;×2Ò2Ñ4Ô4ˆÔØ”[×%Ò% bÑ)Ô)ˆŒ
ˆ
ˆ
r+   c                 ó�   — t          d| j        › �¦  «         t          d| j        › �¦  «         t          d| j        › �¦  «         d S )Nr  zKey version: zNonce: )rO   r
  r�  rž  rJ   s    r)   rS   z!MariadbStartEncryptionEvent._dump`  sT   € ÝÐ&˜œÐ&Ð&Ñ'Ô'Ð'ÝÐ0˜dÔ.Ð0Ð0Ñ1Ô1Ð1ÝÐ$˜œ
Ð$Ð$Ñ%Ô%Ð%Ð%Ð%r+   r¦   r„   s   @r)   r›  r›  I  sQ   ø€ € € € € ðð ð*ð *ð *ð *ð *ð&ð &ð &ð &ð &ð &ð &r+   r›  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚRowsQueryLogEventa  
    Record original query for the row events in Row-Based Replication

    More details are available in the MySQL Knowledge Base:
    https://dev.mysql.com/doc/dev/mysql-server/latest/classRows__query__log__event.html

    :ivar query: str - The executed SQL statement
    c                 óæ   •—  t          t          | ¦  «        j        ||||fi |¤Ž | j                             d¦  «         | j                             ¦   «                              d¦  «        | _        d S )Nr5   r   )rj   r¡  r*   r   r  Úread_availablerz   r  rq   s         €r)   r*   zRowsQueryLogEvent.__init__p  sz   ø€ Ø/�Õ Ñ&Ô&Ô/Ø˜ Y°ð	
ð 	
ØBHð	
ð 	
ð 	
ð 	Œ×Ò˜AÑÔÐØ”[×/Ò/Ñ1Ô1×8Ò8¸ÑAÔAˆŒ
ˆ
ˆ
r+   c                 ón   — t          d| j        j        › d�¦  «         t          d| j        › �¦  «         d S )NrM   rN   r  )rO   rP   rQ   r  rJ   s    r)   rT   zRowsQueryLogEvent.dumpw  s@   € ÝÐ2�T”^Ô,Ð2Ð2Ð2Ñ3Ô3Ð3ÝÐ$˜œ
Ð$Ð$Ñ%Ô%Ð%Ð%Ð%r+   rÆ   r„   s   @r)   r¡  r¡  f  sV   ø€ € € € € ðð ðBð Bð Bð Bð Bð&ð &ð &ð &ð &ð &ð &r+   r¡  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚNotImplementedEventz‡
    Used as a temporary class for events that have not yet been implemented.

    The event referencing this class skips parsing.
    c                 óv   •—  t          ¦   «         j        ||||fi |¤Ž | j                             |¦  «         d S rF   )rj   r*   r   r  rq   s         €r)   r*   zNotImplementedEvent.__init__ƒ  sD   ø€ Ø�‰ŒÔ˜ j°)¸^ÐVÐVÈvÐVÐVÐVØŒ×Ò˜JÑ'Ô'Ð'Ð'Ð'r+   rº   r„   s   @r)   r¦  r¦  |  sB   ø€ € € € € ðð ð(ð (ð (ð (ð (ð (ð (ð (ð (r+   r¦  )'rx   r0   rG   r˜  r<   Ú+pymysqlreplication.constants.STATUS_VAR_KEYÚpymysqlreplication.exceptionsr   Úpymysqlreplication.util.bytesr   Úpymysqlreplication.loggerr   Útypingr   r   rX   Úobjectr
   rc   r†   rš   r¨   r®   r³   rÀ   rÈ   rÖ   rò   rô   rø   rý   rM  rT  r[  rb  rm  r›  r¡  r¦  r\   r+   r)   ú<module>r®     sv  ðØ €€€Ø €€€Ø €€€Ø €€€Ø €€€à 9Ð 9Ð 9Ð 9Ø @Ð @Ð @Ð @Ð @Ð @Ø BÐ BÐ BÐ BÐ BÐ BØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø €€€ðUð Uð Uð Uð U�&ñ Uô Uð Uðp4,ð 4,ð 4,ð 4,ð 4,�ñ 4,ô 4,ð 4,ðn*@ð *@ð *@ð *@ð *@˜ñ *@ô *@ð *@ðZ$ð $ð $ð $ð $�{ñ $ô $ð $ð8,ð ,ð ,ð ,ð , ;ñ ,ô ,ð ,ð,7ð 7ð 7ð 7ð 7˜{ñ 7ô 7ð 7ð$*
ð *
ð *
ð *
ð *
˜;ñ *
ô *
ð *
ðZð ð ð ð �+ñ ô ð ð."ð "ð "ð "ð "�[ñ "ô "ð "ðD$Fð $Fð $Fð $Fð $F˜[ñ $Fô $Fð $FðN	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð-ð -ð -ð -ð -ˆ{ñ -ô -ð -ð$/ð /ð /ð /ð /˜ñ /ô /ð /ðBC)ð C)ð C)ð C)ð C)�ñ C)ô C)ð C)ðL0ð 0ð 0ð 0ð 0˜+ñ 0ô 0ð 0ð,,@ð ,@ð ,@ð ,@ð ,@˜Kñ ,@ô ,@ð ,@ð^&ð &ð &ð &ð &�+ñ &ô &ð &ð.&ð &ð &ð &ð &�ñ &ô &ð &ðDo*ð o*ð o*ð o*ð o*�;ñ o*ô o*ð o*ðd&ð &ð &ð &ð & +ñ &ô &ð &ð:&ð &ð &ð &ð &˜ñ &ô &ð &ð,	(ð 	(ð 	(ð 	(ð 	(˜+ñ 	(ô 	(ð 	(ð 	(ð 	(r+   