�
!A?h� � � � g d �Z ddlZddlZddlmZ ddlmZ e� � Zej Z ej
Z
d� ZdZd
d�Z
d
d�Zd
d �ZdS ))�choice� randbelow�randbits�SystemRandom�token_bytes� token_hex�
token_urlsafe�compare_digest� N)r )r c �b � | dk rt d� � �t � | � � S )Nr
zUpper bound must be positive.)�
ValueError�_sysrand�
_randbelow)�exclusive_upper_bounds �4/opt/alt/python-internal/lib64/python3.11/secrets.pyr r s4 � �2���!�!��8�9�9�9����4�5�5�5� � c �J � | �t } t � | � � S �N)�DEFAULT_ENTROPYr
� randbytes��nbytess r r r " s' � �� �~� �����f�%�%�%r c �l � t j t | � � � � � d� � S )N�ascii)�binascii�hexlifyr �decoder s r r r 0 s0 � � � ��K��/�/�0�0�7�7��@�@�@r c � � t | � � }t j |� � � d� � � d� � S )N� =r )r �base64�urlsafe_b64encode�rstripr )r �toks r r r = sC � �� �f�
�
�C��#�C�(�(�/�/��5�5�<�<�W�E�E�Er r )�__all__r r �hmacr �randomr r
�getrandbitsr r r r r r r � r r �