o
    h                     @   s.  d dl Z d dlmZmZmZmZ d dlmZ dZdZ	dZ
	ddeeeeeef ef f d	ed
eee eeeef  f fddZdeeeeeef ef f fddZd
eeeeeef ef f fddZddeeef dee d
efddZded
eeeef  fddZd
eeeef  fddZdS )    N)AnyDictOptionalTuple)get_adapter   
   socialaccount_statesFstatesrevreturnc                 C   s^   d }d }d }|   D ] \}}|d }|d u s"|r||ks"|s*||kr*|}|}|d }q
||fS )N   r   )items)r
   r   	oldest_ts	oldest_idoldeststate_idstate_tsts r   ^/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/socialaccount/internal/statekit.pyget_oldest_state   s   r   c                 C   s.   t | tkrt| \}}|r| |= d S d S d S N)len
MAX_STATESr   )r
   r   r   r   r   r   	gc_states   s   
r   c                 C   s   | j t}t|tsi }|S r   )sessiongetSTATES_SESSION_KEY
isinstancedict)requestr
   r   r   r   
get_states$   s   
r"   stater   c                 C   sB   t | }t| |d u rt |}|t f||< || jt< |S r   )r"   r   r   generate_state_paramtimer   r   )r!   r#   r   r
   r   r   r   stash_state+   s   
r&   c                 C   s:   d }t | }||}|d ur|d }||= || jt< |S )Nr   )r"   r   r   r   )r!   r   r#   r
   r   r   r   r   unstash_state5   s   

r'   c                 C   s*   t | }t|dd\}}|rt| | |S )NT)r   )r"   r   r'   )r!   r
   r   r#   r   r   r   unstash_last_state@   s
   
r(   )Fr   )r%   typingr   r   r   r   allauth.socialaccount.adapterr   STATE_ID_LENGTHr   r   strfloatboolr   r   r"   r&   r'   r(   r   r   r   r   <module>   s&    
&&$
