ó
    ¸RjÈ  ã                   óÖ   • S SK r S SKrS SKJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJrJr   " S S\R                  5      r " S	 S
\R                   5      r " S S5      r " S S\5      rg)é    N)Úsettings)ÚBaseStorageÚMessage)Úsigning)ÚSimpleCookie)ÚSafeDataÚ	mark_safec                   ó0   ^ • \ rS rSrSrSrU 4S jrSrU =r$ )ÚMessageEncoderé   zA
Compactly serialize instances of the ``Message`` class as JSON.
Ú__json_messagec                 ó,  >• [        U[        5      (       ap  [        UR                  [        5      (       a  SOSnU R                  X!R
                  UR                  /nUR                  b  UR                  UR                  5        U$ [        TU ]%  U5      $ )Né   r   )
Ú
isinstancer   Úmessager   Úmessage_keyÚlevelÚ
extra_tagsÚappendÚsuperÚdefault)ÚselfÚobjÚis_safedatar   Ú	__class__s       €ÚRD:\diplom_project\venv\Lib\site-packages\django/contrib/messages/storage/cookie.pyr   ÚMessageEncoder.default   so   ø€ Ü�cœ7×#Ñ#ä)¨#¯+©+´x×@Ñ@™!ÀaˆKØ×'Ñ'¨·i±iÀÇÁÐMˆGØ�~‰~Ñ)Ø—‘˜sŸ~™~Ô.ØˆNÜ‰w‰˜sÓ#Ð#ó    © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r      s   ø† ñð #€K÷$ó $r   r   c                   ó2   ^ • \ rS rSrSrS rU 4S jrSrU =r$ )ÚMessageDecoderé   z=
Decode JSON that includes serialized ``Message`` instances.
c                 ó¢  • [        U[        5      (       ae  U(       a^  US   [        R                  :X  a&  US   (       a  [	        US   5      US'   [        USS  6 $ U Vs/ s H  o R                  U5      PM     sn$ [        U[        5      (       a4  UR                  5        VVs0 s H  u  p4X0R                  U5      _M     snn$ U$ s  snf s  snnf )Nr   r   é   é   )	r   Úlistr   r   r	   r   Úprocess_messagesÚdictÚitems)r   r   ÚitemÚkeyÚvalues        r   r/   ÚMessageDecoder.process_messages"   s±   € Ü�cœ4× Ñ ¦SØ�1‰vœ×3Ñ3Ó3Ø�q—6Ü& s¨1¡vÓ.�C˜‘FÜ  A B Ð(Ð(Ù<?Ó@ºC°D×)Ñ)¨$Ö/¹CÑ@Ð@Ü�cœ4× Ñ ØHKÏ	É	ÌÔTÊ¹*¸#�C×.Ñ.¨uÓ5Ò5ÉÒTÐTØˆ
ùò AùãTs   ÁCÂ#Cc                 óH   >• [         TU ]  " U40 UD6nU R                  U5      $ )N)r   Údecoder/   )r   ÚsÚkwargsÚdecodedr   s       €r   r7   ÚMessageDecoder.decode-   s'   ø€ Ü‘'’. Ñ- fÑ-ˆØ×$Ñ$ WÓ-Ð-r   r   )	r    r!   r"   r#   r$   r/   r7   r%   r&   r'   s   @r   r)   r)      s   ø† ñò	÷.ó .r   r)   c                   ó    • \ rS rSrS rS rSrg)ÚMessageSerializeré2   c                 óT   • [         R                  " US[        S9R                  S5      $ )N)Ú,Ú:)Ú
separatorsÚclsúlatin-1)ÚjsonÚdumpsr   Úencode)r   r   s     r   rF   ÚMessageSerializer.dumps3   s(   € Ü�zŠzØØ!Üñ
÷ ‰&�Ó
ð		r   c                 óR   • [         R                  " UR                  S5      [        S9$ )NrD   )rC   )rE   Úloadsr7   r)   ©r   Údatas     r   rJ   ÚMessageSerializer.loads:   s   € Ü�zŠz˜$Ÿ+™+ iÓ0´nÑEÐEr   r   N)r    r!   r"   r#   rF   rJ   r%   r   r   r   r=   r=   2   s   † òõFr   r=   c                   ób   ^ • \ rS rSrSrSrSrSrSrU 4S jr	S r
S	 rSS
 jrSS jrS rSrU =r$ )ÚCookieStorageé>   z
Store messages in a cookie.
Úmessagesi   Ú__messagesnotfinished__zdjango.contrib.messagesc                 ól   >• [         TU ]  " U0 UD6  [        R                  " U R                  S9U l        g )N)Úsalt)r   Ú__init__r   Úget_cookie_signerÚkey_saltÚsigner)r   Úargsr9   r   s      €r   rU   ÚCookieStorage.__init__K   s+   ø€ Ü‰Ò˜$Ð) &Ò)Ü×/Ò/°T·]±]ÑCˆ�r   c                 ó  • U R                   R                  R                  U R                  5      nU R	                  U5      nU=(       a    US   U R
                  :H  (       + nU(       a  U(       d  UR                  5         XE4$ )zâ
Retrieve a list of messages from the messages cookie. If the
not_finished sentinel value is found at the end of the message list,
remove it and return a result indicating that not all messages were
retrieved by this storage.
éÿÿÿÿ)ÚrequestÚCOOKIESÚgetÚcookie_nameÚ_decodeÚnot_finishedÚpop)r   rY   r9   rL   rQ   Úall_retrieveds         r   Ú_getÚCookieStorage._getO   se   € ð �|‰|×#Ñ#×'Ñ'¨×(8Ñ(8Ó9ˆØ—<‘< Ó%ˆØ%×K¨(°2©,¸$×:KÑ:KÑ*KÔLˆÞžMà�L‰LŒNØÐ&Ð&r   c           	      óR  • U(       ai  UR                  U R                  U[        R                  [        R                  =(       d    S[        R
                  =(       d    S[        R                  S9  gUR                  U R                  [        R                  [        R                  S9  g)zb
Either set the cookie with the encoded data if there is any data to
store, or delete the cookie.
N)ÚdomainÚsecureÚhttponlyÚsamesite)rh   rk   )Ú
set_cookier`   r   ÚSESSION_COOKIE_DOMAINÚSESSION_COOKIE_SECUREÚSESSION_COOKIE_HTTPONLYÚSESSION_COOKIE_SAMESITEÚdelete_cookie)r   Úencoded_dataÚresponses      r   Ú_update_cookieÚCookieStorage._update_cookie^   s„   € ö
 Ø×ÑØ× Ñ ØÜ×5Ñ5Ü×5Ñ5×=¸Ü!×9Ñ9×A¸TÜ!×9Ñ9ð  ò ð ×"Ñ"Ø× Ñ Ü×5Ñ5Ü!×9Ñ9ð #ò r   c                 óÔ  ^	• / nU R                  U5      nU R                  (       a±  [        5       m	U	4S jnU(       aš  U" U5      U R                  :”  a„  U(       a!  UR                  UR	                  S5      5        O UR                  SUR	                  5       5        U R                  XR                  /-   US9nU(       a  U" U5      U R                  :”  a  M„  U R                  Xr5        U$ )a$  
Store the messages to a cookie and return a list of any messages which
could not be stored.

If the encoded data is larger than ``max_cookie_size``, remove
messages until the data fits (these are the messages which are
returned), and add the not_finished sentinel value to indicate as much.
c                 ó>   >• [        TR                  U 5      S   5      $ )Nr   )ÚlenÚvalue_encode)ÚvalÚcookies    €r   Ústored_lengthÚ+CookieStorage._store.<locals>.stored_lengthƒ   s   ø€ Ü˜6×.Ñ.¨sÓ3°AÑ6Ó7Ð7r   r   )Úencode_empty)Ú_encodeÚmax_cookie_sizer   r   rc   Úinsertrb   rt   )
r   rQ   rs   Úremove_oldestrY   r9   Úunstored_messagesrr   r|   r{   s
            @r   Ú_storeÚCookieStorage._stores   sÈ   ø€ ð ÐØ—|‘| HÓ-ˆØ××ô "“^ˆFõ8ö ¡=°Ó#>À×AUÑAUÓ#UÞ Ø%×,Ñ,¨X¯\©\¸!«_Õ=à%×,Ñ,¨Q°·±³Ô?Ø#Ÿ|™|Ø× 1Ñ 1Ð2Ñ2ÐARð  ,ð  �ö ¡=°Ó#>À×AUÑAUÕ#Uð 	×Ñ˜LÔ3Ø Ð r   c                 ó^   • U(       d  U(       a  U R                   R                  U[        SS9$ g)zà
Return an encoded version of the messages list which can be stored as
plain text.

Since the data will be retrieved from the client-side, the encoded data
also contains a hash to ensure that the data was not tampered with.
T)Ú
serializerÚcompressN)rX   Úsign_objectr=   )r   rQ   r~   s      r   r   ÚCookieStorage._encode‘   s2   € ö –|Ø—;‘;×*Ñ*ØÔ%6Àð +ð ð ð $r   c                 óÒ   • U(       d  g U R                   R                  U[        S9$ ! [        R                  [
        R                  [        R                  4 a     Of = fSU l	        g)z¤
Safely decode an encoded text stream back into a list of messages.

If the encoded text stream contained an invalid hash or was in an
invalid format, return None.
N)r‡   T)
rX   Úunsign_objectr=   r   ÚBadSignatureÚbinasciiÚErrorrE   ÚJSONDecodeErrorÚusedrK   s     r   ra   ÚCookieStorage._decodež   s_   € ö Øð	Ø—;‘;×,Ñ,¨TÔ>OÐ,ÐPÐPøÜ×$Ñ$¤h§n¡n´d×6JÑ6JÐKó 	Ùð	úð ˆŒ	Øs   Š( ¨3AÁA)rX   r‘   )T)F)r    r!   r"   r#   r$   r`   r€   rb   rW   rU   re   rt   r„   r   ra   r%   r&   r'   s   @r   rO   rO   >   sD   ø† ñð €Kð €OØ,€LØ(€HõDò'òô*!ô<÷ð r   rO   )rŽ   rE   Údjango.confr   Ú$django.contrib.messages.storage.baser   r   Údjango.corer   Údjango.httpr   Údjango.utils.safestringr   r	   ÚJSONEncoderr   ÚJSONDecoderr)   r=   rO   r   r   r   Ú<module>rš      sX   ðÛ Û å  ß EÝ Ý $ß 7ô$�T×%Ñ%ô $ô$.�T×%Ñ%ô .÷*	Fñ 	Fôp�Kõ pr   