<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    .e                     @   sj   d dl mZmZmZ d dlmZ d dlZd dlmZ ddl	m
Z
 ddlmZ ed	Zd
d ZeeZdS )    )absolute_importdivisionunicode_literals)OrderedDictN)string_types   )base   )moduleFactoryFactoryz{([^}]*)}(.*)c                    s,   | }| dj G  fdddtj}t S )NZasdc                       s4   e Zd ZdZ fddZdd Zdd Zdd	 Zd
S )z#getETreeBuilder.<locals>.TreeWalkera  Given the particular ElementTree representation, this implementation,
        to avoid using recursion, returns "nodes" as tuples with the following
        content:

        1. The current element

        2. The index of the element relative to its parent

        3. A stack of ancestor elements

        4. A flag "text", "tail" or None to indicate if the current node is a
           text node; either the text or tail of the current element (1)
        c                    s.  t |tr2|\}}}}|dkr.tjt||fS |}t|dsD| }|jdkrVtjfS |jdkr|tj	|j
|d|dfS |j krtj|j
fS t|j}|r| \}}n
d }|j}t }t|j D ]>\}	}
t|	}|r |
||d|df< q|
|d |	f< qtj|||t|p&|j
fS d S )	Ntexttailtag)ZDOCUMENT_ROOTZDOCUMENT_FRAGMENTz
<!DOCTYPE>ZpublicIdZsystemIdr   r	   )
isinstancetupler   ZTEXTgetattrhasattrZgetrootr   ZDOCUMENTZDOCTYPEr   getCOMMENT
tag_regexpmatchgroupsr   listZattribitemsgroupZELEMENTlen)selfnodeZelt_flagr   	namespacer   ZattrsnamevalueZElementTreeCommentType J/usr/lib/python3.8/site-packages/pip/_vendor/html5lib/treewalkers/etree.pygetNodeDetails    s>    



 

 z2getETreeBuilder.<locals>.TreeWalker.getNodeDetailsc                 S   st   t |tr|\}}}}n|d g d f\}}}}|dkr8d S |jrJ|||dfS t|rl|| |d d|d fS d S d S )Nr   r   r   )r   r   r   r   appendr   r   elementkeyparentsr   r$   r$   r%   getFirstChildH   s    

z1getETreeBuilder.<locals>.TreeWalker.getFirstChildc                 S   s   t |tr|\}}}}nd S |dkrLt|rF|| |d d|d fS d S nN|jrf|dkrf|||dfS |t|d d k r|d |d  |d |d fS d S d S )Nr   r   r   r   )r   r   r   r'   r   r(   r$   r$   r%   getNextSiblingY   s    

z2getETreeBuilder.<locals>.TreeWalker.getNextSiblingc                 S   sh   t |tr|\}}}}nd S |dkr:|s,|S |||d fS n*| }|sJ|S |t|d ||d fS d S )Nr   r-   )r   r   popr   index)r   r   r)   r*   r+   r   parentr$   r$   r%   getParentNodem   s    
z1getETreeBuilder.<locals>.TreeWalker.getParentNodeN)__name__
__module____qualname____doc__r&   r,   r.   r2   r$   r#   r$   r%   
TreeWalker   s
   (r7   )Commentr   r   ZNonRecursiveTreeWalkerlocals)ZElementTreeImplementationZElementTreer7   r$   r#   r%   getETreeBuilder   s    nr:   )Z
__future__r   r   r   collectionsr   reZpip._vendor.sixr    r   Z_utilsr
   compiler   r:   ZgetETreeModuler$   r$   r$   r%   <module>   s   
t