� !A?hgX� �4�ddlmZddlmZddlZddlmZddlmZm Z m Z ddl m Z m Z mZmZmZmZddlmZmZmZed �ed ��D����eed ����zZeed ��z Zeed ��z ZeZeZeZed��Zeed��zZ eej!ej"zdz��Z#e#ed��zZ$eej%��Z&edd dddddd���Z'Gd�de(��Z)e*d�d]d!�Z+e*d�d^d$�Z,Gd%�d&��Z-Gd'�d(��Z.Gd)�d*e ��Z/d_d0�Z0d`d6�Z1dad7�Z2dad8�Z3dbd;�Z4dbd<�Z5dcd?�Z6dddA�Z7dedB�Z8dfdD�Z9dfdE�Z:dgdG�Z;dhdI�ZdjdQ�Z?dfdR�Z@dkdT�ZAdidU�ZBdldW�ZCdmdY�ZDdnd[�ZEdod\�ZFdS)p�)� annotations)�IterableN)�MappingProxyType)�Any�BinaryIO� NamedTuple�)� RE_DATETIME� RE_LOCALTIME� RE_NUMBER�match_to_datetime�match_to_localtime�match_to_number)�Key� ParseFloat�Posc#�4K�|]}t|��V��dS�N)�chr)�.0�is �rs(����1�1�!�s�1�v�v�1�1�1�1�1�1�� �� z z � z-_z"'�� � �"�\)z\bz\tz\nz\fz\rz\"z\\c��eZdZdS)�TOMLDecodeErrorN)�__name__� __module__� __qualname__�rrr%r%5s������:�:rr%�� parse_float�fprr+r�return�dict[str, Any]c�� |���} |���}n#t$rtd��d�wxYwt ||���S)NzEFile must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`r*)�read�decode�AttributeError� TypeError�loads)r,r+�b�ss r�loadr79sn��/� ��� � �A�� �H�H�J�J���� ����� S� � �� ����� �� � ,� ,� ,�,s �,�Ar6�strc�f� |�dd��}d}tt��t����}d}t |��} t ||t ��} ||}n#t$rY�n&wxYw|dkr|dz }�>|tvr*t|||||��}t ||t ��}n�|dkr~ ||dz}n#t$rd}YnwxYw|j � ��|dkrt|||��\}}nt|||��\}}t ||t ��}n|dkrt||d ���t||��} ||}n#t$rYn"wxYw|dkrt||d ���|dz }��S|jjS) Nz rrr)Tr �[�#zInvalid statementz5Expected newline or end of document after a statement)�replace�Output� NestedDict�Flags�make_safe_parse_float� skip_chars�TOML_WS� IndexError�KEY_INITIAL_CHARS�key_value_rule�flags�finalize_pending�create_list_rule�create_dict_rule� suffixed_err� skip_comment�data�dict)r6r+�src�pos�out�header�char� second_chars rr4r4Es��#� �)�)�F�D� !� !�C� �C� ����u�w�w� '� '�C��F�'� �4�4�K�0���c�7�+�+�� ��s�8�D�D��� � � � �E� ���� �4�<�<� �1�H�C� � �$� $� $� ��c�3�� �D�D�C��S�#�w�/�/�C�C� �S�[�[� #�*-�c�A�g�,� � ��� #� #� #�"� � � � #���� �I� &� &� (� (� (��c�!�!�.�s�C��=�=� ��V�V�.�s�C��=�=� ��V��S�#�w�/�/�C�C� �S�[�[��s�C�)<�=�=� =��3��$�$�� ��s�8�D�D��� � � � �E� ���� �4�<�<���S�Q��� � �q���a0�d �8�=�s6�+A4�4 B�B� C� C&�%C&�0E9�9 F�Fc�H�eZdZ dZdZdd�Zdd �Zdd �Zdd �Zdd�Z dd�Z dS)r?rr r-�Nonec�:�i|_t��|_dSr)�_flags�set�_pending_flags��selfs r�__init__zFlags.__init__�s��')�� �47�E�E����r�keyr�flag�intc�>�|j�||f��dSr)rY�add�r[r]r^s r� add_pendingzFlags.add_pending�s#�� �����d� �,�,�,�,�,rc��|jD]\}}|�||d����|j���dS)NF�� recursive)rYrX�clearrbs rrGzFlags.finalize_pending�sN���,� 1� 1�I�C�� �H�H�S�$�%�H� 0� 0� 0� 0� ��!�!�#�#�#�#�#rc��|j}|dd�D]}||vrdS||d}�|�|dd��dS)N������nested)rW�pop)r[r]�cont�ks r� unset_allzFlags.unset_all�s^���{���S�b�S�� %� %�A���}�}������7�8�$�D�D� ����R��$�����rrf�boolc�<�|j}|dd�|d}}|D]5}||vr!t��t��id�||<||d}�6||vr!t��t��id�||<|||rdnd�|��dS)Nri)rF�recursive_flagsrjrjrqrF)rWrXra)r[r]r^rfrl� key_parent�key_stemrms rrXz Flags.set�s����{��"�3�B�3�x��R��H� �� %� %�A���}�}�$'�E�E�c�e�e�r�R�R��Q����7�8�$�D�D� �4� � �'*�u�u����RT�U�U�D��N� �X��I�B�(�(�7�C�G�G��M�M�M�M�Mrc���|sdS|j}|dd�D]&}||vrdS||}||dvrdS|d}�'|d}||vr||}||dvp ||dvSdS)NFrirqTrjrF)rW)r[r]r^rlrm� inner_contrss r�is_z Flags.is_�s���� ��5��{���S�b�S�� (� (�A���}�}��u�u��a��J��z�"3�4�4�4��t�t��h�'�D�D��r�7�� �t� � ���>�D��4��=�(�K�D�D�9J�4K�,K� K��urN�r-rU)r]rr^r_r-rU�r]rr-rU)r]rr^r_rfror-rU)r]rr^r_r-ro) r&r'r(�FROZEN� EXPLICIT_NESTr\rcrGrnrXrvr)rrr?r?�s�������3��F��M�:�:�:�:�-�-�-�-�$�$�$�$�  � � � � N� N� N� N������rr?c�,�eZdZdd�Zdd�dd �Zdd �Zd S)r>r-rUc��i|_dSr)rMrZs rr\zNestedDict.__init__�s ��$&�� � � rT�� access_listsr]rr~rorMc���|j}|D]V}||vri||<||}|rt|t��r|d}t|t��std����W|S)Nriz There is no nest behind this key)rM� isinstance�list�KeyError)r[r]r~rlrms r�get_or_create_nestzNestedDict.get_or_create_nest�s��� �I��� C� C�A���}�}���Q����7�D�� � �4�� 6� 6� ��B�x���d�D�)�)� C��A�B�B�B� C�� rc���|�|dd���}|d}||vrC||}t|t��std���|�i��dSig||<dS)Nriz/An object other than list found behind this key)r�r�r�r��append)r[r]rl�last_key�list_s r�append_nest_to_listzNestedDict.append_nest_to_list�s����&�&�s�3�B�3�x�0�0���r�7�� �t� � ���N�E��e�T�*�*� R��P�Q�Q�Q� �L�L�� � � � � � �T�D��N�N�NrNrw)r]rr~ror-rMrx)r&r'r(r\r�r�r)rrr>r>�s_������'�'�'�'�"� ������" "� "� "� "� "� "rr>c�$�eZdZUded<ded<dS)r=r>rLr?rFN)r&r'r(�__annotations__r)rrr=r=�s%������������L�L�L�L�Lrr=rNrOr�chars� Iterable[str]c�\� |||vr|dz }|||v�n#t$rYnwxYw|S)Nr )rC)rNrOr�s rrArA�sV�� ��#�h�%��� �1�H�C��#�h�%����� � � � � �� ���� �Js �� )�)�expect�error_on�frozenset[str]� error_on_eofroc�B� |�||��}n6#t$r)t|��}|rt||d|����d�YnwxYw|�|||���s3|||vr|dz }|||v�t||d||�����|S)Nz Expected r zFound invalid character )�index� ValueError�lenrJ� isdisjoint)rNrOr�r�r��new_poss r� skip_untilr��s���O��)�)�F�C�(�(���� �O�O�O��c�(�(�� � O��s�G�-C��-C�-C�D�D�$� N� O� O�O���� � � �s�3�w�;�/� 0� 0�N��#�h�h�&�&� �1�H�C��#�h�h�&�&��3��%L��C��%L�%L�M�M�M� �Ns��0A � A c�� ||}n#t$rd}YnwxYw|dkrt||dzdtd���S|S)Nr;r rF�r�r�)rCr��ILLEGAL_COMMENT_CHARS)rNrOrRs rrKrKsm����s�8���� ������������ �s�{�{�� ��q��$�)>�U� � � � � �J� � � �c�f� |}t||t��}t||��}||kr|S�1r)rA�TOML_WS_AND_NEWLINErK)rNrO�pos_before_skips r�skip_comments_and_array_wsr�sB�������c�#6�7�7���3��$�$�� �/� !� !��J� rrP�tuple[Pos, Key]c�>�|dz }t||t��}t||��\}}|j�|t j��s%|j�|t j��rt||d|�d����|j� |t jd��� |j � |��n #t$rt||d��d�wxYw|� d|��st||d���|dz|fS) Nr zCannot declare z twiceFre�Cannot overwrite a value�]z.Expected ']' at the end of a table declaration)rArB� parse_keyrFrvr?rzryrJrXrLr�r�� startswith�rNrOrPr]s rrIrIs-���1�H�C� �S�#�w� '� '�C���c�"�"�H�C�� �y�}�}�S�%�-�.�.�D�#�)�-�-��U�\�2R�2R�D��3��%B�s�%B�%B�%B�C�C�C��I�M�M�#�u�*�e�M�<�<�<�K� ��#�#�C�(�(�(�(�� �K�K�K��3��%?�@�@�d�J�K���� �>�>�#�s� #� #�W��3��%U�V�V�V� ��7�C�<�s �6C�C.c�&�|dz }t||t��}t||��\}}|j�|t j��rt||d|�����|j�|��|j� |t j d��� |j � |��n #t$rt||d��d�wxYw|�d|��st||d���|dz|fS)N��"Cannot mutate immutable namespace Frer�z]]z0Expected ']]' at the end of an array declaration)rArBr�rFrvr?ryrJrnrXrzrLr�r�r�r�s rrHrH.s%���1�H�C� �S�#�w� '� '�C���c�"�"�H�C�� �y�}�}�S�%�,�'�'�Q��3��%O�#�%O�%O�P�P�P��I��������I�M�M�#�u�*�e�M�<�<�<�K� ��$�$�S�)�)�)�)�� �K�K�K��3��%?�@�@�d�J�K���� �>�>�$�� $� $�Y��3��%W�X�X�X� ��7�C�<�s �*C�C"rQrc�&�� �t|||��\}� }� dd�� d}}�|z}�� fd�tdt� ����D��} | D]`} |j�| t j��rt||d| �����|j�| t j���a|j�|t j ��rt||d|����� |j � |��} n #t$rt||d��d�wxYw|| vrt||d���t|ttf��r*|j��� zt j d���|| |<|S) Nric3�2�K�|]}��d|�zV��dSrr))rrrQr]s ��rrz!key_value_rule..Js0�����L�L�A�v��B�Q�B��/�L�L�L�L�L�Lrr zCannot redefine namespace r�r�Tre)�parse_key_value_pair�ranger�rFrvr?rzrJrcryrLr�r�r�rMr�rX) rNrOrPrQr+�valuerrrs�abs_key_parent�relative_path_cont_keys�cont_key�nestr]s ` @rrErECs�����+�3��[�A�A�O�C��e��s��s�8�S��W��J��j�(�N�L�L�L�L�L��q�#�c�(�(�9K�9K�L�L�L��+�=�=�� �9�=�=��5�#6� 7� 7� R��s�C�)P�h�)P�)P�Q�Q� Q� � ���h��(;�<�<�<�<� �y�}�}�^�U�\�2�2� �� ��K�>�K�K� � � �K��x�*�*�>�:�:���� �K�K�K��3��%?�@�@�d�J�K�����4����3��%?�@�@�@��%�$���&�&�B� � � � �f�s�l�E�L�D� �A�A�A��D��N� �Js �6D�D.�tuple[Pos, Key, Any]c���t||��\}} ||}n#t$rd}YnwxYw|dkrt||d���|dz }t||t��}t |||��\}}|||fS)N�=z,Expected '=' after a key in a key/value pairr )r�rCrJrArB� parse_value)rNrOr+r]rRr�s rr�r�es�����c�"�"�H�C����s�8���� ������������ �s�{�{��3��%S�T�T�T��1�H�C� �S�#�w� '� '�C��S�#�{�3�3�J�C�� ��U�?�s �� -�-c�>�t||��\}}|f}t||t��} ||}n#t$rd}YnwxYw|dkr||fS|dz }t||t��}t||��\}}||fz }t||t��}�q)NT�.r )�parse_key_partrArBrC)rNrO�key_partr]rRs rr�r�us���"�3��,�,�M�C���{�C� �S�#�w� '� '�C� ,� �"�3�x�D�D��� � � ��D�D�D� ���� �3�;�;���8�O� �q�����c�7�+�+��&�s�C�0�0� ��X� ��{�����c�7�+�+�� ,s�8� A�A�tuple[Pos, str]c�� ||}n#t$rd}YnwxYw|tvr$|}t||t��}||||�fS|dkrt||��S|dkrt ||��St ||d���)N�'r"z(Invalid initial character for a key part)rC�BARE_KEY_CHARSrA�parse_literal_str�parse_one_line_basic_strrJ)rNrOrR� start_poss rr�r��s�����s�8���� ������������ �~���� ���c�>�2�2���C� �#� �&�&�&� �s�{�{� ��c�*�*�*� �s�{�{�'��S�1�1�1� �s�C�!K� L� L�Lr�c�0�|dz }t||d���S)Nr F�� multiline)�parse_basic_str�rNrOs rr�r��s ���1�H�C� �3��u� 5� 5� 5�5r�tuple[Pos, list]c��|dz }g}t||��}|�d|��r|dz|fS t|||��\}}|�|��t||��}|||dz�}|dkr|dz|fS|dkrt ||d���|dz }t||��}|�d|��r|dz|fS��)Nr r�T�,zUnclosed array)r�r�r�r�rJ)rNrOr+�array�val�cs r� parse_arrayr��s���1�H�C��E� $�S�#� .� .�C� �~�~�c�3�����Q�w��~��"��s�C��5�5���S� � � �S����(��c�2�2�� ��c�A�g� � �� ��8�8���7�E�>� !� ��8�8��s�C�)9�:�:� :� �q���(��c�2�2�� �>�>�#�s� #� #� "���7�E�>� !�"r�tuple[Pos, dict]c�f�|dz }t��}t��}t||t��}|�d|��r |dz|jfS t |||��\}}}|dd�|d}}|�|tj��rt||d|����� |� |d���} n #t$rt||d��d�wxYw|| vrt||d |�����|| |<t||t��}|||dz�} | dkr |dz|jfS| d krt||d ���t|t tf��r"|�|tjd� ��|dz }t||t��}��X) Nr �}Trir�Fr}r�zDuplicate inline table key r�zUnclosed inline tablere)r>r?rArBr�rMr�rvryrJr�r�r�r�rX) rNrOr+� nested_dictrFr]r�rrrsr�r�s r�parse_inline_tabler��s����1�H�C��,�,�K� �G�G�E� �S�#�w� '� '�C� �~�~�c�3���)��Q�w� �(�(�(�,�.�s�C��E�E���S�%�"�3�B�3�x��R��H� � �9�9�S�%�,� '� '� U��s�C�)S�c�)S�)S�T�T� T� O��1�1�*�5�1�Q�Q�D�D��� O� O� O��s�C�)C�D�D�$� N� O���� �t� � ��s�C�)S�x�)S�)S�T�T� T���X����c�7�+�+�� ��c�A�g� � �� ��8�8���7�K�,�,� ,� ��8�8��s�C�)@�A�A� A� �e�d�D�\� *� *� 9� �I�I�c�5�<�4�I� 8� 8� 8� �q�����c�7�+�+��+,s �7C�C,Fr�r�c���|||dz�}|dz }|rt|dvrp|dkrPt||t��} ||}n#t$r|dfcYSwxYw|dkrt||d���|dz }t||t��}|dfS|dkrt ||d ��S|d krt ||d ��S |t |fS#t$rt||d��d�wxYw) Nr�>�\ �\ �\ r��rzUnescaped '\' in a stringr z\u�z\U�)rArBrCrJr��parse_hex_char�BASIC_STR_ESCAPE_REPLACEMENTSr�)rNrOr�� escape_idrRs r�parse_basic_str_escaper��sM���C�#��'�M�"�I��1�H�C�� �Y�"9�9�9� �� � ��S�#�w�/�/�C� ��3�x����� � � ��B�w���� �����t�|�|�"�3��-I�J�J�J� �1�H�C���c�#6�7�7���B�w���E����c�3��*�*�*��E����c�3��*�*�*�M��1�)�<�<�<�� �M�M�M��3��%A�B�B��L�M���s�?�A�A�8C�C$c�&�t||d���S)NTr�)r�r�s r� parse_basic_str_escape_multiliner��s�� !�#�s�d� ;� ;� ;�;r�hex_lenr_c�$�||||z�}t|��|kst�|��st||d���||z }t |d��}t |��st||d���|t |��fS)NzInvalid hex value�z/Escaped character is not a Unicode scalar value)r��HEXDIGIT_CHARS� issupersetrJr_�is_unicode_scalar_valuer)rNrOr��hex_str�hex_ints rr�r��s����#��g� �%�&�G� �7�|�|�w���n�&?�&?��&H�&H���3��%8�9�9�9��7�N�C��'�2���G� "�7� +� +�X��3��%V�W�W�W� ��G� � � �rc�`�|dz }|}t||dtd���}|dz|||�fS)Nr r�Tr�)r��ILLEGAL_LITERAL_STR_CHARS)rNrOr�s rr�r�sJ���1�H�C��I� � �S�#� 9�� � � �C� ��7�C� �#� �&� &�&r�literalc�`�|dz }|�d|��r|dz }|r+d}t||dtd���}|||�}|dz}nd}t||d� ��\}}|�||��s||fS|dz }|�||��s|||zfS|dz }|||d zzfS) N�rr r��'''Tr�r"r�r�)r�r��#ILLEGAL_MULTILINE_LITERAL_STR_CHARSr�)rNrOr��delim�end_pos�results r�parse_multiline_strr� s���1�H�C� �~�~�d�C� � �� �q���� @���� � � �8��  � � ���S��[�!����k�����%�c�3�$�?�?�?� ��V� �>�>�%�� %� %���F�{���1�H�C� �>�>�%�� %� %�#��F�U�N�"�"��1�H�C� ��%�!�)�$� $�$rc��|rt}t}nt}t}d}|} ||}n #t$rt ||d��d�wxYw|dkrB|s|dz||||�zfS|�d|��r|dz||||�zfS|dz }�s|dkr$||||�z }|||��\}}||z }|}��||vrt ||d |�����|dz }��) Nr�TzUnterminated stringr"r �"""r�r#zIllegal character )�!ILLEGAL_MULTILINE_BASIC_STR_CHARSr��ILLEGAL_BASIC_STR_CHARSr�rCrJr�) rNrOr�r�� parse_escapesr�r�rR� parsed_escapes rr�r�(sY���/�4��8� � �*��.� � �F��I�� J��s�8�D�D��� J� J� J��s�C�)>�?�?�T� I� J���� �3�;�;�� <��Q�w���Y�s�]�);� ;�;�;��~�~�e�S�)�)� <��Q�w���Y�s�]�);� ;�;�;� �1�H�C� � �4�<�<� �c�)�C�-�(� (�F�!.��s�C�!8�!8� �C�� �m� #�F��I� � �8� � ��s�C�)F�d�)F�)F�G�G� G� �q���)s �/�A �tuple[Pos, Any]c�n� ||}n#t$rd}YnwxYw|dkr8|�d|��rt||d���St||��S|dkr8|�d|��rt||d���St ||��S|dkr|�d |��r|d zdfS|d kr|�d |��r|d zdfS|dkrt |||��S|dkrt |||��Stj||��}|rK t|��}n$#t$r}t||d��|�d}~wwxYw|� ��|fStj||��}|r#|� ��t|��fStj||��}|r$|� ��t!||��fS|||dz�} | dvr|dz|| ��fS|||d z�} | dvr|d z|| ��fSt||d���)Nr"r�F)r�r�r�T�t�truer��f�false�r:�{zInvalid date or datetimer�>�inf�nan>�+inf�+nan�-inf�-nanz Invalid value)rCr�r�r�r�r�r�r �matchr r�rJ�endr rr r) rNrOr+rR�datetime_match� datetime_obj�e�localtime_match� number_match� first_three� first_fours rr�r�Hs�����s�8���� ������������  �s�{�{� �>�>�%�� %� %� @�&�s�C��?�?�?� ?�'��S�1�1�1� �s�{�{� �>�>�%�� %� %� ?�&�s�C��>�>�>� >� ��c�*�*�*� �s�{�{� �>�>�&�#� &� &� !���7�D�=� � �s�{�{� �>�>�'�3� '� '� "���7�E�>� !� �s�{�{��3��[�1�1�1� �s�{�{�!�#�s�K�8�8�8�!�&�s�C�0�0�N��2� L�,�^�<�<�L�L��� L� L� L��s�C�)C�D�D�!� K����� L�����!�!�#�#�\�1�1�"�(��c�2�2�O��J��"�"�$�$�&8��&I�&I�I�I� �?�3��,�,�L��N����!�!�?�<��#M�#M�M�M��c�C�!�G�m�$�K��n�$�$��Q�w� � �K�0�0�0�0��S�3��7�]�#�J��5�5�5��Q�w� � �J�/�/�/�/� �s�C�� 1� 1�1s$� � ��%D5�5 E�?E�E�msgc�J� d d�}t|�d|||���d���S) NrNr8rOrr-c��|t|��krdS|�dd|��dz}|dkr|dz}n||�dd|��z }d|�d|��S)Nzend of documentrrr zline z , column )r��count�rindex)rNrO�line�columns r� coord_reprz suffixed_err..coord_repr�su�� �#�c�(�(�?�?�$�$��y�y��q�#�&�&��*�� �1�9�9��1�W�F�F��3�:�:�d�A�s�3�3�3�F�.�t�.�.�f�.�.�.rz (at �))rNr8rOrr-r8)r%)rNrOrrs rrJrJ�sH���/�/�/�/� �c�?�?� � �3��(<�(<�?�?�?� @� @�@r� codepointc�B�d|cxkodkncpd|cxkodkncS)Nri��i�i��r))rs rr�r��sE�� �� #� #� #� #�e� #� #� #� #� G��)�)F�)F�)F�)F�w�)F�)F�)F�)F�Grc�6�� �turtSd�fd� }|S)N� float_strr8r-rc�t���|��}t|ttf��rtd���|S)Nz*parse_float must not return dicts or lists)r�rMr�r�)r� float_valuer+s �r�safe_parse_floatz/make_safe_parse_float..safe_parse_float�s>���!�k�)�,�,� � �k�D�$�<� 0� 0� K��I�J�J� J��r)rr8r-r)�float)r+r s` rr@r@�s@�����e���� ������� �r)r,rr+rr-r.)r6r8r+rr-r.)rNr8rOrr�r�r-r) rNr8rOrr�r8r�r�r�ror-r)rNr8rOrr-r)rNr8rOrrPr=r-r�) rNr8rOrrPr=rQrr+rr-r)rNr8rOrr+rr-r�)rNr8rOrr-r�)rNr8rOrr-r�)rNr8rOrr+rr-r�)rNr8rOrr+rr-r�)rNr8rOrr�ror-r�)rNr8rOrr�r_r-r�)rNr8rOrr�ror-r�)rNr8rOrr+rr-r�)rNr8rOrrr8r-r%)rr_r-ro)r+rr-r)G� __future__r�collections.abcr�string�typesr�typingrrr�_rer r r r rr�_typesrrr� frozensetr�r� ASCII_CTRLr�r�r�r�r�rBr�� ascii_letters�digitsr�rD� hexdigitsr�r�r�r%r!r7r4r?r>r=rAr�rKr�rIrHrEr�r�r�r�r�r�r�r�r�r�r�r�r�rJr�r@r)rr�r.s��� #�"�"�"�"�"�$�$�$�$�$�$� � � � �"�"�"�"�"�"�,�,�,�,�,�,�,�,�,�,�����������������)�(�(�(�(�(�(�(�(�(� �Y�1�1�u�u�R�y�y�1�1�1� 1� 1�I�I�c�c�#�h�h�4G�4G� G� �%�y�y����6��$.���6�1B�1B�$B�!�3��&G�#�/�� �)�E� � ��� � �$���/����6�/�&�-�?�$�F�G�G��"�Y�Y�u�%5�%5�5����6�+�,�,�� 0� 0���������� !� !��;�;�;�;�;�j�;�;�;�8=� -� -� -� -� -� -�38�?�?�?�?�?�?�D7�7�7�7�7�7�7�7�t"�"�"�"�"�"�"�"�D�����Z���� ��������, � � � ���������$����*����D � � � � ,�,�,�,�$ M� M� M� M� 6�6�6�6� "�"�"�"�0,�,�,�,�B.3�M�M�M�M�M�M�:<�<�<�<�����'�'�'�'�%�%�%�%�>����@A2�A2�A2�A2�HA�A�A�A�"H�H�H�H������r