�
]�gS � � � d dl Z d dlmZ d dlmZ d dlmZmZmZm Z e j
dk rd dlmZ nd dlmZ G d� de� � Z
d ed
e e
dee fd�Zd ed
ee dee dee dee f
d�Z dd ed
ee deee dee fd�Zedk rad dlmZ e G d� d� � � � Z ed eddd� � eddd� � eddd� � g� � Z e ee� � � � dS dS )� N)�Fraction)�ceil)�cast�List�Optional�Sequence)� � )�Protocolc �J � e Zd ZU dZdZee ed<