§
    :Ø”j:  ã                   óv   — d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
mZ ddlmZ ddlmZ d„ Zd„ Zd„ Zd	„ Zd
„ ZdS )zRUnit & Integration tests for Autonomous Agent Normalization & Self-Healing Engine.é    N)Ú	AsyncMockÚ	MagicMockÚpatch)ÚErpDatabaseClient)ÚAutonomousEngineServicec                  óþ   — t          t          ¬¦  «        } ddddœ| j        _        dddddd	œ| j        _        ddddd
œg| j        _        ddddœ| j        _        dddddœg| j        _        dddddœ| j        _        | S )N)Úspecz$11111111-2222-3333-4444-555555555555zAUTONOMOUS-TEST-001Úrunning)ÚidÚsession_codeÚstatusÚ	completedg     àW@é   )r   r   r   Údata_quality_indexÚtotal_records_healed)r   r   r   r   ÚthaoÚ	documentsÚnormalize_metadatau   LÃ m sáº¡ch trÃ­ch yáº¿u)Ú
agent_codeÚ
table_nameÚaction_typeÚreasoné   z2026-08-24T01:00:00)Útotal_sessionsÚtotal_healed_recordsÚavg_dqiÚlast_sweep_at)	r   r   Úcreate_autonomous_sessionÚreturn_valueÚupdate_autonomous_sessionÚlist_autonomous_sessionsÚget_autonomous_sessionÚlist_autonomous_healing_logsÚget_autonomous_overview)Úclients    ú2C:\Projects\DSCons\tests\test_autonomous_engine.pyÚget_mock_erp_clientr'      sá   € ÝÕ-Ð.Ñ.Ô.€Fð 5Ø-Øð5ð 5€FÔ$Ô1ð 5Ø-ØØ"Ø !ð5ð 5€FÔ$Ô1ð 9Ø1Ø!Ø"&ð		
ð 	
ð4€FÔ#Ô0ð 5Ø-Øð2ð 2€FÔ!Ô.ð !Ø%Ø/Ø0ð		
ð 	
ð8€FÔ'Ô4ð Ø !ØØ.ð	3ð 3€FÔ"Ô/ð €Mó    c                  óÚ  — t          ¦   «         } t          | ¬¦  «        }dddddddd	d
dœ	dddddddddddœ
g}t          ¦   «         }t          ¦   «         }||j        _        ||j        _        ||j        j        j        _        || j        _        |                     d¦  «        }|d         }d}||k    }|slt          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|d         }d}||k    }|slt          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|d         }d }||k    }|slt          j
        d!|fd"||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}d#„ |d$         D ¦   «         }t          |¦  «        }|s•d%d&t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd&t          j        |¦  «        t          j        |¦  «        d'œz  }	t          t          j        |	¦  «        ¦  «        ‚dx}}dS )(uN   Kiá»ƒm thá»­ phÃ¢n há»‡ tá»± chuáº©n hÃ³a vÄƒn báº£n cá»§a AI Tháº£o & Thá»§y.©Ú
erp_clientzdoc-01zTB-01u>   ThÃ´ng bÃ¡o má»�i tháº§u (Báº£o máº­t Zero-Trust) <!-- tag -->ÚTBÚfully_executedé2   Ú
processingÚ
0202111150zproj-01)	r   Údocument_codeÚdocument_titleÚdocument_typeÚsignature_statusÚaudit_readiness_scoreÚverification_statusÚpartner_tax_codeÚ
project_idzdoc-02zCV-02u   CÃ´ng vÄƒn trao Ä‘á»•iÚCVÚdraftÚpending_reviewÚINVALID_TAXN)
r   r1   r2   r3   r4   r5   r6   r7   r8   Úbusiness_pillar_categoryú
session-01Úagentr   ©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6Úscannedé   Úhealedr   ©ú>=©z%(py1)s >= %(py4)sc              3   ó*   K  — | ]}d |d         v V — ŒdS )r<   ÚmessageN© )Ú.0Úfs     r&   ú	<genexpr>z-test_heal_documents_module.<locals>.<genexpr>e   s+   è è € ÐFÐF°ˆ}  )¤Ð,ÐFÐFÐFÐFÐFÐFr(   Úfindingsz,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany©Úpy0Úpy2rE   )r'   r   r   Úfetchallr   Ú	__enter__ÚcursorÚget_connectionÚheal_documents_moduleÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationrU   Ú@py_builtinsÚlocalsÚ_should_repr_global_name)Úmock_erpÚserviceÚ	mock_docsÚ	mock_connÚmock_cursorÚresÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7Ú@py_assert1s               r&   Útest_heal_documents_modulerr   9   s}  € å"Ñ$Ô$€HÝ%°Ð:Ñ:Ô:€Gð Ø$Ø^Ø!Ø 0Ø%'Ø#/Ø ,Ø#ð
	
ð 
	
ð Ø$Ø6Ø!Ø 'Ø%'Ø#3Ø -ØØ(,ð	
ð 	
ð€Iõ4 ‘”€IÝ‘+”+€KØ(1€KÔÔ%Ø'0€IÔÔ$Ø;F€IÔÔ!Ô+Ô8Ø+4€HÔÔ(à
×
'Ò
'¨Ñ
5Ô
5€CàˆwŒ<Ð!˜6Ð!ˆ<˜6Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØˆyŒ>Ð˜QÐˆ>˜QÒÐÐÐÕÔÐÐÐÐˆ>˜QÐÑÔÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØˆxŒ=Ð˜AÐˆ=˜AÒÐÐÐÕÔÐÐÐÐˆ=˜AÐÑÔÕÔˆ=ÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐàFÐF°c¸*´oÐFÑFÔFÐF�3ÐFÑFÔFÐFÐFÐFÐFÐFÕFÔFÑFÔFÐFÐFÕFÔF�3ÑFÔFÐFÕFÔF�3ÑFÔFÐFÐFÕFÔFÐFÑFÔFÕFÔFÐFÑFÔFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFr(   c            
      ó\  — t          ¦   «         } t          | ¬¦  «        }dddddddd	d
œddddddddd
œg}t          ¦   «         }t          ¦   «         }||j        _        ||j        _        ||j        j        j        _        || j        _        |                     d¦  «        }|d         }d}||k    }|slt          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d	x}x}}|d         }d}||k    }|slt          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d	x}x}}|d         }d}||k    }|slt          j
        d|fd ||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d	x}x}}d	S )!u`   Kiá»ƒm thá»­ phÃ¢n loáº¡i tá»± Ä‘á»™ng 4 Trá»¥ Cá»™t vÃ  kiá»ƒm tra sá»‘ há»�c VAT cá»§a AI Nam.r*   zinv-01zHD-001Ú
0200149705u-   CÃ´ng ty TNHH MTV ThoÃ¡t NÆ°á»›c Háº£i PhÃ²ngz100000000.0000z8000000.0000z108000000.0000N)r   Úinvoice_numberÚseller_tax_codeÚseller_nameÚtotal_amount_pretaxÚ
vat_amountÚtotal_amount_finalr=   zinv-02zHD-002Ú
0201889988u   CÃ´ng ty Loan Kháº£iz50000000.0000z5000000.0000z55000000.0000Úpillar_1_construction_epcr>   r?   Únamr@   rB   rC   rF   rG   rH   rI   rJ   r   rK   rM   )r'   r   r   rY   r   rZ   r[   r\   Úheal_invoices_moduler^   r_   r`   ra   rb   )rf   rg   Ú	mock_invsri   rj   rk   rl   rm   rn   ro   rp   s              r&   Ú!test_heal_invoices_module_pillarsr€   h   sº  € å"Ñ$Ô$€HÝ%°Ð:Ñ:Ô:€Gð Ø&Ø+ØJØ#3Ø(Ø"2Ø(,ð		
ð 		
ð Ø&Ø+Ø1Ø#2Ø(Ø"1Ø(Cð		
ð 		
ð€Iõ. ‘”€IÝ‘+”+€KØ(1€KÔÔ%Ø'0€IÔÔ$Ø;F€IÔÔ!Ô+Ô8Ø+4€HÔÔ(à
×
&Ò
& |Ñ
4Ô
4€CØˆwŒ<Ð ˜5Ð ˆ<˜5Ò Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ<˜5Ð Ñ Ô Õ Ô ˆ<Ñ Ô Õ Ô ˜5Ñ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ØˆyŒ>Ð˜QÐˆ>˜QÒÐÐÐÕÔÐÐÐÐˆ>˜QÐÑÔÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØˆxŒ=Ð˜AÐˆ=˜AÒÐÐÐÕÔÐÐÐÐˆ=˜AÐÑÔÕÔˆ=ÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr(   c                  ó&  — t          ¦   «         } t          | ¬¦  «        }t          dddg dœ¬¦  «        |_        t          ddd	g dœ¬¦  «        |_        t          d
ddg dœ¬¦  «        |_        t          dddg dœ¬¦  «        |_        t          j        | 	                    dd¬¦  «        ¦  «        }d}||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚dx}}| j        }|j        }|s‹ddt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t!          t          j        |¦  «        ¦  «        ‚dx}}| j        }|j        }|s‹ddt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t!          t          j        |¦  «        ¦  «        ‚dx}}dS )uK   Kiá»ƒm thá»­ quy trÃ¬nh cháº¡y trá»�n váº¹n phiÃªn tá»± trá»‹ Master Sweep.r*   r   é
   rI   )r?   rH   rJ   rT   )r   r}   é   r   Úquynhé   r   Úhungé   Úmanual_triggerÚminh)Úsession_typeÚ
lead_agentN)úis not)z%(py0)s is not %(py3)srk   )rW   Úpy3zassert %(py5)sÚpy5zYassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.create_autonomous_session
}.called
}rf   rV   zYassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.update_autonomous_session
}.called
})r'   r   r   r]   r~   Úheal_projects_evm_moduleÚheal_equipment_moduleÚasyncioÚrunÚrun_full_autonomous_sweepr^   r_   rc   rd   re   r`   ra   rb   r   Úcalledr    )	rf   rg   rk   rn   rq   Ú@py_format4Ú@py_format6rm   ro   s	            r&   Útest_run_full_autonomous_sweepr—   ‘   s  € å"Ñ$Ô$€HÝ%°Ð:Ñ:Ô:€Gõ %.Ø%°"ÀÈrÐRÐRð%ñ %ô %€GÔ!õ $-Ø$°¸qÈbÐQÐQð$ñ $ô $€GÔ õ (1Ø&°1ÀÈrÐRÐRð(ñ (ô (€GÔ$õ %.Ø%°!¸qÈbÐQÐQð%ñ %ô %€GÔ!õ Œ+Ø×)Ò)Ø)°fð 	*ñ 	
ô 	
ñô €Cð Ðˆ3�dˆ?ÐÐÐÕÔÐÐÐÐˆ3�dÐÑÔÐÕÔÑÔÐÐÕÔˆ3ÑÔÐÕÔˆ3ÑÔÐÐÕÔ�dÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔ-Ð4Ð-Ô4Ð4Ð4Ð4Ð4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆ8Ñ4Ô4Ð4Õ4Ô4ˆ8Ñ4Ô4Ð4Ð4Õ4Ô4Ð-Ñ4Ô4Õ4Ô4Ð4Ñ4Ô4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4ØÔ-Ð4Ð-Ô4Ð4Ð4Ð4Ð4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆ8Ñ4Ô4Ð4Õ4Ô4ˆ8Ñ4Ô4Ð4Ð4Õ4Ô4Ð-Ñ4Ô4Õ4Ô4Ð4Ñ4Ô4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r(   c                  óè	  — ddl m}  ddlm}  |¦   «         }ddi}t	          dt
          ¬¦  «        5 }dd	d
dddœ|_         | |¦  «        }|                     d|¬¦  «        }|j        }d}||k    }	|	sªt          j
        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|                     ¦   «         d         }d}	||	k    }|slt          j
        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}	|                     d|¬¦  «        }|j        }d}||k    }	|	sªt          j
        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|                     d |¬¦  «        }|j        }d}||k    }	|	sªt          j
        d|	fd||f¦  «        d!t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd!t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|                     d"d#d$d%œ|¬&¦  «        }|j        }d}||k    }	|	sªt          j
        d|	fd||f¦  «        d't          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd't          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|                     ¦   «         d         }d(}	||	k    }|slt          j
        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}	ddd¦  «         dS # 1 swxY w Y   dS ))u5   Kiá»ƒm thá»­ API Client gá»�i cÃ¡c routes tá»± trá»‹.r   )Ú
TestClient)Ú
create_appÚAuthorizationzBearer dev-test-tokenzjapp.modules.agents.application.autonomous_engine_service.AutonomousEngineService.run_full_autonomous_sweep)Únew_callablezAUTONOMOUS-20260824-001r   g     €X@é&   r…   )r   r   r   Útotal_records_scannedr   z/v1/autonomous/status)ÚheaderséÈ   r@   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚresp_status)rW   rX   rŽ   zassert %(py7)sÚpy7Nr   ÚactiverB   rC   rF   rG   z/v1/autonomous/overviewÚresp_overviewz/v1/autonomous/sessionsÚ	resp_listz/v1/autonomous/run-sessionrˆ   r‰   )rŠ   Úlead_agent_code)ÚjsonrŸ   Úresp_runÚsuccess)Úfastapi.testclientr™   Úapp.mainrš   r   r   r   ÚgetÚstatus_coder^   r_   rc   rd   re   r`   ra   rb   r§   Úpost)r™   rš   ÚapprŸ   Ú
mock_sweepr%   r¡   rq   Ú@py_assert4rm   r–   Ú@py_format8rl   rn   ro   rp   r¤   r¥   r¨   s                      r&   Útest_api_routes_integrationr³   ¯   sH  € à-Ð-Ð-Ð-Ð-Ð-à#Ð#Ð#Ð#Ð#Ð#à
ˆ*‰,Œ,€CØÐ 7Ð8€Gå	ØtÝð
ñ 
ô 
ð "6ð 
à5Ø!Ø"&Ø%'Ø$%ð#
ð #
ˆ
Ôð �˜C‘”ˆð —j’jÐ!8À'�jÑJÔJˆØÔ&Ð-¨#Ð-Ð&¨#Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð&¨#Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ{Ñ-Ô-Ð-Õ-Ô-ˆ{Ñ-Ô-Ð-Ð-Õ-Ô-Ð&Ñ-Ô-Õ-Ô-¨#Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø×ÒÑ!Ô! (Ô+Ð7¨xÐ7Ð+¨xÒ7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð+¨xÐ7Ñ7Ô7Õ7Ô7Ð+Ñ7Ô7Õ7Ô7¨xÑ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð Ÿ
š
Ð#<Àg˜
ÑNÔNˆØÔ(Ð/¨CÐ/Ð(¨CÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð(¨CÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ}Ñ/Ô/Ð/Õ/Ô/ˆ}Ñ/Ô/Ð/Ð/Õ/Ô/Ð(Ñ/Ô/Õ/Ô/¨CÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ð —J’JÐ8À'�JÑJÔJˆ	ØÔ$Ð+¨Ð+Ð$¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð$¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Ð+Õ+Ô+Ð$Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð —;’;Ø(Ø"2ÀvÐNÐNØð ñ 
ô 
ˆð
 Ô#Ð* sÐ*Ð# sÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆxÑ*Ô*Ð*Õ*Ô*ˆxÑ*Ô*Ð*Ð*Õ*Ô*Ð#Ñ*Ô*Õ*Ô* sÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�}Š}‰Œ˜xÔ(Ð5¨IÐ5Ð(¨IÒ5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð(¨IÐ5Ñ5Ô5Õ5Ô5Ð(Ñ5Ô5Õ5Ô5¨IÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ðE"6ð "6ð "6ñ "6ô "6ð "6ð "6ð "6ð "6ð "6ð "6ð "6øøøð "6ð "6ð "6ð "6ð "6ð "6s   ±R)S'Ó'S+Ó.S+)Ú__doc__Úbuiltinsrc   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter^   r‘   Úunittest.mockr   r   r   Úapp.core.postgres.erp_clientr   Ú8app.modules.agents.application.autonomous_engine_servicer   r'   rr   r€   r—   r³   rP   r(   r&   ú<module>r¼      s×   ðØ XÐ Xà  € € € € € € € € € € € € €€€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð
*ð *ð *ðZ,Gð ,Gð ,Gð^&ð &ð &ðR5ð 5ð 5ð<+6ð +6ð +6ð +6ð +6r(   