§
    0Ejü9  ã                   óÀ  — d dl mZmZmZmZ d dlmZ d dlZd dlmZm	Z	 d dl
mZmZ defd„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d „ Zd!efd"„ZdS )#é    )ÚOptionalÚAnyÚ	GeneratorÚSelf)ÚsessionN)ÚDebugÚIODate)ÚModelÚrowÚreturnc                  óì   — 	 t          dt          d         ¬¦  «         t          d         d         S # t          $ r8} t          d| ¬¦  «         t          dt          d         ¬¦  «         Y d } ~ dS d } ~ ww xY w)NzSession UserÚUser©ÚtitleÚdataÚIDzTrouble getting session useréÿÿÿÿ)r   r   Ú	Exception)Úes    ú/var/www/mission/io/app.pyÚ	getUserIDr      s„   € ðÝˆn¥'¨&¤/Ð2Ñ2Ô2Ð2Ý	�Œ˜Ô	ÐøÝð ð ð ÝÐ,°!Ð4Ñ4Ô4Ð4Ýˆn¥'¨&¤/Ð2Ñ2Ô2Ð2Ø	ˆˆˆˆˆøøøøðøøøs   ‚.1 ±
A3»-A.Á.A3c                   óð   ‡ — e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   i Zddefˆ fd„Zd	efd
„Zd	efd„Zd	efd„Zd	efd„Zded	efd„Zded	efd„Zd	efd„Zddedee         d	efd„Zˆ xZS )ÚMission_Modelé   Ú
mission_idÚuser_idÚ ÚtableÚ_startÚ_endc                 óˆ   •— || _         | j        pdd| j        › d�i| _        t          ¦   «                              ¦   «          d S )NÚClientszjoin Clients on Clients.ID = z
.Client_ID)r   Úqr   ÚsuperÚ__init__)Úselfr   Ú	__class__s     €r   r%   zMission_Model.__init__   sN   ø€ Ø€$„/ØŒ6ð ØÐC¨T¬ZÐCÐCÐCð€$„&õ �'„'×ÒÑÔÐÐÐó    r   c                 óZ   — |                       |¦  «         |                      |¦  «         | S ©N©ÚstartÚend)r&   r,   r-   s      r   ÚrangezMission_Model.range    s(   € Ø‡*‚*ˆUÑÔÐØ‡(‚(ˆ3�-„-€-Ø	€+r(   c                 óH   — t          t          |¦  «        ¦  «        | _        | S r*   )Ústrr	   r   ©r&   Údates     r   r,   zMission_Model.start%   s   € Ý•F˜4‘L”LÑ!Ô!€$„+Ø	€+r(   c                 óH   — t          t          |¦  «        ¦  «        | _        | S r*   )r0   r	   r    r1   s     r   r-   zMission_Model.end)   s   € Ý•&˜‘,”,ÑÔ€$„)Ø	€+r(   c                 ó$   — | j         › d| j        › �S )Nz.Mission_ID = )r   r   ©r&   s    r   ÚquerySuffixzMission_Model.querySuffix-   s   € ØŒJÐ	7Ð	7 d¤oÐ	7Ð	7Ð7r(   Ú	client_idc                 óô   — |                       ¦   «         | _        | j                             d|g¬¦  «         | j                             dd¬¦  «         |                      |                      ¦   «         ¦  «        S ©NúClient_ID=%s©ÚqueryÚparmsÚ	TimestampÚdesc©ÚfieldÚ	direction©Úqb_initÚqbÚfilterÚorderÚcheck_recentÚselect©r&   r7   s     r   Ú
get_clientzMission_Model.get_client0   ó_   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�~¨Y¨K€.Ñ8Ô8Ð8Ø„'‡-‚-�k¨F€-Ñ3Ô3Ð3Ø	×	Ò	˜4Ÿ;š;™=œ=Ñ	)Ô	)Ð)r(   r   c                 óB  — t          |¦  «        }t          t          |¦  «        ¦  «        D ]r}||                              d¦  «        rJt	          ||                              d¦  «        ¦  «                             ¦   «         dk     rd||         d<   Œgd||         d<   Œs|S )Nr>   é   TÚRecentF)Úlistr.   ÚlenÚgetr	   ÚdaysFromNow)r&   r   Úis      r   rH   zMission_Model.check_recent6   s˜   € Ý	ˆd‰Œ€$Ý•�T‘”ÑÔð ð €aØ
ˆ1„g‡k‚k�+ÑÔð ¥6¨$¨q¬'¯+ª+°kÑ*BÔ*BÑ#CÔ#C×#OÒ#OÑ#QÔ#QÐRSÒ#SÐ#SØ€Dˆ„GˆHÑÐà€Dˆ„GˆHÑÐØ	€+r(   c                 ó’  — |                       ¦   «         | _        | j                             d¬¦  «         | j                             d¬¦  «         i }|                      ¦   «         D ]`}t           |j        d¦  «        ¦  «                             ¦   «         }|                     |i ¦  «          |j        d¦  «        ||         d<   Œa|S )Nz'count(*) as count,date(Timestamp) as dt©Úfieldszdate(Timestamp))ÚgroupÚdtÚcountÚServed)	rD   rE   rW   rX   rI   r	   rR   r0   Ú
setdefault)r&   r   r   rY   s       r   Úby_dayzMission_Model.by_day?   s´   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.ÐA€.ÑBÔBÐBØ„'‡-‚-Ð'€-Ñ(Ô(Ð(à	€$Ø�[Š[‰]Œ]ð )ð )€cÝˆwˆsŒw�t‰}Œ}ÑÔ×!Ò!Ñ#Ô#€2Ø‡?‚?�2�bÑÔÐØ˜œ Ñ(Ô(€4ˆ„8ˆHÑÐà	€+r(   Nr<   r=   c                 ó”  — |                       ¦   «         | _        | j                             | j        › d�¦  «         | j                             | j                             dd¦  «        ¦  «         |r| j                             ||¬¦  «         | j                             dd¬¦  «         t          |  
                    ¦   «         ¦  «        S )Nú.*, Clients.Name as Namer"   r   r;   r>   r?   r@   ©rD   rE   rW   r   Újoinr#   rR   rF   rG   rP   rI   ©r&   r<   r=   s      r   ÚallzMission_Model.allL   s¢   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�D”JÐ8Ð8Ð8Ñ9Ô9Ð9Ø„'‡,‚,ˆtŒv�zŠz˜) BÑ'Ô'Ñ(Ô(Ð(à
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*à„'‡-‚-�k¨F€-Ñ3Ô3Ð3Ý	ˆd�kŠk‰mŒmÑ	Ô	Ðr(   )r   ©r   N)Ú__name__Ú
__module__Ú__qualname__r   ÚintÚ__annotations__r   r   r0   r   r    r#   r%   r   r.   r,   r-   r6   rP   rK   rH   Údictr]   r   rc   Ú__classcell__©r'   s   @r   r   r      s‘  ø€ € € € € € Ø€ˆCÐÐÑØ€ˆ€€�Ø€€s€€�Ø€ˆ€€�Ø€€c€€�Ø€ðð ˜cð ð ð ð ð ð ð˜Tð ð ð ð ð
˜ð ð ð ð ð�tð ð ð ð ð8˜#ð 8ð 8ð 8ð 8ð*˜sð * tð *ð *ð *ð *ð˜Dð  Tð ð ð ð ð�Tð ð ð ð ð	ð 	�Cð 	 ¨$¤ð 	¸ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r(   r   c                   ó2   — e Zd Zd Zdededefd„Zdefd„ZdS )ÚUsersÚuserÚpasswordr   c                 ó.  — |                       ¦   «         | _        | j                             d¬¦  «         | j                             d||g¬¦  «         |                      ¦   «         x}r,t          j        |                     d¦  «        ¦  «        |d<   |S i S )NzUser as UserID,Groups,IDrV   zUser=%s and Password=%sr;   ÚGroups)rD   rE   rW   rF   Ú
select_oneÚUtilsÚgetJSONrR   )r&   ro   rp   Úudatas       r   Úauthz
Users.authZ   s…   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.Ð2€.Ñ3Ô3Ð3Ø„'‡.‚.Ð0¸¸X°€.ÑGÔGÐGà�oŠoÑÔÐ€Uð Ý”] 5§9¢9¨XÑ#6Ô#6Ñ7Ô7€5ˆ�?Ø
€<à
€9r(   c                 ó¤   — |                       ¦   «                              d|g¬¦  «         t          j        |                      ¦   «         i ¦  «        S )NzUser=%sr;   )rD   rF   rt   ÚfirstrI   )r&   ro   s     r   Úget_namezUsers.get_namee   s?   € Ø‡,‚,�.„.×Ò˜i¨t¨fÐÑ5Ô5Ð5Ý	Œ�T—[’[‘]”] 2Ñ	&Ô	&Ð&r(   N)re   rf   rg   r   r0   rj   rw   rz   © r(   r   rn   rn   W   s]   € € € € € Ø	€ð	�Cð 	 ð 	¨ð 	ð 	ð 	ð 	ð'˜ð 'ð 'ð 'ð 'ð 'ð 'r(   rn   c                   ó~   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zdede	fd„Z
dd	ede	fd
„Zdedefˆ fd„Zdefd„Zˆ xZS )r"   r   r   c                 ó¢   •— t          ¦   «                              ¦   «         |d<   | j        |d<   t          ¦   «                              |¬¦  «        S )NÚCreatedÚ
Mission_ID©r   ©r	   Úfullr   r$   Úadd©r&   r   r'   s     €r   rƒ   zClients.addl   s<   ø€ Ý‘H”H—M’M‘O”O€$€y�/Ø”€$€|ÑÝ	‰Œ�Š˜$ˆÑ	Ô	Ðr(   r7   c                 ó8  — |                       d¬¦  «        | _        | j                             d|g¬¦  «         t          |                      ¦   «         ¦  «        pi }t          t          ¦   «                              |¦  «        ¦  «        |d<   t          t          ¦   «                              |¦  «        ¦  «        |d<   t          t          ¦   «                              |¦  «        ¦  «        |d<   t          t          ¦   «                              |¦  «        ¦  «        |d<   t          t          ¦   «                              |¦  «        ¦  «        |d	<   t          t          ¦   «                              |¦  «        ¦  «        |d
<   t          t          ¦   «                              |¦  «        ¦  «        |d<   d |d<   |                     d	¦  «        pg D ]4}t          j        d|¬¦  «         |                     d¦  «        r||d<    nŒ5t          j        d|¬¦  «         |S )Nz*,ID as Client_IDrV   zID = %sr;   ÚMealsÚFoodÚShowersÚClothingÚNotesÚ	ReferralsÚSurplusÚTrespassÚNoter   z
Get Client)rD   rE   rF   rj   rs   rP   r†   rK   r‡   rˆ   r‰   rŠ   r‹   rŒ   rR   rt   r   )r&   r7   r   Únotes       r   rR   zClients.getq   sÈ  € Ø�LŠLÐ 3ˆLÑ4Ô4€$„'Ø„'‡.‚.�y¨	 {€.Ñ3Ô3Ð3Ý	ˆd�oŠoÑÔÑ	 Ô	 Ð	& B€$Ý•u‘w”w×)Ò)¨)Ñ4Ô4Ñ5Ô5€$€w�-Ý•d‘f”f×'Ò'¨	Ñ2Ô2Ñ3Ô3€$€v�,Ý�™œ×-Ò-¨iÑ8Ô8Ñ9Ô9€$€y�/Ý�(™*œ*×/Ò/°	Ñ:Ô:Ñ;Ô;€$€zÑÝ•u‘w”w×)Ò)¨)Ñ4Ô4Ñ5Ô5€$€w�-Ý�9™;œ;×1Ò1°)Ñ<Ô<Ñ=Ô=€$€{ÑÝ�™œ×-Ò-¨iÑ8Ô8Ñ9Ô9€$€y�/Ø€$€zÑà�hŠh�wÑÔÐ% 2ð 
ð 
€dÝ„;�V Ð&Ñ&Ô&Ð&Ø
‡h‚hˆzÑÔð 
Ø€DˆÑØ	€Eð
õ „+�L dÐ+Ñ+Ô+Ð+Ø	€+r(   r<   c                 óš   — |                       ¦   «         | _        | j                             d|g¬¦  «         |                      ¦   «         pg S )NzName like %%s%r;   )rD   rE   rF   rI   )r&   r<   s     r   ÚsearchzClients.search‡   s?   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.Ð'¨u¨g€.Ñ6Ô6Ð6Ø	�Š‰ŒÐ	˜"Ðr(   r   Únamec                 óö   — |                       ¦   «         | _        |r#d|› d�}| j                             d|g¬¦  «         | j                             d¬¦  «         t	          |                      ¦   «         ¦  «        S )Nú%zName like %sr;   ÚName)rA   )rD   rE   rF   rG   rP   rI   )r&   r’   s     r   rc   zClients.allŒ   sl   € Ø�LŠL‰NŒN€$„'Ø	ð 5Ø
ˆdˆ+ˆ+ˆ+€4Ø„7‡>‚>˜¨d¨V€>Ñ4Ô4Ð4à„'‡-‚-�f€-ÑÔÐÝ	ˆd�kŠk‰mŒmÑ	Ô	Ðr(   Úidc                 ód   •— t          t          ¦   «                              d|i¦  «        ¦  «        S )Nr   )Úboolr$   Údelete)r&   r–   r'   s     €r   r™   zClients.delete•   s%   ø€ Ý	�e‰gŒg�nŠn˜d 2˜YÑ'Ô'Ñ	(Ô	(Ð(r(   c           
      óÎ  — | j         rIt          | j         ¦  «        }t          t          | j         ¦  «                             d¦  «        ¦  «        }nd}t          | ¦  «        }|dz  dz   }t          ¦   «         }t          | ¦  «        }t          |dz    ¦  «        }i }i }i }	i }
i }i }g }g }g d¢}i i i i dœ}i i dœ}|D �] }|                     |i ¦  «          t          ¦   «         |         ¦   «                              dt          |¦  «        t          |¦  «        g¬	¦  «        D �]¸}t           |j        d
¦  «        ¦  «        }|j	        }t          ||z
  j        ¦  «        }|                     |¦  «         |dk    r3|d                              |d¦  «         |d         |xx         dz  cc<   n>|dk    r8|dk    r2|d                              |d¦  «         |d         |xx         dz  cc<   |d                              |g ¦  «         |d         |                               |j        d¦  «        ¦  «         ||                              |d¦  «         ||         |xx         dz  cc<   |                     ¦   «         }|                     |i ¦  «         ||                              |d¦  «         ||         |xx         dz  cc<   |                     |¦  «         �Œº�Œ"t          t          t          |¦  «        ¦  «        ¦  «        }|D ]#}|D ]}||                              |d¦  «         ŒŒ$|D ]4}t!          t          t          ||         ¦  «        ¦  «        ¦  «        ||<   Œ5|||||dœ|||||	|
||dœ	}|                     d¦  «        |d<   |                     d¦  «        |d<   i |d<   |                     di ¦  «                             ¦   «         D ]Š\  }}	 t%          t'          j        |                     di ¦  «                             |¦  «        |                     di ¦  «                             |¦  «        ¬¦  «        dz  ¦  «        |d         |<   Œ„#  Y ŒˆxY w||d<   |S )NTé   é   r   )rˆ   r‡   r‰   r†   )ÚGuestsr†   r‰   rˆ   )ÚcurrentÚpreviousz+date(Timestamp)>=%s and date(Timestamp)<=%sr;   r>   rž   r   é   é=   rŸ   r�   Ú	Client_ID)r,   r-   ÚpstartÚpendÚtdays)	r.   ÚdaysÚguestsÚclothingÚmealsÚshowersÚfoodÚcompareÚagesÚdeltar+   éd   Úall_data)r   r	   rh   rS   r\   Úglobalsrc   r0   rR   ÚymÚabsr¦   ÚappendÚsortedrP   ÚsetrQ   ÚitemsÚroundrt   r®   )r&   r,   Út_daysÚpdaysr-   r£   r¤   r§   r©   rª   r«   r¨   r¬   r¦   r­   ÚnamesÚsdataÚsummaryr’   r   rY   Út_idÚageÚdt_idÚdÚmr   Úqtys                               r   r½   zClients.summary˜   sá  € Ø	„[ð Ý�$”+ÑÔ€5Ý•�t”{Ñ#Ô#×/Ò/°Ñ5Ô5Ñ6Ô6€6€6à€6Ý�6�'‰?Œ?€5à�!‰8�Q‰,€%Ý‰Œ€#Ý�5�&‰>Œ>€&Ý	�&˜‘(�Ñ	Ô	€$Ø€&Ø
€%Ø€'Ø	€$Ø€(Ø€'Ø	€$Ø	€$Ø
/Ð
/Ð
/€%Ø˜r¨R¸"Ð
=Ð
=€%Ø RÐ(Ð(€'Øð ñ €dØ×Ò�D˜ÑÔÐØ�g‰iŒi˜ŒoÑÔ×#Ò#Ð*WÕ_bÐciÑ_jÔ_jÕknÐorÑksÔksÐ^tÐ#ÑuÔuð ñ €sÝ	��”˜Ñ$Ô$Ñ	%Ô	%€BØŒ5€Då
ˆs�R‰xŒoÑ
Ô
€CØ‡K‚K�ÑÔÐØ
ˆb‚y€yØˆYÔ×"Ò" 4¨Ñ*Ô*Ð*ØˆYÔ˜ÐÐÔ˜qÑ ÐÐÑÐØ	�Šˆ�s˜b’y�yØˆZÔ×#Ò# D¨Ñ+Ô+Ð+ØˆZÔ˜ÐÐÔ Ñ!ÐÐÑà	ˆ(„O×Ò˜t BÑ'Ô'Ð'Ø	ˆ(„O�DÔ× Ò   ¤¨Ñ!5Ô!5Ñ6Ô6Ð6à	ˆ$„K×Ò˜4 Ñ"Ô"Ð"Ø	ˆ$„K�ÐÐÔ�qÑÐÐÑà�FŠF‰HŒH€EØ×Ò�u˜RÑ Ô Ð ØˆE„N×Ò˜d 1Ñ%Ô%Ð%ØˆE„N�4ÐÐÔ˜!ÑÐÐÑà‡K‚K�ÑÔÐÑñ1õ4 
••S˜‘Y”Y‘”Ñ	 Ô	 €$àð "ð "€aØð "ð "€tØˆA„J×Ò˜$˜qÑ!Ô!Ð!Ð!ð"ð ð )ð )€aÝ•4�˜F 1œI™œÑ'Ô'Ñ(Ô(€6ˆ!�9€9ð  ¨V¸4ÈÐOÐOØ
ØØØØØ
ØØ
ð

ð 

€$ð —K’K 	Ñ*Ô*€$€y�/Ø—[’[ Ñ,Ô,€$€zÑØ€$€w�-Ø—+’+˜i¨Ñ+Ô+×1Ò1Ñ3Ô3ð 	ð 	�h€dˆ3ð	Ý¥¤°'·+²+¸jÈÑ2LÔ2L×2PÒ2PÐQUÑ2VÔ2VÐ[b×[fÒ[fÐgpÐqsÑ[tÔ[t×[xÒ[xÐy}Ñ[~Ô[~Ð Ñ Ô ð  CFñ  !Fñ  Gô  G€Dˆ„M�$ÑÐøð	Ø€DøøøØ€$€zÑØ	€+s   ÏA=QÑQ)r   )re   rf   rg   r   rj   rh   rƒ   rR   r0   rP   r‘   rc   r˜   r™   r½   rk   rl   s   @r   r"   r"   i   s  ø€ € € € € Ø	€ð �4ð  ˜Cð  ð  ð  ð  ð  ð  ð
˜ð  ð ð ð ð ð,�sð ˜tð ð ð ð ð
ð �3ð ˜dð ð ð ð ð)�Cð )˜Dð )ð )ð )ð )ð )ð )ðP�dð Pð Pð Pð Pð Pð Pð Pð Pr(   r"   c                   óp   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zddedefd„Z	dde
dee         defd„Zˆ xZS )r†   r   r   c                 ó¢   •— t          ¦   «                              ¦   «         |d<   | j        |d<   t          ¦   «                              |¬¦  «        S ©Nr>   r   r€   r�   r„   s     €r   rƒ   z	Meals.addí   ó=   ø€ Ý‘h”h—m’m‘o”o€$€{ÑØ”€$€|ÑÝ	‰Œ�Š˜$ˆÑ	Ô	Ðr(   r7   c                 óô   — |                       ¦   «         | _        | j                             d|g¬¦  «         | j                             dd¬¦  «         |                      |                      ¦   «         ¦  «        S r9   rC   rJ   s     r   rK   zMeals.get_clientò   rL   r(   r›   r¦   c                 óT  — t          t          j        |¦  «        ¦  «                             ¦   «         }|                      ¦   «         | _        | j                             d¦  «         | j                             d¬¦  «         | j                             d|g¬¦  «         | j         	                    dd¬¦  «         g }|  
                    ¦   «         D ]V}|                      |j        d	¦  «         |j        d
¦  «        ddt           |j        d¦  «        ¦  «        › �dœ¦  «         ŒW|S )Nz*join Clients on Meals.Client_ID=Clients.IDzClients.Name,Meals.*rV   údate(Timestamp)>=%sr;   zMeals.Timestampr?   r@   r•   r>   r†   z	Seconds: ÚSeconds©r•   r>   ÚServiceÚDetail©r	   rt   Únegr0   rD   rE   ra   rW   rF   rG   rI   r´   rR   r˜   ©r&   r¦   r,   r   r   s        r   Úlogz	Meals.logø   s  € Ý
•”˜4‘”Ñ
!Ô
!×
%Ò
%Ñ
'Ô
'€%Ø�LŠL‰NŒN€$„'Ø„'‡,‚,Ð;Ñ<Ô<Ð<Ø„'‡.‚.Ð.€.Ñ/Ô/Ð/Ø„'‡.‚.Ð,°E°7€.Ñ;Ô;Ð;Ø„'‡-‚-Ð'°&€-Ñ9Ô9Ð9Ø	€$Ø�[Š[‰]Œ]ð ð €cØ‡;‚;Øˆ3Œ7�6‰?Œ?Ø�”˜Ñ$Ô$ØØ3�˜g˜cœg iÑ0Ô0Ñ1Ô1Ð3Ð3ð	ð ñ ô ð ð ð 
€+r(   r   Nr<   r=   c                 óä  — |                       ¦   «         | _        | j                             | j        › d�¦  «         t	          j        d| j        › �| j                             d¦  «        ¬¦  «         | j                             | j                             d¦  «        ¦  «         |r| j         	                    ||¬¦  «         | j         
                    dd¬¦  «         |                      ¦   «         S )	Nr_   ztable r"   r   r;   r>   r?   r@   )rD   rE   rW   r   rt   r   r#   rR   ra   rF   rG   rI   rb   s      r   rc   z	Meals.all	  sÆ   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�D”JÐ8Ð8Ð8Ñ9Ô9Ð9Ý„+Ð)˜TœZÐ)Ð)¨t¬v¯zªz¸)Ñ/DÔ/DÐEÑEÔEÐEØ„'‡,‚,ˆtŒv�zŠz˜)Ñ$Ô$Ñ%Ô%Ð%Ø
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*à„'‡-‚-�k¨F€-Ñ3Ô3Ð3Ø	�Š‰ŒÐr(   ©r›   rd   ©re   rf   rg   r   rj   rh   rƒ   rP   rK   rÒ   r0   r   rc   rk   rl   s   @r   r†   r†   ê   sË   ø€ € € € € Ø	€ð �4ð  ˜Cð  ð  ð  ð  ð  ð  ð
*˜sð * tð *ð *ð *ð *ðð �3ð ˜dð ð ð ð ð"	ð 	�Cð 	 ¨$¤ð 	¸ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r(   r†   c                   óp   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zddedefd„Z	dde
dee         defd„Zˆ xZS )rˆ   r   r   c                 ó¢   •— t          ¦   «                              ¦   «         |d<   | j        |d<   t          ¦   «                              |¬¦  «        S rÆ   r�   r„   s     €r   rƒ   zShowers.add  rÇ   r(   r7   c                 óô   — |                       ¦   «         | _        | j                             d|g¬¦  «         | j                             dd¬¦  «         |                      |                      ¦   «         ¦  «        S r9   rC   rJ   s     r   rK   zShowers.get_client  rL   r(   r›   r¦   c                 ó²  — t          t          j        |¦  «        ¦  «                             ¦   «         }|                      ¦   «         | _        | j                             d¦  «         | j                             d¬¦  «         | j                             d|g¬¦  «         | j         	                    dd¬¦  «         g }|  
                    ¦   «         D ]…}|                      |j        d	¦  «         |j        d¦  «        d
dt           |j        d¦  «        ¦  «        › dt           |j        d¦  «        ¦  «        › d |j        d¦  «        › �dœ¦  «         Œ†|S )Nz,join Clients on Showers.Client_ID=Clients.IDzClients.Name,Showers.*rV   rÊ   r;   r>   r?   r@   r•   rˆ   z
Clothing: r‰   z Cleaned Up: ÚCleanedz
 Special: ÚSpecialrÌ   rÏ   rÑ   s        r   rÒ   zShowers.log!  sK  € Ý
•”˜4‘”Ñ
!Ô
!×
%Ò
%Ñ
'Ô
'€%Ø�LŠL‰NŒN€$„'Ø„'‡,‚,Ð=Ñ>Ô>Ð>Ø„'‡.‚.Ð0€.Ñ1Ô1Ð1Ø„'‡.‚.Ð,°E°7€.Ñ;Ô;Ð;Ø„'‡-‚-�k¨F€-Ñ3Ô3Ð3à	€$Ø�[Š[‰]Œ]ð ð €cØ‡;‚;Øˆ3Œ7�6‰?Œ?Ø�”˜Ñ$Ô$ØØz�$˜w˜sœw zÑ2Ô2Ñ3Ô3ÐzÐzÅ$ÀwÀsÄwÈyÑGYÔGYÑBZÔBZÐzÐzÐfmÐfiÔfmÐnwÑfxÔfxÐzÐzð	ð ñ ô ð ð ð 
€+r(   r   Nr<   r=   c                 ó’  — |                       ¦   «         | _        | j                             | j        › d�¦  «         | j                             | j                             d¦  «        ¦  «         |r| j                             ||¬¦  «         | j                             dd¬¦  «         t          |  
                    ¦   «         ¦  «        S ©Nr_   r"   r;   r>   r?   r@   r`   rb   s      r   rc   zShowers.all3  s    € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�D”JÐ8Ð8Ð8Ñ9Ô9Ð9Ø„'‡,‚,ˆtŒv�zŠz˜)Ñ$Ô$Ñ%Ô%Ð%Ø
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*à„'‡-‚-�k¨F€-Ñ3Ô3Ð3å	ˆd�kŠk‰mŒmÑ	Ô	Ðr(   rÔ   rd   rÕ   rl   s   @r   rˆ   rˆ     sË   ø€ € € € € Ø	€ð �4ð  ˜Cð  ð  ð  ð  ð  ð  ð
*˜sð * tð *ð *ð *ð *ðð �3ð ˜dð ð ð ð ð$	ð 	�Cð 	 ¨$¤ð 	¸ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r(   rˆ   c                   óp   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zddedefd„Z	dde
dee         defd„Zˆ xZS )r‡   r   r   c                 ó¢   •— t          ¦   «                              ¦   «         |d<   | j        |d<   t          ¦   «                              |¬¦  «        S rÆ   r�   r„   s     €r   rƒ   zFood.addA  rÇ   r(   r7   c                 óò   — |                       ¦   «         | _        | j                             d|g¬¦  «         | j                             dd¦  «         |                      |                      ¦   «         ¦  «        S )Nr:   r;   r>   r?   rC   rJ   s     r   rK   zFood.get_clientF  s]   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�~¨Y¨K€.Ñ8Ô8Ð8Ø„'‡-‚-�˜FÑ#Ô#Ð#Ø	×	Ò	˜4Ÿ;š;™=œ=Ñ	)Ô	)Ð)r(   r›   r¦   c           	      ó6  — t          t          j        |¦  «        ¦  «                             ¦   «         }|                      ¦   «         | _        | j                             d¦  «         | j                             d¬¦  «         | j                             d|g¬¦  «         | j         	                    dd¬¦  «         g }|  
                    ¦   «         D ]G}|                      |j        d	¦  «         |j        d¦  «        d
 |j        d¦  «        › dœ¦  «         ŒH|S )Nz)join Clients on Food.Client_ID=Clients.IDzClients.Name,Food.*rV   rÊ   r;   r>   r?   r@   r•   r‡   rŽ   rÌ   ©r	   rt   rÐ   r0   rD   rE   ra   rW   rF   rG   rI   r´   rR   rÑ   s        r   rÒ   zFood.logL  s  € Ý
•”˜4‘”Ñ
!Ô
!×
%Ò
%Ñ
'Ô
'€%Ø�LŠL‰NŒN€$„'Ø„'‡,‚,Ð:Ñ;Ô;Ð;Ø„'‡.‚.Ð-€.Ñ.Ô.Ð.Ø„'‡.‚.Ð,°E°7€.Ñ;Ô;Ð;Ø„'‡-‚-�k¨F€-Ñ3Ô3Ð3à	€$Ø�[Š[‰]Œ]ð ð €cØ‡;‚;Øˆ3Œ7�6‰?Œ?Ø�”˜Ñ$Ô$ØØ�”˜‘”Ð!ð	ð ñ ô ð ð ð 
€+r(   r   Nr<   r=   c                 ó”  — |                       ¦   «         | _        | j                             | j        › d�¦  «         | j                             t          | j                             d¦  «        ¦  «        ¬¦  «         |r| j                             ||¬¦  «         | j         	                    dd¬¦  «         |  
                    ¦   «         S )Nr_   r"   ©ra   r;   r>   r?   r@   )rD   rE   rW   r   ra   r0   r#   rR   rF   rG   rI   rb   s      r   rc   zFood.all^  s¢   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�D”JÐ8Ð8Ð8Ñ9Ô9Ð9Ø„'‡,‚,•C˜œŸ
š
 9Ñ-Ô-Ñ.Ô.€,Ñ/Ô/Ð/Ø
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*à„'‡-‚-�k¨F€-Ñ3Ô3Ð3Ø	�Š‰ŒÐr(   rÔ   rd   )re   rf   rg   r   rj   rh   rƒ   rP   rK   rÒ   r0   r   r   rc   rk   rl   s   @r   r‡   r‡   >  sË   ø€ € € € € Ø	€ð �4ð  ˜Cð  ð  ð  ð  ð  ð  ð
*˜sð * tð *ð *ð *ð *ðð �3ð ˜dð ð ð ð ð$ð �Cð  ¨$¤ð ¸ð ð ð ð ð ð ð ð r(   r‡   c                   ó,   ‡ — e Zd Zd Zdedefˆ fd„Zˆ xZS )r‹   r   r   c                 óê   •— t          ¦   «                              ¦   «         |d<   | j        |d<   | j        |d<   |                     d¦  «        sd |d<   t          ¦   «                              |¬¦  «        S )Nr>   r   ÚUser_IDÚReturnr€   )r	   r‚   r   r   rR   r$   rƒ   r„   s     €r   rƒ   zReferrals.addk  se   ø€ Ý‘h”h—m’m‘o”o€$€{ÑØ”€$€|ÑØ”L€$€y�/Ø	�Š�(Ñ	Ô	ð Ø€4ˆ�>Ý	‰Œ�Š˜$ˆÑ	Ô	Ðr(   )re   rf   rg   r   rj   rh   rƒ   rk   rl   s   @r   r‹   r‹   h  sP   ø€ € € € € Ø	€ð �4ð  ˜Cð  ð  ð  ð  ð  ð  ð  ð  ð  ð  r(   r‹   c                   ó>   ‡ — e Zd Zd Zdedefˆ fd„Zddedefd„Zˆ xZ	S )rŒ   r   r   c                 ó¶   •— t          ¦   «                              ¦   «         |d<   | j        |d<   | j        |d<   t	          ¦   «                              |¬¦  «        S ©Nr>   r   rç   r€   ©r	   r‚   r   r   r$   rƒ   r„   s     €r   rƒ   zSurplus.addw  óH   ø€ Ý‘h”h—m’m‘o”o€$€{ÑØ”€$€|ÑØ”L€$€y�/Ý	‰Œ�Š˜$ˆÑ	Ô	Ðr(   r›   r¦   c           	      ó4  — t          t          j        |¦  «        ¦  «                             ¦   «         }|                      ¦   «         | _        | j                             d¦  «         | j                             d¬¦  «         | j                             d|g¬¦  «         | j         	                    dd¬¦  «         g }|  
                    ¦   «         D ]F}|                      |j        d	¦  «         |j        d¦  «        d
 |j        d¦  «        dœ¦  «         ŒG|S )Nz,join Clients on Surplus.Client_ID=Clients.IDzClients.Name,Surplus.*rV   rÊ   r;   r>   r?   r@   r•   rŒ   ÚItemrÌ   râ   rÑ   s        r   rÒ   zSurplus.log}  s  € Ý
•”˜4‘”Ñ
!Ô
!×
%Ò
%Ñ
'Ô
'€%Ø�LŠL‰NŒN€$„'Ø„'‡,‚,Ð=Ñ>Ô>Ð>Ø„'‡.‚.Ð0€.Ñ1Ô1Ð1Ø„'‡.‚.Ð,°E°7€.Ñ;Ô;Ð;Ø„'‡-‚-�k¨F€-Ñ3Ô3Ð3à	€$Ø�[Š[‰]Œ]ð ð €cØ‡;‚;Øˆ3Œ7�6‰?Œ?Ø�”˜Ñ$Ô$ØØˆSŒW�V‰_Œ_ð	ð ñ ô ð ð ð 
€+r(   rÔ   )
re   rf   rg   r   rj   rh   rƒ   rP   rÒ   rk   rl   s   @r   rŒ   rŒ   t  sw   ø€ € € € € Ø	€ð �4ð  ˜Cð  ð  ð  ð  ð  ð  ðð �3ð ˜dð ð ð ð ð ð ð ð r(   rŒ   c                   ó`   ‡ — e Zd Zd Zdedefˆ fd„Zddedefd„Zdd	e	d
e
e         defd„Zˆ xZS )r‰   r   r   c                 ó¶   •— t          ¦   «                              ¦   «         |d<   | j        |d<   | j        |d<   t	          ¦   «                              |¬¦  «        S rë   rì   r„   s     €r   rƒ   zClothing.add’  rí   r(   r›   r¦   c                 óZ  — t          t          j        |¦  «        ¦  «                             ¦   «         }|                      ¦   «         | _        | j                             d¦  «         | j                             d¬¦  «         | j                             d|g¬¦  «         | j         	                    dd¬¦  «         g }|  
                    ¦   «         D ]Y}|                      |j        d	¦  «         |j        d¦  «        d
 |j        d¦  «        › d |j        d¦  «        › �dœ¦  «         ŒZ|S )Nz-join Clients on Clothing.Client_ID=Clients.IDzClients.Name,Clothing.*rV   rÊ   r;   r>   r?   r@   r•   r‰   ÚInz => ÚOutrÌ   râ   rÑ   s        r   rÒ   zClothing.log™  s  € Ý
•”˜4‘”Ñ
!Ô
!×
%Ò
%Ñ
'Ô
'€%Ø�LŠL‰NŒN€$„'Ø„'‡,‚,Ð>Ñ?Ô?Ð?Ø„'‡.‚.Ð1€.Ñ2Ô2Ð2Ø„'‡.‚.Ð,°E°7€.Ñ;Ô;Ð;Ø„'‡-‚-�k¨F€-Ñ3Ô3Ð3Ø	€$Ø�[Š[‰]Œ]ð ð €cØ‡;‚;Øˆ3Œ7�6‰?Œ?Ø�”˜Ñ$Ô$ØØ�”˜‘”Ð3Ð3 7 3¤7¨5¡>¤>Ð3Ð3ð	ð ñ ô ð ð ð 
€+r(   r   Nr<   r=   c                 óx  — |                       ¦   «         | _        | j                             | j        › d�¦  «         | j                             | j                             d¦  «        ¦  «         |r| j                             ||¬¦  «         | j                             dd¬¦  «         |  	                    ¦   «         S rÝ   )
rD   rE   rW   r   ra   r#   rR   rF   rG   rI   rb   s      r   rc   zClothing.allª  s˜   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�D”JÐ8Ð8Ð8Ñ9Ô9Ð9Ø„'‡,‚,ˆtŒv�zŠz˜)Ñ$Ô$Ñ%Ô%Ð%Ø
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*à„'‡-‚-�k¨F€-Ñ3Ô3Ð3Ø	�Š‰ŒÐr(   rÔ   rd   )re   rf   rg   r   rj   rh   rƒ   rP   rÒ   r0   r   rc   rk   rl   s   @r   r‰   r‰   �  s©   ø€ € € € € Ø	€ð �4ð  ˜Cð  ð  ð  ð  ð  ð  ðð �3ð ˜dð ð ð ð ð"ð �Cð  ¨$¤ð ¸ð ð ð ð ð ð ð ð r(   r‰   c                   óR   ‡ — e Zd Zd ZdddœZdedefˆ fd„Zdedefd„Z	defd	„Z
ˆ xZS )
rŠ   z&join Users on Users.ID = Notes.User_IDz,join Clients on Clients.ID = Notes.Client_ID)r   ÚClientr   r   c                 óø   •— t          ¦   «                              ¦   «         |d<   | j        |d<   t          ¦   «         |d<   |                     d¦  «        pd |d<   t          ¦   «                              |¬¦  «        S )Nr>   r   rç   r�   r€   )r	   r‚   r   r   rR   r$   rƒ   r„   s     €r   rƒ   z	Notes.add»  se   ø€ Ý‘h”h—m’m‘o”o€$€{ÑØ”€$€|ÑÝ‘K”K€$€y�/Ø—X’X˜jÑ)Ô)Ð1¨T€$€zÑÝ	‰Œ�Š˜$ˆÑ	Ô	Ðr(   r7   c                 óØ  — |                       ¦   «         | _        | j                             d¬¦  «         | j                             d|g¬¦  «         | j                             dd¬¦  «         | j                             | j                             dd	¦  «        ¬
¦  «         t          d| j        ¬¦  «         |  	                    t          |                      ¦   «         ¦  «        ¦  «        S )NúNotes.*,Users.Name as UserrV   r:   r;   r>   r?   r@   r   r   rä   zQuery Cacher   )rD   rE   rW   rF   rG   ra   r#   rR   r   rH   rP   rI   rJ   s     r   rK   zNotes.get_clientÂ  s¹   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.Ð4€.Ñ5Ô5Ð5Ø„'‡.‚.�~¨Y¨K€.Ñ8Ô8Ð8Ø„'‡-‚-�k¨F€-Ñ3Ô3Ð3Ø„'‡,‚,�D”F—J’J˜v bÑ)Ô)€,Ñ*Ô*Ð*Ýˆm ¤Ð(Ñ(Ô(Ð(Ø	×	Ò	�4 §¢¡¤Ñ.Ô.Ñ	/Ô	/Ð/r(   c                 ó®  — |                       ¦   «         | _        | j                             d¦  «         | j                             | j                             dd¦  «        ¬¦  «         | j                             | j                             dd¦  «        ¬¦  «         | j                             d¦  «         t          |                      ¦   «         ¦  «        S )Nrú   r   r   rä   r÷   zdate(Timestamp) desc)	rD   rE   rW   ra   r#   rR   rG   rP   rI   r5   s    r   rc   z	Notes.allË  s�   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.Ð-Ñ.Ô.Ð.Ø„'‡,‚,�D”F—J’J˜v bÑ)Ô)€,Ñ*Ô*Ð*Ø„'‡,‚,�D”F—J’J˜x¨Ñ+Ô+€,Ñ,Ô,Ð,Ø„'‡-‚-Ð&Ñ'Ô'Ð'Ý	ˆd�kŠk‰mŒmÑ	Ô	Ðr(   )re   rf   rg   r   r#   rj   rh   rƒ   rP   rK   rc   rk   rl   s   @r   rŠ   rŠ   ´  sŸ   ø€ € € € € Ø	€à	1Ø9ðð €ð
 �4ð  ˜Cð  ð  ð  ð  ð  ð  ð0˜sð 0 tð 0ð 0ð 0ð 0ð�$ð ð ð ð ð ð ð ð r(   rŠ   c                   ó*   — e Zd Zd Zdefd„Zdefd„ZdS )ÚOptionsr   c                 óò   — t          |                     d¦  «        t          ¦  «        r't          j        |                     d¦  «        ¦  «        n|                     d¦  «        pg |d<   t          |¦  «        S )NÚoptions)Ú
isinstancerR   r0   rt   ru   r   ©r&   r   s     r   Úmk_rowzOptions.mk_rowÖ  sd   € Ý:DÀTÇXÂXÈiÑEXÔEXÕY\Ñ:]Ô:]Ð|•E”M $§(¢(¨9Ñ"5Ô"5Ñ6Ô6Ð6Ðcg×ckÒckÐluÑcvÔcvÐc|Ðz|€$€y�/Ý	ˆT‰ŒÐr(   c                 óp   — |                       ¦   «         | _        d„ |                      ¦   «         D ¦   «         S )Nc                 óL   — i | ]!} |j         d ¦  «         |j         d¦  «        “Œ"S )r’   rÿ   )rR   )Ú.0r   s     r   ú
<dictcomp>z!Options.cache.<locals>.<dictcomp>Ü  s0   € Ð	FÐ	FÐ	F°ˆ'ˆ#Œ'�&‰/Œ/˜'˜#œ' )Ñ,Ô,Ð	FÐ	FÐ	Fr(   )rD   rE   rI   r5   s    r   ÚcachezOptions.cacheÚ  s-   € Ø�LŠL‰NŒN€$„'Ø	FÐ	F¸¿º¹¼Ð	FÑ	FÔ	FÐFr(   N)re   rf   rg   r   rj   r  r  r{   r(   r   rý   rý   Ó  sV   € € € € € Ø	€ð˜$ð ð ð ð ðG�Dð Gð Gð Gð Gð Gð Gr(   rý   c                   ó,   — e Zd Zddedefd„Zdefd„ZdS )Ú	Dashboardr›   r¦   r   c                 óþ  — g }|t          t          ¦   «                              |¬¦  «        ¦  «        z  }|t          t          ¦   «                              |¬¦  «        ¦  «        z  }|t          t	          ¦   «                              |¬¦  «        ¦  «        z  }|t          t          ¦   «                              |¬¦  «        ¦  «        z  }|t          t          ¦   «                              |¬¦  «        ¦  «        z  }|S )N)r¦   )rP   r†   rÒ   rŒ   r‰   r‡   rˆ   )r&   r¦   r   s      r   rÒ   zDashboard.logß  sÀ   € Ø	€$Ø�$�u‰wŒw�{Š{ ˆ{Ñ%Ô%Ñ
&Ô
&Ñ&€$Ø�$�w‰yŒy�}Š} $ˆ}Ñ'Ô'Ñ
(Ô
(Ñ(€$Ø�$�x‰zŒz�~Š~ 4ˆ~Ñ(Ô(Ñ
)Ô
)Ñ)€$Ø�$�t‰vŒv�zŠz˜tˆzÑ$Ô$Ñ
%Ô
%Ñ%€$Ø�$�w‰yŒy�}Š} $ˆ}Ñ'Ô'Ñ
(Ô
(Ñ(€$à	€+r(   c                 ó   — dt          ¦   «                              ¦   «         t          ¦   «                              ¦   «         t	          ¦   «                              ¦   «         t          ¦   «                              ¦   «         t          ¦   «                              ¦   «         t          ¦   «                              ¦   «         t          |  	                    ¦   «         ¦  «        t          ¦   «                              ¦   «         dœ	}|S )Nr   )	ÚGuest_TotalÚMonthlyr†   rˆ   r‰   r‡   rŒ   ÚLogrý   )r"   r½   r†   r]   rˆ   r‰   r‡   rŒ   rP   rÒ   rý   r  r  s     r   r½   zDashboard.summaryé  s¨   € àÝ‰YŒY×ÒÑ Ô Ý‰7Œ7�>Š>ÑÔÝ‰YŒY×ÒÑÔÝ‰jŒj×ÒÑ!Ô!Ý
‰&Œ&�-Š-‰/Œ/Ý‰YŒY×ÒÑÔÝ	ˆd�hŠh‰jŒjÑ	Ô	Ý‰YŒY�_Š_ÑÔð

ð 

€$ð 
€+r(   NrÔ   )re   rf   rg   rh   rP   rÒ   rj   r½   r{   r(   r   r	  r	  Þ  sV   € € € € € ðð �3ð ˜dð ð ð ð ð�dð ð ð ð ð ð r(   r	  c                 ó   — d„ }|S )Nc                  óœ   — |                      d¦  «        }|                      d¦  «        }dd|› d|› �dœ}t          j        d|¬¦  «         |S )	Nr   Úlevelr   zUser z is not )ÚstatusÚmessageÚResponser   )rR   rt   r   )ÚargcÚargvro   r  Úresponses        r   r  zauth_failed.<locals>.messageø  s\   € Ø	�Š�&Ñ	Ô	€$Ø
�(Š(�7Ñ
Ô
€%ØÐ#@¨4Ð#@Ð#@¸Ð#@Ð#@ÐAÐA€(Ý„+�J HÐ-Ñ-Ô-Ð-Ø	€/r(   r{   )Úfuncr  s     r   Úauth_failedr  ÷  s   € ðð ð ð 	€r(   r  c                 óZ   — t          j        dd| i¬¦  «         d}d„ }|dk    r|S t          S )Nz	Auth argsÚLevelr   ÚBrentac                 ó   ‡ — ˆ fd„}|S )Nc                  óJ   •— t          j        d| |dœ¬¦  «          ‰| i |¤Ž d S )NÚinside)r  r  r   )rt   r   )r  r  r  s     €r   Úwrapperz(auth.<locals>.grab_func.<locals>.wrapper  s;   ø€ Ý„;�X¨4°tÐ#<Ð#<Ð=Ñ=Ô=Ð=Ø€4ˆÐ�ÐÐÐÐÐr(   r{   )r  r   s   ` r   Ú	grab_funczauth.<locals>.grab_func  s#   ø€ ðð ð ð ð ð 
€.r(   ÚBrent)rt   r   r  )r  ro   r!  s      r   rw   rw     sF   € Ý„�; W¨U OÐ4Ñ4Ô4Ð4Ø€ðð ð ð
 	ˆG‚O€OØ	Ðå	Ðr(   )Útypingr   r   r   r   Úflaskr   rt   r   r	   Údbr
   r   rh   r   r   rn   r"   r†   rˆ   r‡   r‹   rŒ   r‰   rŠ   rý   r	  r  r0   rw   r{   r(   r   ú<module>r&     sÙ  ðØ .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð ð�3ð ð ð ð ðDð Dð Dð Dð D�Eñ Dô Dð DðL'ð 'ð 'ð 'ð 'ˆEñ 'ô 'ð 'ð$ð ð ð ð ˆmñ ô ð ðB(ð (ð (ð (ð (ˆMñ (ô (ð (ðT(ð (ð (ð (ð (ˆmñ (ô (ð (ðT(ð (ð (ð (ð (ˆ=ñ (ô (ð (ðT	 ð 	 ð 	 ð 	 ð 	 �ñ 	 ô 	 ð 	 ðð ð ð ð ˆmñ ô ð ð6#ð #ð #ð #ð #ˆ}ñ #ô #ð #ðJð ð ð ð ˆMñ ô ð ð>	Gð 	Gð 	Gð 	Gð 	Gˆeñ 	Gô 	Gð 	Gðð ð ð ð �ñ ô ð ð2ð ð ðˆsð ð ð ð ð ð r(   