+
    ‡)Ùj>B  ã                   óè   € ^ RI t ^ RIt^ RIHtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ]P                   ]P"                  ,           t ! R	 R
]4      t ! R R]4      t ! R R4      tR# )é    N)ÚdatetimeÚ	timedelta)Úsync_to_async)Úsettings)Úsigning)Útimezone)Úget_random_string)Úimport_stringc                   ó   € ] tR t^tRtRtR# )ÚCreateErrorz{
Used internally as a consistent exception type to catch from save (see the
docstring for SessionBase.save() for details).
© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú^/var/www/eggtrainer/venv/lib/python3.14/site-packages/django/contrib/sessions/backends/base.pyr   r      s   † ñó
 	r   r   c                   ó   € ] tR t^tRtRtR# )ÚUpdateErrorz>
Occurs if Django tries to update a session that was deleted.
r   Nr   r   r   r   r   r      s   † ñó 	r   r   c                   óL  a € ] tR t^#t o RtRtRt]! 4       tRIR lt	R t
R tR tR	 tR
 t]R 4       tRIR ltRIR lt]3R lt]3R ltR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R  t%R! t&R" t'R# t(R$ t)R% t*R& t+R' t,R( t-R) t.R* t/R+ t0R, t1]! ]04      t2]! ]0]14      t3RJR- lt4RJR. lt5]! ]44      t6R/ t7R0 t8R1 t9R2 t:R3 t;R4 t<R5 t=R6 t>R7 t?R8 t@R9 tAR: tBR; tCR< tDR= tER> tFR? tGRJR@ ltHRJRA ltIRIRB ltJRIRC ltKRD tLRE tM]NRF 4       tO]NRG 4       tPRHtQV tRR# )KÚSessionBasez%
Base class for all Session classes.
Ú
testcookieÚworkedNc                ój   € Wn         R V n        R V n        \        \        P
                  4      V n        R# )FN)Ú_session_keyÚaccessedÚmodifiedr
   r   ÚSESSION_SERIALIZERÚ
serializer©ÚselfÚsession_keys   &&r   Ú__init__ÚSessionBase.__init__-   s(   € Ø'ÔØˆŒØˆŒÜ'¬×(CÑ(CÓDˆŽr   c                ó   € WP                   9   # ©N©Ú_session©r$   Úkeys   &&r   Ú__contains__ÚSessionBase.__contains__3   ó   € Ø—m‘mÑ#Ð#r   c                ó(   € V P                   V,          # r)   r*   r,   s   &&r   Ú__getitem__ÚSessionBase.__getitem__6   s   € Ø�}‰}˜SÕ!Ð!r   c                ó0   € W P                   V&   R V n        R# ©TN©r+   r    ©r$   r-   Úvalues   &&&r   Ú__setitem__ÚSessionBase.__setitem__9   s   € Ø"�‰�cÑØˆŽr   c              ƒ  óT   "  € Y P                  4       G R j  x€L
 V&   RV n        R #  L5i©NT)Ú_aget_sessionr    r7   s   &&&r   ÚasetÚSessionBase.aset=   s%   é € Ø,1×!Ñ!Ó#×	# SÑ)ØˆŽñ 
$ùs   ‚(–&—(c                ó.   € V P                   V R V n        R# r5   r6   r,   s   &&r   Ú__delitem__ÚSessionBase.__delitem__A   s   € Ø�M‰M˜#ÐØˆŽr   c                ó<   € R V P                   P                  ,           # )zdjango.contrib.sessions.)Ú	__class__r   ©r$   s   &r   Úkey_saltÚSessionBase.key_saltE   s   € à)¨D¯N©N×,GÑ,GÕGÐGr   c                ó8   € V P                   P                  W4      # r)   )r+   Úget©r$   r-   Údefaults   &&&r   rI   ÚSessionBase.getI   s   € Ø�}‰}× Ñ  Ó.Ð.r   c              ƒ  ó\   "  € V P                  4       G R j  x€L
 P                  W4      #  L5ir)   )r=   rI   rJ   s   &&&r   ÚagetÚSessionBase.agetL   s%   é € Ø×(Ñ(Ó*×*×/Ñ/°Ó=Ð=Ñ*ùs   ‚,–*—,c                ó´   € V P                   ;'       g    WP                  9   V n         W P                  J d   RMV3pV P                  P                  ! V.VO5!  # ©Nr   )r    r+   Ú_SessionBase__not_givenÚpop©r$   r-   rK   Úargss   &&& r   rS   ÚSessionBase.popO   sJ   € ØŸ™×=Ð=¨·±Ñ)=ˆŒØ× 0Ñ 0Ó0‰r°w°jˆØ�}‰}× Ò  Ð, tÓ,Ð,r   c              ƒ  óô   "  € V P                   ;'       g    YP                  4       G R j  x€L
 9   V n         W P                  J d   RMV3pV P                  4       G R j  x€L
 P                  ! V.VO5!  #  LI L5irQ   )r    r=   rR   rS   rT   s   &&& r   ÚapopÚSessionBase.apopT   sf   é € ØŸ™×LÐL¨×7IÑ7IÓ7K×1KÑ)LˆŒØ× 0Ñ 0Ó0‰r°w°jˆØ×(Ñ(Ó*×*×/Ò/°Ð;°dÓ;Ð;ñ 2Lá*ùs!   ‚(A8ªA4«2A8ÁA6ÁA8Á6A8c                óT   € WP                   9   d   V P                   V,          # W V&   V# r)   r*   r7   s   &&&r   Ú
setdefaultÚSessionBase.setdefaultY   s'   € Ø—-‘-ÔØ—=‘= Õ%Ð%à�‰IØˆLr   c              ƒ  ó”   "  € V P                  4       G R j  x€L
 pW9   d	   W1,          # V P                  W4      G R j  x€L
  V#  L- L5ir)   )r=   r>   )r$   r-   r8   Úsessions   &&& r   ÚasetdefaultÚSessionBase.asetdefault`   sD   é € Ø×*Ñ*Ó,×,ˆØŒ>Ø•<Ðà—)‘)˜CÓ'×'Ð'ØˆLñ -ñ (ùs   ‚A–A—&A½A¾AÁAc                ó6   € V P                   W P                  &   R # r)   )ÚTEST_COOKIE_VALUEÚTEST_COOKIE_NAMErE   s   &r   Úset_test_cookieÚSessionBase.set_test_cookieh   s   € Ø&*×&<Ñ&<ˆ×"Ñ"Ó#r   c              ƒ  ón   "  € V P                  V P                  V P                  4      G R j  x€L
  R #  L5ir)   )r>   rc   rb   rE   s   &r   Úaset_test_cookieÚSessionBase.aset_test_cookiek   s%   é € Ø�i‰i˜×-Ñ-¨t×/EÑ/EÓF×FÔFùs   ‚*5¬3­5c                óR   € V P                  V P                  4      V P                  8H  # r)   )rI   rc   rb   rE   s   &r   Útest_cookie_workedÚSessionBase.test_cookie_workedn   s"   € Ø�x‰x˜×-Ñ-Ó.°$×2HÑ2HÑHÐHr   c              ƒ  ón   "  € V P                  V P                  4      G R j  x€L
 V P                  8H  #  L5ir)   )rN   rc   rb   rE   s   &r   Úatest_cookie_workedÚSessionBase.atest_cookie_workedq   s+   é € Ø—i‘i × 5Ñ 5Ó6×6¸4×;QÑ;QÑQÐQÑ6ùs   ‚5¡3¢5c                ó   € W P                    R # r)   )rc   rE   s   &r   Údelete_test_cookieÚSessionBase.delete_test_cookiet   s   € Ø×&Ñ&Ò'r   c              ƒ  óX   "  € V P                  4       G R j  x€L
 V P                   R #  L5ir)   )r=   rc   rE   s   &r   Úadelete_test_cookieÚSessionBase.adelete_test_cookiew   s"   é € Ø×%Ñ%Ó'×'¨×)>Ñ)>Ò?Ñ'ùs   ‚*–(—*c                ó^   € \         P                  ! VV P                  V P                  RR7      # )zGReturn the given session dictionary serialized and encoded as a string.T)Úsaltr"   Úcompress)r   ÚdumpsrF   r"   )r$   Úsession_dicts   &&r   ÚencodeÚSessionBase.encodez   s'   € ä�}Š}ØØ—‘Ø—‘Øô	
ð 	
r   c                óü   €  \         P                  ! WP                  V P                  R 7      #   \         P                   d,    \
        P                  ! R4      pTP                  R4        / # \         d     / # i ; i))rv   r"   z!django.security.SuspiciousSessionzSession data corrupted)	r   ÚloadsrF   r"   ÚBadSignatureÚloggingÚ	getLoggerÚwarningÚ	Exception)r$   Úsession_dataÚloggers   && r   ÚdecodeÚSessionBase.decodeƒ   su   € ð
	Ü—=’=Ø§=¡=¸T¿_¹_ôð øô ×#Ñ#ô 	5Ü×&Ò&Ð'JÓKˆFØ�N‰NÐ3Õ4ð
 ˆ	ô	 ô 	ð Øˆ	ð		ús   ‚+. ®<A;Á-A;Á6A;Á:A;c                óJ   € V P                   P                  V4       R V n        R# r5   )r+   Úupdater    ©r$   Údict_s   &&r   rˆ   ÚSessionBase.update‘   s   € Ø�‰×Ñ˜UÔ#ØˆŽr   c              ƒ  ón   "  € V P                  4       G R j  x€L
 P                  V4       RV n        R #  L5ir<   )r=   rˆ   r    r‰   s   &&r   ÚaupdateÚSessionBase.aupdate•   s+   é € Ø×!Ñ!Ó#×	#×+Ñ+¨EÔ2ØˆŽñ 
$ùs   ‚5–3—5c                ó   € WP                   9   # r)   r*   r,   s   &&r   Úhas_keyÚSessionBase.has_key™   r0   r   c              ƒ  óB   "  € YP                  4       G R j  x€L
 9   #  L5ir)   )r=   r,   s   &&r   Úahas_keyÚSessionBase.ahas_keyœ   s   é € Ø×/Ñ/Ó1×1Ñ2Ð2Ñ1ùs   ‚–—c                ó6   € V P                   P                  4       # r)   )r+   ÚkeysrE   s   &r   r–   ÚSessionBase.keysŸ   s   € Ø�}‰}×!Ñ!Ó#Ð#r   c              ƒ  óZ   "  € V P                  4       G R j  x€L
 P                  4       #  L5ir)   )r=   r–   rE   s   &r   ÚakeysÚSessionBase.akeys¢   s#   é € Ø×(Ñ(Ó*×*×0Ñ0Ó2Ð2Ñ*ùó   ‚+–)—+c                ó6   € V P                   P                  4       # r)   )r+   ÚvaluesrE   s   &r   r�   ÚSessionBase.values¥   s   € Ø�}‰}×#Ñ#Ó%Ð%r   c              ƒ  óZ   "  € V P                  4       G R j  x€L
 P                  4       #  L5ir)   )r=   r�   rE   s   &r   ÚavaluesÚSessionBase.avalues¨   s#   é € Ø×(Ñ(Ó*×*×2Ñ2Ó4Ð4Ñ*ùr›   c                ó6   € V P                   P                  4       # r)   )r+   ÚitemsrE   s   &r   r£   ÚSessionBase.items«   s   € Ø�}‰}×"Ñ"Ó$Ð$r   c              ƒ  óZ   "  € V P                  4       G R j  x€L
 P                  4       #  L5ir)   )r=   r£   rE   s   &r   ÚaitemsÚSessionBase.aitems®   s#   é € Ø×(Ñ(Ó*×*×1Ñ1Ó3Ð3Ñ*ùr›   c                ó0   € / V n         R V n        R V n        R# r5   )Ú_session_cacher   r    rE   s   &r   ÚclearÚSessionBase.clear±   s   € ð !ˆÔØˆŒØˆŽr   c                ó|   €  V P                   '       * ;'       d    V P                  '       * #   \         d     R# i ; i)zBReturn True when there is no session_key and the session is empty.T)r   r©   ÚAttributeErrorrE   s   &r   Úis_emptyÚSessionBase.is_empty¹   s9   € ð	Ø×(Ñ(Ô(×DÐD°×1DÑ1DÔ-DÐDøÜô 	Úð	ús   ‚, š, ¬;º;c                óZ   €  \        ^ \        4      pV P                  V4      '       d   K*  V# )z)Return session key that isn't being used.)r	   ÚVALID_KEY_CHARSÚexistsr#   s   & r   Ú_get_new_session_keyÚ SessionBase._get_new_session_keyÀ   s&   € àÜ+¨B´Ó@ˆKØ—;‘;˜{×+Ô+Ø"Ð"r   c              ƒ  óv   "  €  \        ^ \        4      pV P                  V4      G Rj  x€L
 '       d   K2  V#  L5ir5   )r	   r±   Úaexistsr#   s   & r   Ú_aget_new_session_keyÚ!SessionBase._aget_new_session_keyÇ   s4   é € ØÜ+¨B´Ó@ˆKØŸ™ kÓ2×2×2Ð2Ø"Ð"ñ 3ùs   ‚&9¨7©9µ9c                ó`   € V P                   f   V P                  4       V n         V P                   # r)   )r   r³   rE   s   &r   Ú_get_or_create_session_keyÚ&SessionBase._get_or_create_session_keyÍ   s+   € Ø×ÑÒ$Ø $× 9Ñ 9Ó ;ˆDÔØ× Ñ Ð r   c              ƒ  ó|   "  € V P                   f   V P                  4       G R j  x€L
 V n         V P                   #  L5ir)   )r   r·   rE   s   &r   Ú_aget_or_create_session_keyÚ'SessionBase._aget_or_create_session_keyÒ   s7   é € Ø×ÑÒ$Ø&*×&@Ñ&@Ó&B× BˆDÔØ× Ñ Ð ñ !Cùs   ‚"<¤:¥<c                ó2   € T;'       d    \        V4      ^8¬  # )z|
Key must be truthy and at least 8 characters long. 8 characters is an
arbitrary lower bound for some minimal key security.
)Úlenr,   s   &&r   Ú_validate_session_keyÚ!SessionBase._validate_session_key×   s   € ð
 ×$Ð$”s˜3“x 1‘}Ð$r   c                ó   € V P                   # r)   )Ú_SessionBase__session_keyrE   s   &r   Ú_get_session_keyÚSessionBase._get_session_keyÞ   s   € Ø×!Ñ!Ð!r   c                óR   € V P                  V4      '       d	   Wn        R# RV n        R# )zF
Validate session key on assignment. Invalid values will set to None.
N)rÁ   rÄ   ©r$   r8   s   &&r   Ú_set_session_keyÚSessionBase._set_session_keyá   s#   € ð ×%Ñ% e×,Ò,Ø!&Öà!%ˆDÖr   c                óà   € RV n          V P                  #   \         dN    T P                  e	   T'       d   / T n         T P                  # T P	                  4       T n         T P                  # i ; i)z†
Lazily load session from storage (unless "no_load" is True, when only
an empty dict is stored) and store it in the current instance.
T)r   r©   r­   r%   Úload©r$   Úno_loads   &&r   Ú_get_sessionÚSessionBase._get_sessioní   sk   € ð
 ˆŒð	2Ø×&Ñ&Ð&øÜô 	2Ø×ÑÒ'¯7Ø&(�Õ#ð ×"Ñ"Ð"ð '+§i¡i£k�Õ#Ø×"Ñ"Ð"ð	2ús   ‰ • A-¶A-Á
A-Á,A-c              ƒ  óú   "  € R V n          V P                  #   \         dW    T P                  e	   T'       d   / T n         T P                  # T P	                  4       G Rj  x€L 
 T n         T P                  # i ; i5ir5   )r   r©   r­   r%   ÚaloadrÍ   s   &&r   r=   ÚSessionBase._aget_sessionü   sq   é € ØˆŒð	9Ø×&Ñ&Ð&øÜô 	9Ø×ÑÒ'¯7Ø&(�Õ#ð ×"Ñ"Ð"ð -1¯J©J«L×&8Ð&8�Õ#Ø×"Ñ"Ð"ð	9üsA   ‚A;‹ –A;— A8¸A8¿A;ÁA8ÁA"Á 
A8Á*A;Á7A8Á8A;c                ó"   € \         P                  # r)   )r   ÚSESSION_COOKIE_AGErE   s   &r   Úget_session_cookie_ageÚ"SessionBase.get_session_cookie_age	  s   € Ü×*Ñ*Ð*r   c                óÖ  €  VR,          p VR,          pV'       g   V P	                  4       # \        V\        \        34      '       g   V# \        V\        4      '       d   \        P                  ! V4      pW2,
          pVP                  R,          VP                  ,           #   \          d    \        P                  ! 4       p Lºi ; i  \          d    T P                  R4      p LÒi ; i)z½Get the number of seconds until the session expires.

Optionally, this function accepts `modification` and `expiry` keyword
arguments specifying the modification and expiry of the session.
ÚmodificationÚexpiryÚ_session_expiryé€Q )ÚKeyErrorr   ÚnowrI   rÖ   Ú
isinstancer   ÚstrÚfromisoformatÚdaysÚseconds©r$   ÚkwargsrÙ   rÚ   Údeltas   &,   r   Úget_expiry_ageÚSessionBase.get_expiry_age  sÂ   € ð	*Ø! .Õ1ˆLð	1Ø˜HÕ%ˆF÷ Ø×.Ñ.Ó0Ð0Ü˜&¤8¬S /×2Ò2ØˆMÜ�fœc×"Ò"Ü×+Ò+¨FÓ3ˆFØÕ%ˆØ�z‰z˜EÕ! E§M¡MÕ1Ð1øô# ô 	*Ü#Ÿ<š<›>ŠLð	*ûô ô 	1Ø—X‘XÐ/Ó0ŠFð	1ús"   ‚	B# Œ	C	 Â# CÃCÃ	C(Ã'C(c              ‹  óð  "  €  VR ,          p VR,          pV'       g   V P	                  4       # \        V\        \        34      '       g   V# \        V\        4      '       d   \        P                  ! V4      pW2,
          pVP                  R,          VP                  ,           #   \          d    \        P                  ! 4       p Lºi ; i  \          d    T P                  R4      G Rj  x€L 
 p LÛi ; i5i)rÙ   rÚ   rÛ   NrÜ   )rÝ   r   rÞ   rN   rÖ   rß   r   rà   rá   râ   rã   rä   s   &,   r   Úaget_expiry_ageÚSessionBase.aget_expiry_age'  sÊ   é € ð	*Ø! .Õ1ˆLð	8Ø˜HÕ%ˆF÷ Ø×.Ñ.Ó0Ð0Ü˜&¤8¬S /×2Ò2ØˆMÜ�fœc×"Ò"Ü×+Ò+¨FÓ3ˆFØÕ%ˆØ�z‰z˜EÕ! E§M¡MÕ1Ð1øô ô 	*Ü#Ÿ<š<›>ŠLð	*ûô ô 	8ØŸ9™9Ð%6Ó7×7Ð7ŠFð	8üsV   ‚C6„	B% Ž	C —C6ŸBC6Â% CÃC6ÃCÃC6ÃC3Ã*C-Ã+C3Ã0C6Ã2C3Ã3C6c                óœ  €  VR,          p VR,          p\	        V\
        4      '       d   V# \	        V\        4      '       d   \
        P                  ! V4      # T;'       g    V P                  4       pV\        VR7      ,           #   \          d    \        P                  ! 4       p L�i ; i  \          d    T P                  R4      p Lµi ; i)z¼Get session the expiry date (as a datetime object).

Optionally, this function accepts `modification` and `expiry` keyword
arguments specifying the modification and expiry of the session.
rÙ   rÚ   rÛ   ©rã   )
rÝ   r   rÞ   rI   rß   r   rà   rá   rÖ   r   ©r$   rå   rÙ   rÚ   s   &,  r   Úget_expiry_dateÚSessionBase.get_expiry_date:  s³   € ð	*Ø! .Õ1ˆLð	1Ø˜HÕ%ˆFô �fœh×'Ò'ØˆMÜ˜¤×$Ò$Ü×)Ò)¨&Ó1Ð1Ø×8Ð8˜4×6Ñ6Ó8ˆØœi°Ô7Õ7Ð7øô ô 	*Ü#Ÿ<š<›>ŠLð	*ûô
 ô 	1Ø—X‘XÐ/Ó0ŠFð	1ús"   ‚	B Œ	B, Â B)Â(B)Â,CÃ
Cc              ‹  ó¶  "  €  VR ,          p VR,          p\	        V\
        4      '       d   V# \	        V\        4      '       d   \
        P                  ! V4      # T;'       g    V P                  4       pV\        VR7      ,           #   \          d    \        P                  ! 4       p L�i ; i  \          d    T P                  R4      G Rj  x€L 
 p L¾i ; i5i)rÙ   rÚ   rÛ   Nrí   )
rÝ   r   rÞ   rN   rß   r   rà   rá   rÖ   r   rî   s   &,  r   Úaget_expiry_dateÚSessionBase.aget_expiry_dateQ  s»   é € ð	*Ø! .Õ1ˆLð	8Ø˜HÕ%ˆFô �fœh×'Ò'ØˆMÜ˜¤×$Ò$Ü×)Ò)¨&Ó1Ð1Ø×8Ð8˜4×6Ñ6Ó8ˆØœi°Ô7Õ7Ð7øô ô 	*Ü#Ÿ<š<›>ŠLð	*ûô ô 	8ØŸ9™9Ð%6Ó7×7Ð7ŠFð	8üsW   ‚C„	B Ž	B. —ACÁ$$CÂ B+Â(CÂ*B+Â+CÂ.CÃCÃCÃCÃCÃCc                óö   € Vf    V R R# \        V\        4      '       d   \        P                  ! 4       V,           p\        V\
        4      '       d   VP                  4       pWR&   R#   \          d     R# i ; i)aÚ  
Set a custom expiration for the session. ``value`` can be an integer,
a Python ``datetime`` or ``timedelta`` object or ``None``.

If ``value`` is an integer, the session will expire after that many
seconds of inactivity. If set to ``0`` then the session will expire on
browser close.

If ``value`` is a ``datetime`` or ``timedelta`` object, the session
will expire at that specific future time.

If ``value`` is ``None``, the session uses the global session expiry
policy.
NrÛ   )rÝ   rß   r   r   rÞ   r   Ú	isoformatrÈ   s   &&r   Ú
set_expiryÚSessionBase.set_expiryb  sr   € ð Š=ðØÐ*Ð+ñ Ü�eœY×'Ò'Ü—L’L“N UÕ*ˆEÜ�eœX×&Ò&Ø—O‘OÓ%ˆEØ"'ÐÓøô ô ØÙðús   †A) Á)A8Á7A8c              ƒ  ó^  "  € Vf    V P                  R4      G R j  x€L
  R # \        V\        4      '       d   \        P
                  ! 4       V,           p\        V\        4      '       d   VP                  4       pV P                  RV4      G R j  x€L
  R #  Lz  \         d     R # i ; i L5i)NrÛ   )	rX   rÝ   rß   r   r   rÞ   r   rõ   r>   rÈ   s   &&r   Úaset_expiryÚSessionBase.aset_expiry~  s‘   é € ØŠ=ðØ—i‘iÐ 1Ó2×2Ð2ñ Ü�eœY×'Ò'Ü—L’L“N UÕ*ˆEÜ�eœX×&Ò&Ø—O‘OÓ%ˆEØ�i‰iÐ)¨5Ó1×1Ò1ñ 3øÜô ØÙðúñ 	2ùsD   ‚B-ˆB œB�B ¡A/B-ÂB+ÂB-ÂB ÂB(Â$B-Â'B(Â(B-c                óV   € V P                  R4      ;pf   \        P                  # V^ 8H  # )zÚ
Return ``True`` if the session is set to expire when the browser
closes, and ``False`` if there's an expiry date. Use
``get_expiry_date()`` or ``get_expiry_age()`` to find the actual expiry
date/age, if there is one.
rÛ   )rI   r   ÚSESSION_EXPIRE_AT_BROWSER_CLOSE©r$   rÚ   s   & r   Úget_expire_at_browser_closeÚ'SessionBase.get_expire_at_browser_closeŒ  s/   € ð —h‘hÐ0Ó1Ð1ˆFÒ:Ü×;Ñ;Ð;Ø˜‰{Ðr   c              ƒ  ór   "  € V P                  R 4      G Rj  x€L
 ;pf   \        P                  # V^ 8H  #  L5i)rÛ   N)rN   r   rü   rý   s   & r   Úaget_expire_at_browser_closeÚ(SessionBase.aget_expire_at_browser_close—  s8   é € Ø ŸI™IÐ&7Ó8×8Ð8ˆFÒAÜ×;Ñ;Ð;Ø˜‰{Ðñ 9ùs   ‚7—5˜7c                óT   € V P                  4        V P                  4        RV n        R# )zK
Remove the current session data from the database and regenerate the
key.
N)rª   Údeleter   rE   s   &r   ÚflushÚSessionBase.flushœ  s   € ð
 	�
‰
ŒØ�‰ŒØ ˆÖr   c              ƒ  óp   "  € V P                  4        V P                  4       G R j  x€L
  R V n        R #  L5ir)   )rª   Úadeleter   rE   s   &r   ÚaflushÚSessionBase.aflush¥  s*   é € Ø�
‰
ŒØ�l‰l‹n×ÐØ ˆÖñ 	ùs   ‚$6¦4§6c                ó˜   € V P                   pV P                  pV P                  4        Wn        V'       d   V P	                  V4       R# R# ©zE
Create a new session key, while retaining the current session data.
N)r+   r%   Úcreater©   r  ©r$   Údatar-   s   &  r   Ú	cycle_keyÚSessionBase.cycle_keyª  s;   € ð �}‰}ˆØ×ÑˆØ�‰ŒØ"ÔßØ�K‰K˜Öñ r   c              ƒ  óä   "  € V P                  4       G Rj  x€L
 pV P                  pV P                  4       G Rj  x€L
  Wn        V'       d   V P	                  V4      G Rj  x€L
  R# R#  LS L1 L5ir  )r=   r%   Úacreater©   r  r  s   &  r   Ú
acycle_keyÚSessionBase.acycle_keyµ  s_   é € ð ×'Ñ'Ó)×)ˆØ×ÑˆØ�l‰l‹n×ÐØ"ÔßØ—,‘,˜sÓ#×#Ò#ñ ñ	 *áñ $ùs1   ‚A0–A*—#A0ºA,»&A0Á!A.Á"	A0Á,A0Á.A0c                ó   € \        R4      h)z6
Return True if the given session_key already exists.
z9subclasses of SessionBase must provide an exists() method©ÚNotImplementedErrorr#   s   &&r   r²   ÚSessionBase.existsÂ  s   € ô "ØGó
ð 	
r   c              ƒ  óT   "  € \        V P                  4      ! V4      G R j  x€L
 #  L5ir)   )r   r²   r#   s   &&r   r¶   ÚSessionBase.aexistsÊ  ó   é € Ü" 4§;¡;Ô/°Ó<×<Ð<Ñ<ùó   ‚(¡&¢(c                ó   € \        R4      h)z¥
Create a new session instance. Guaranteed to create a new object with
a unique key and will have saved the result once (with empty data)
before the method returns.
z8subclasses of SessionBase must provide a create() methodr  rE   s   &r   r  ÚSessionBase.createÍ  s   € ô "ØFó
ð 	
r   c              ƒ  óR   "  € \        V P                  4      ! 4       G R j  x€L
 #  L5ir)   )r   r  rE   s   &r   r  ÚSessionBase.acreate×  s   é € Ü" 4§;¡;Ô/Ó1×1Ð1Ñ1ùó   ‚' %¡'c                ó   € \        R4      h)zÄ
Save the session data. If 'must_create' is True, create a new session
object (or raise CreateError). Otherwise, only update an existing
object and don't create one (raise UpdateError if needed).
z6subclasses of SessionBase must provide a save() methodr  ©r$   Úmust_creates   &&r   ÚsaveÚSessionBase.saveÚ  s   € ô "ØDó
ð 	
r   c              ƒ  óT   "  € \        V P                  4      ! V4      G R j  x€L
 #  L5ir)   )r   r&  r$  s   &&r   ÚasaveÚSessionBase.asaveä  s   é € Ü" 4§9¡9Ô-¨kÓ:×:Ð:Ñ:ùr  c                ó   € \        R4      h)z`
Delete the session data under this key. If the key is None, use the
current session key value.
z8subclasses of SessionBase must provide a delete() methodr  r#   s   &&r   r  ÚSessionBase.deleteç  s   € ô
 "ØFó
ð 	
r   c              ƒ  óT   "  € \        V P                  4      ! V4      G R j  x€L
 #  L5ir)   )r   r  r#   s   &&r   r  ÚSessionBase.adeleteð  r  r  c                ó   € \        R4      h)z0
Load the session data and return a dictionary.
z6subclasses of SessionBase must provide a load() methodr  rE   s   &r   rÌ   ÚSessionBase.loadó  s   € ô "ØDó
ð 	
r   c              ƒ  óR   "  € \        V P                  4      ! 4       G R j  x€L
 #  L5ir)   )r   rÌ   rE   s   &r   rÒ   ÚSessionBase.aloadû  s   é € Ü" 4§9¡9Ô-Ó/×/Ð/Ñ/ùr"  c                ó   € \        R4      h)zò
Remove expired sessions from the session store.

If this operation isn't possible on a given backend, it should raise
NotImplementedError. If it isn't necessary, because the backend has
a built-in expiration mechanism, it should be a no-op.
z.This backend does not support clear_expired().r  ©Úclss   &r   Úclear_expiredÚSessionBase.clear_expiredþ  s   € ô "Ð"RÓSÐSr   c              ƒ  óR   "  € \        V P                  4      ! 4       G R j  x€L
 #  L5ir)   )r   r6  r4  s   &r   Úaclear_expiredÚSessionBase.aclear_expired	  s   é € ä" 3×#4Ñ#4Ô5Ó7×7Ð7Ñ7ùr"  )Ú__session_keyr©   r   r   r    r"   r)   )F)Sr   r   r   r   r   rc   rb   ÚobjectrR   r&   r.   r2   r9   r>   rA   ÚpropertyrF   rI   rN   rS   rX   r[   r_   rd   rg   rj   rm   rp   rs   rz   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ê   rï   rò   rö   rù   rþ   r  r  r	  r  r  r²   r¶   r  r  r&  r)  r  r  rÌ   rÒ   Úclassmethodr6  r9  r   Ú__classdictcell__)Ú__classdict__s   @r   r   r   #   sÕ  ø‡ € ñð $ÐØ Ðá“(€KôEò$ò"òòòð ñHó ðHô/ô>ð  +ô -ð
 '2ô <ò
òò=òGòIòRò(ò@ò
òòòò$ò3ò$ò3ò&ò5ò%ò4òòò#ò#ò!ò
!ò
%ò"ò&ñ Ð+Ó,€KÙÐ,Ð.>Ó?€Lô#ô	#ñ ˜Ó%€Hò+ò2ò62ò&8ò.8ò"(ò82ò	òò
!ò!ò
	ò	$ò
ò=ò
ò2ô
ô;ô
ô=ò
ò0ð ñTó ðTð ñ8ó ö8r   r   )r   Ústringr   r   Úasgiref.syncr   Údjango.confr   Údjango.corer   Údjango.utilsr   Údjango.utils.cryptor	   Údjango.utils.module_loadingr
   Úascii_lowercaseÚdigitsr±   r‚   r   r   r   r   r   r   Ú<module>rJ     sZ   ðÛ Û ß (å &å  Ý Ý !Ý 1Ý 5ð ×(Ñ(¨6¯=©=Õ8€ô	�)ô 	ô	�)ô 	÷h8ó h8r   