§
    ‚Štj�4  ã                   óx  — d dl Z d dlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ ddlmZmZ  G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z  G d„ de	¦  «        Z! G d„ dej        ¦  «        Z"e G d„ de¦  «        ¦   «         Z# G d„ de#¦  «        Z$ ed¬¦  «         G d „ d!ee#¦  «        ¦   «         Z% G d"„ d#ej        ¦  «        Z& ed$¬¦  «         G d%„ d&e#¦  «        ¦   «         Z'g d'¢Z(dS )(é    Né   )ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutputWithNoAttention)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚUVDocBackboneConfigÚUVDocConfigc                   ó|   ‡ — e Zd ZdZ	 	 	 	 	 	 	 dded	ed
ededededededefˆ fd„Zdej	        dej	        fd„Z
ˆ xZS )ÚUVDocConvLayerz<Convolutional layer with batch normalization and activation.r   r   r   ÚzerosFÚreluÚin_channelsÚout_channelsÚkernel_sizeÚstrideÚpaddingÚpadding_modeÚbiasÚdilationÚ
activationc
           
      ó
  •— t          ¦   «                              ¦   «          t          j        ||||||||¬¦  «        | _        t          j        |¦  «        | _        |	�t          |	         nt          j        ¦   «         | _	        d S )N)r   r   r   r   r   r   )
ÚsuperÚ__init__ÚnnÚConv2dÚconvolutionÚBatchNorm2dÚnormalizationr   ÚIdentityr    )Úselfr   r   r   r   r   r   r   r   r    Ú	__class__s             €úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/uvdoc/modeling_uvdoc.pyr#   zUVDocConvLayer.__init__(   s€   ø€ õ 	‰Œ×ÒÑÔÐåœ9ØØØØ#ØØØ%Øð	
ñ 	
ô 	
ˆÔõ  œ^¨LÑ9Ô9ˆÔØ0:Ð0F�& Ô,Ð,ÍBÌKÉMÌMˆŒˆˆó    Úhidden_statesÚreturnc                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S ©N)r&   r(   r    ©r*   r.   s     r,   ÚforwardzUVDocConvLayer.forwardC   s?   € Ø×(Ò(¨Ñ7Ô7ˆØ×*Ò*¨=Ñ9Ô9ˆØŸš¨Ñ6Ô6ˆØÐr-   )r   r   r   r   Fr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚstrÚboolr#   ÚtorchÚTensorr3   Ú__classcell__©r+   s   @r,   r   r   %   sí   ø€ € € € € ØFÐFð ØØØ#ØØØ ðZð ZàðZð ðZð ð	Zð
 ðZð ðZð ðZð ðZð ðZð ðZð Zð Zð Zð Zð Zð6 U¤\ð °e´lð ð ð ð ð ð ð ð r-   r   c                   ót   ‡ — e Zd ZdZ	 	 	 	 	 ddededed	ed
edededefˆ fd„Zdej	        dej	        fd„Z
ˆ xZS )ÚUVDocResidualBlockz*Base residual block with dilation support.r   r   Fr   r   r   r   r   r   r   Ú
downsampler    c	           
      ój  •— t          ¦   «                              ¦   «          |rt          |||||dz  dd ¬¦  «        nt          j        ¦   «         | _        t          ||||||d¬¦  «        | _        t          |||d|d|d ¬¦  «        | _        |�t          |         nt          j        ¦   «         | _	        d S )Né   T)r   r   r   r   r   r   r    )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    )
r"   r#   r   r$   r)   Ú	conv_downÚ
conv_startÚ
conv_finalr   Úact_fn)
r*   r   r   r   r   r   r   rA   r    r+   s
            €r,   r#   zUVDocResidualBlock.__init__M   sæ   ø€ õ 	‰Œ×ÒÑÔÐð ð
�NØ'Ø)Ø'ØØ# qÑ(ØØðñ ô ð õ ”‘”ð 	Œõ )Ø#Ø%Ø#ØØØØð
ñ 
ô 
ˆŒõ )Ø$Ø%Ø#ØØØØØð	
ñ 	
ô 	
ˆŒð -7Ð,B•f˜ZÔ(Ð(ÍÌÉÌˆŒˆˆr-   r.   r/   c                 ó¸   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }||z   }|                      |¦  «        }|S r1   )rD   rE   rF   rG   )r*   r.   Úresiduals      r,   r3   zUVDocResidualBlock.forward   sV   € Ø—>’> -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØ%¨Ñ0ˆØŸš MÑ2Ô2ˆØÐr-   )r   r   r   Fr   )r4   r5   r6   r7   r8   r:   r9   r#   r;   r<   r3   r=   r>   s   @r,   r@   r@   J   sÝ   ø€ € € € € Ø4Ð4ð ØØØ Ø ð0Vð 0Vàð0Vð ð0Vð ð	0Vð
 ð0Vð ð0Vð ð0Vð ð0Vð ð0Vð 0Vð 0Vð 0Vð 0Vð 0Vðd U¤\ð °e´lð ð ð ð ð ð ð ð r-   r@   c                   óF   ‡ — e Zd ZdZˆ fd„Zdej        dej        fd„Zˆ xZS )ÚUVDocResNetStagez3A ResNet stage containing multiple residual blocks.c                 ó  •— t          ¦   «                              ¦   «          |j        |         }t          j        g ¦  «        | _        |D ]A\  }}}}| j                             t          |||rdnd|dz  |||j        ¬¦  «        ¦  «         ŒBd S )NrC   r   )r   r   r   r   r   rA   r   )	r"   r#   Úresnet_configsr$   Ú
ModuleListÚlayersÚappendr@   r   )	r*   ÚconfigÚstage_indexÚstagesr   r   r   rA   r+   s	           €r,   r#   zUVDocResNetStage.__init__‹   s¯   ø€ Ý‰Œ×ÒÑÔÐàÔ& {Ô3ˆÝ”m BÑ'Ô'ˆŒØ?Eð 	ð 	Ñ;ˆK˜ x°ØŒK×ÒÝ"Ø +Ø!-Ø *Ð1˜1˜1°Ø$ q™LØ%Ø)Ø &Ô 2ðñ ô ñ
ô 
ð 
ð 
ð	ð 	r-   r.   r/   c                 ó0   — | j         D ]} ||¦  «        }Œ|S r1   )rO   )r*   r.   Úlayers      r,   r3   zUVDocResNetStage.forward�   s*   € Ø”[ð 	1ð 	1ˆEØ!˜E -Ñ0Ô0ˆMˆMØÐr-   ©	r4   r5   r6   r7   r#   r;   r<   r3   r=   r>   s   @r,   rK   rK   ˆ   sd   ø€ € € € € Ø=Ð=ðð ð ð ð ð$ U¤\ð °e´lð ð ð ð ð ð ð ð r-   rK   c                   óF   ‡ — e Zd ZdZˆ fd„Zdej        dej        fd„Zˆ xZS )ÚUVDocResNetz$Initial resnet_head and resnet_down.c                 óF  •— t          ¦   «                              ¦   «          t          j        g ¦  «        | _        t          t          |j        ¦  «        ¦  «        D ]]}| j                             t          |j        |         d         |j        |         d         |j	        d|j	        dz  ¬¦  «        ¦  «         Œ^t          j        g ¦  «        | _
        t          t          |j        ¦  «        ¦  «        D ],}t          ||¦  «        }| j
                             |¦  «         Œ-d S )Nr   r   rC   )r   r   r   r   r   )r"   r#   r$   rN   Úresnet_headÚrangeÚlenrP   r   r   Úresnet_downrM   rK   )r*   rQ   ÚirR   Ústager+   s        €r,   r#   zUVDocResNet.__init__¦   s  ø€ Ý‰Œ×ÒÑÔÐÝœ=¨Ñ,Ô,ˆÔÝ•s˜6Ô-Ñ.Ô.Ñ/Ô/ð 		ð 		ˆAØÔ×#Ò#ÝØ &Ô 2°1Ô 5°aÔ 8Ø!'Ô!3°AÔ!6°qÔ!9Ø &Ô 2ØØ"Ô.°!Ñ3ðñ ô ñô ð ð õ œ=¨Ñ,Ô,ˆÔÝ ¥ VÔ%:Ñ!;Ô!;Ñ<Ô<ð 	+ð 	+ˆKÝ$ V¨[Ñ9Ô9ˆEØÔ×#Ò# EÑ*Ô*Ð*Ð*ð	+ð 	+r-   r.   r/   c                 óZ   — | j         D ]} ||¦  «        }Œ| j        D ]} ||¦  «        }Œ|S r1   )rZ   r]   )r*   r.   Úheadr_   s       r,   r3   zUVDocResNet.forward¹   sN   € ØÔ$ð 	0ð 	0ˆDØ ˜D Ñ/Ô/ˆMˆMØÔ%ð 	1ð 	1ˆEØ!˜E -Ñ0Ô0ˆMˆMØÐr-   rV   r>   s   @r,   rX   rX   £   sd   ø€ € € € € Ø.Ð.ð+ð +ð +ð +ð +ð& U¤\ð °e´lð ð ð ð ð ð ð ð r-   rX   c                   óV   ‡ — e Zd ZdZˆ fd„Zdej        dee         dej        fd„Z	ˆ xZ
S )ÚUVDocBridgeBlockzDBridge module with dilated convolutions for long-range dependencies.c           	      óú   •— t          ¦   «                              ¦   «          t          j        g ¦  «        | _        |j        |         }|D ]0\  }}| j                             t          ||||¬¦  «        ¦  «         Œ1d S )N)r   r   )r"   r#   r$   rN   ÚblocksÚstage_configsrP   r   )r*   rQ   Úbridge_indexÚbridger   r   r+   s         €r,   r#   zUVDocBridgeBlock.__init__Ä   s…   ø€ Ý‰Œ×ÒÑÔÐÝ”m BÑ'Ô'ˆŒØÔ% lÔ3ˆØ%+ð 	nð 	nÑ!ˆK˜ØŒK×Ò�~¨k¸;ÐPXÐckÐlÑlÔlÑmÔmÐmÐmð	nð 	nr-   r.   Úkwargsr/   c                 ó0   — | j         D ]} ||¦  «        }Œ|S r1   )re   )r*   r.   ri   Úblocks       r,   r3   zUVDocBridgeBlock.forwardË   s,   € ð
 ”[ð 	1ð 	1ˆEØ!˜E -Ñ0Ô0ˆMˆMØÐr-   )r4   r5   r6   r7   r#   r;   r<   r   r   r3   r=   r>   s   @r,   rc   rc   Á   s}   ø€ € € € € ØNÐNðnð nð nð nð nðà”|ðð Ð+Ô,ðð 
Œð	ð ð ð ð ð ð ð r-   rc   c                   óF   ‡ — e Zd ZdZˆ fd„Zdej        dej        fd„Zˆ xZS )ÚUVDocPointPositions2DzDModule for predicting 2D point positions for document rectification.c           	      ó–  •— t          ¦   «                              ¦   «          t          |j        d         d         |j        d         d         |j        d|j        dz  |j        |j        ¬¦  «        | _        t          j	        |j        d         d         |j        d         d         |j        d|j        dz  |j        ¬¦  «        | _
        d S )Nr   r   rC   )r   r   r   r   r   r   r    )r   r   r   r   r   r   )r"   r#   r   Úout_point_positions2Dr   r   Ú
hidden_actrD   r$   r%   Úconv_up©r*   rQ   r+   s     €r,   r#   zUVDocPointPositions2D.__init__Ø   sÇ   ø€ Ý‰Œ×ÒÑÔÐå'ØÔ4°QÔ7¸Ô:ØÔ5°aÔ8¸Ô;ØÔ*ØØÔ&¨!Ñ+ØÔ,ØÔ(ð
ñ 
ô 
ˆŒõ ”yØÔ4°QÔ7¸Ô:ØÔ5°aÔ8¸Ô;ØÔ*ØØÔ&¨!Ñ+ØÔ,ð
ñ 
ô 
ˆŒˆˆr-   r.   r/   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r1   )rD   rq   r2   s     r,   r3   zUVDocPointPositions2D.forwardî   s*   € ØŸš }Ñ5Ô5ˆØŸš ]Ñ3Ô3ˆØÐr-   rV   r>   s   @r,   rm   rm   Õ   sd   ø€ € € € € ØNÐNð
ð 
ð 
ð 
ð 
ð, U¤\ð °e´lð ð ð ð ð ð ð ð r-   rm   c                   ót   ‡ — e Zd ZU dZeed<   dZdZdZdZ	dZ
deiZ ej        ¦   «         ˆ fd„¦   «         Zˆ xZS )	ÚUVDocPreTrainedModelzÈ
    Base class for all PPOCRV5 Server Det pre-trained models. Handles model initialization,
    configuration, and loading of pre-trained weights, following the Transformers library conventions.
    rQ   ÚuvdocÚpixel_values)ÚimageTr.   c                 óª   •— t          ¦   «                              |¦  «         t          |t          j        ¦  «        r|                     ¦   «          dS dS )zInitialize the weights.N)r"   Ú_init_weightsÚ
isinstancer$   ÚPReLUÚreset_parameters)r*   Úmoduler+   s     €r,   rz   z"UVDocPreTrainedModel._init_weights  sS   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�bœhÑ'Ô'ð 	&Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%ð	&ð 	&r-   )r4   r5   r6   r7   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_can_compile_fullgraphÚsupports_gradient_checkpointingrc   Ú_can_record_outputsr;   Úno_gradrz   r=   r>   s   @r,   ru   ru   ô   s‘   ø€ € € € € € ðð ð
 ÐÐÑØÐØ$€OØ!ÐØ!ÐØ&*Ð#àÐ)ðÐð €U„]�_„_ð&ð &ð &ð &ñ „_ð&ð &ð &ð &ð &r-   ru   c                   ór   ‡ — e Zd Zˆ fd„Zeedej        dee	         dej        fd„¦   «         ¦   «         Z
ˆ xZS )ÚUVDocBridgec                 ó<  •— t          ¦   «                              |¦  «         t          j        g ¦  «        | _        t          t          |j        ¦  «        ¦  «        D ]*}| j                             t          ||¦  «        ¦  «         Œ+|  
                    ¦   «          d S r1   )r"   r#   r$   rN   rh   r[   r\   rf   rP   rc   Ú	post_init)r*   rQ   rg   r+   s      €r,   r#   zUVDocBridge.__init__  sŠ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”m BÑ'Ô'ˆŒÝ!¥# fÔ&:Ñ";Ô";Ñ<Ô<ð 	Gð 	GˆLØŒK×ÒÕ/°¸ÑEÔEÑFÔFÐFÐFØ�ŠÑÔÐÐÐr-   r.   ri   r/   c                 óL   — | j         D ]} ||¦  «        }Œt          |¬¦  «        S )N)Úlast_hidden_state)rh   r	   )r*   r.   ri   rU   Úfeatures        r,   r3   zUVDocBridge.forward  s7   € ð ”[ð 	+ð 	+ˆEØ�e˜MÑ*Ô*ˆGˆGÝ-ÀÐHÑHÔHÐHr-   )r4   r5   r6   r#   r   r   r;   r<   r   r   r3   r=   r>   s   @r,   rˆ   rˆ     s”   ø€ € € € € ðð ð ð ð ð  ØðIà”|ðIð Ð+Ô,ðIð 
Œð	Ið Ið Iñ „_ñ  ÔðIð Ið Ið Ið Ir-   rˆ   z6
    UVDoc backbone model for feature extraction.
    )Úcustom_introc            	       ó†   ‡ — e Zd ZdZdZdefˆ fd„Zeee	de
j        dee         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )	ÚUVDocBackboneFÚbackbonerQ   c                 óN  •— t          ¦   «                              |¦  «         |j        d         d         g}|j        D ]#}|                     |d         d         ¦  «         Œ$|| _        t          |¦  «        | _        t          |¦  «        | _	        |  
                    ¦   «          d S )Néÿÿÿÿr   r   )r"   r#   rZ   rf   rP   Únum_featuresrX   Úresnetrˆ   rh   rŠ   )r*   rQ   r”   r_   r+   s       €r,   r#   zUVDocBackbone.__init__*  s�   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àÔ*¨2Ô.¨rÔ2Ð3ˆØÔ)ð 	-ð 	-ˆEØ×Ò  a¤¨¤Ñ,Ô,Ð,Ð,Ø(ˆÔå! &Ñ)Ô)ˆŒÝ! &Ñ)Ô)ˆŒà�ŠÑÔÐÐÐr-   rw   ri   r/   c                 óà   — |                       |¦  «        } | j        |fi |¤Ž}d}t          | j        ¦  «        D ]\  }}|| j        v r||j        |         fz  }Œ t          ||j        ¬¦  «        S )N© )Úfeature_mapsr.   )r•   rh   Ú	enumerateÚstage_namesÚout_featuresr.   r   )r*   rw   ri   r.   Úoutputsr˜   Úidxr_   s           r,   r3   zUVDocBackbone.forward7  s•   € ð Ÿš LÑ1Ô1ˆØ�$”+˜mÐ6Ð6¨vÐ6Ð6ˆàˆÝ# DÔ$4Ñ5Ô5ð 	>ð 	>‰JˆC�Ø˜Ô)Ð)Ð)Ø Ô!6°sÔ!;Ð =Ñ=�øåØ%Ø!Ô/ð
ñ 
ô 
ð 	
r-   )r4   r5   r6   Úhas_attentionsr€   r   r#   r   r   r   r;   ÚFloatTensorr   r   r   r3   r=   r>   s   @r,   r�   r�   !  s­   ø€ € € € € ð €NØ"ÐðÐ2ð ð ð ð ð ð ð Ø Øð
àÔ'ð
ð Ð+Ô,ð
ð 
ð	
ð 
ð 
ñ „^ñ !Ô ñ Ôð
ð 
ð 
ð 
ð 
r-   r�   c                   ó\   ‡ — e Zd Zˆ fd„Zdej        dee         dej        j        fd„Zˆ xZ	S )Ú	UVDocHeadc                 ó  •— t          ¦   «                              ¦   «          t          |j        j        ¦  «        | _        t          |j        d         | j        z  |j        d         dddd¬¦  «        | _        t          |¦  «        | _	        d S )Nr   r   )r   r   r   r   r   r   )
r"   r#   r\   Úbackbone_configrf   Únum_bridge_layersr   Úbridge_connectorrm   ro   rr   s     €r,   r#   zUVDocHead.__init__N  sˆ   ø€ Ý‰Œ×ÒÑÔÐÝ!$ VÔ%;Ô%IÑ!JÔ!JˆÔå .ØÔ/°Ô2°TÔ5KÑKØÔ0°Ô3ØØØØð!
ñ !
ô !
ˆÔõ &;¸6Ñ%BÔ%BˆÔ"Ð"Ð"r-   r.   ri   r/   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r1   )r¥   ro   )r*   r.   ri   s      r,   r3   zUVDocHead.forward]  s0   € ð
 ×-Ò-¨mÑ<Ô<ˆØ×2Ò2°=ÑAÔAˆØÐr-   )
r4   r5   r6   r#   r;   r<   r   r   r3   r=   r>   s   @r,   r¡   r¡   M  sz   ø€ € € € € ðCð Cð Cð Cð Cðà”|ðð Ð+Ô,ðð 
ŒÔ	ð	ð ð ð ð ð ð ð r-   r¡   zß
    The model takes raw document images (pixel values) as input, processes them through the UVDoc backbone to predict spatial transformation parameters,
    and outputs the rectified (corrected) document image tensor.
    c            	       óŠ   ‡ — e Zd Zdefˆ fd„Zeedej        de	e
         deej                 ez  fd„¦   «         ¦   «         Zˆ xZS )Ú
UVDocModelrQ   c                 óÌ   •— t          ¦   «                              |¦  «         t          |j        ¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S r1   )r"   r#   r�   r£   r‘   r¡   ra   rŠ   rr   s     €r,   r#   zUVDocModel.__init__n  sR   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å% fÔ&<Ñ=Ô=ˆŒÝ˜fÑ%Ô%ˆŒ	Ø�ŠÑÔÐÐÐr-   rw   ri   r/   c                 óœ   —  | j         |fi |¤Ž}t          j        |j        d¬¦  «        } | j        |fi |¤Ž}t          ||j        ¬¦  «        S )Nr   )Údim)rŒ   r.   )r‘   r;   Úcatr˜   ra   r	   r.   )r*   rw   ri   Úbackbone_outputsÚfused_outputsrŒ   s         r,   r3   zUVDocModel.forwardu  sp   € ð )˜4œ=¨Ð@Ð@¸Ð@Ð@ÐÝœ	Ð"2Ô"?ÀQÐGÑGÔGˆØ%˜DœI mÐ>Ð>°vÐ>Ð>Ðå-Ø/Ø*Ô8ð
ñ 
ô 
ð 	
r-   )r4   r5   r6   r   r#   r   r   r;   rŸ   r   r   Útupler	   r3   r=   r>   s   @r,   r¨   r¨   g  s¢   ø€ € € € € ð˜{ð ð ð ð ð ð ð Øð
àÔ'ð
ð Ð+Ô,ð
ð 
ˆuÔ Ô	!Ð$BÑ	Bð	
ð 
ð 
ñ „^ñ Ôð
ð 
ð 
ð 
ð 
r-   r¨   )rˆ   r�   r¨   ru   ))r;   Útorch.nnr$   Úactivationsr   Úbackbone_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r	   Úmodeling_utilsr
   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_uvdocr   r   ÚModuler   r@   rK   rX   rc   rm   ru   rˆ   r�   r¡   r¨   Ú__all__r—   r-   r,   ú<module>r½      sG  ðð, €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ Að"ð "ð "ð "ð "�R”Yñ "ô "ð "ðJ;ð ;ð ;ð ;ð ;˜œñ ;ô ;ð ;ð|ð ð ð ð �r”yñ ô ð ð6ð ð ð ð �"”)ñ ô ð ð<ð ð ð ð Ð1ñ ô ð ð(ð ð ð ð ˜BœIñ ô ð ð> ð&ð &ð &ð &ð &˜?ñ &ô &ñ „ð&ð0Ið Ið Ið Ið IÐ&ñ Iô Ið Ið( €ððñ ô ð
$
ð $
ð $
ð $
ð $
�MÐ#7ñ $
ô $
ñô ð
$
ðNð ð ð ð �”	ñ ô ð ð4 €ððñ ô ð
ð 
ð 
ð 
ð 
Ð%ñ 
ô 
ñô ð
ð2 QÐ
PÐ
P€€€r-   