Your IP : 3.17.70.182


Current Path : /proc/self/root/opt/alt/python313/lib64/python3.13/__pycache__/
Upload File :
Current File : //proc/self/root/opt/alt/python313/lib64/python3.13/__pycache__/difflib.cpython-313.opt-2.pyc

�

���glE��|�/SQrSSKJr SSKJr SSKJr \"SS5r	Sr
"SS	5rS#S
jrSr
"SS
5rSSKr\R "S5R"4SjrS$SjrSrS%SjrSrS%SjrSrS&SjrS\4SjrSS\4SjrSrSrSrSr"SS\ 5r!CS r"S!r#\$S":Xa\#"5 gg)')�get_close_matches�ndiff�restore�SequenceMatcher�Differ�IS_CHARACTER_JUNK�IS_LINE_JUNK�context_diff�unified_diff�
diff_bytes�HtmlDiff�Match�)�nlargest)�
namedtuple)�GenericAliasr
za b sizec�"�U(aSU-U-$g)Ng@��?�)�matches�lengths  �./opt/alt/python313/lib64/python3.13/difflib.py�_calculate_ratior's��
��W�}�v�%�%��c�x�\rSrSrSSjrSrSrSrSrSSjr	S	r
S
rSSjrSr
S
rSr\"\5rSrg)r�,Nc�Z�XlS=UlUlX@lUR	X#5 g�N)�isjunk�a�b�autojunk�set_seqs)�selfrrr r!s     r�__init__�SequenceMatcher.__init__xs)��v�������� �
��
�
�a�rc�H�URU5 URU5 gr)�set_seq1�set_seq2)r#rr s   rr"�SequenceMatcher.set_seqs�s��	
�
�
�a���
�
�a�rc�J�XRLagXlS=UlUlgr)r�matching_blocks�opcodes)r#rs  rr'�SequenceMatcher.set_seq1�s$��*
���;����.2�2���t�|rc�x�XRLagXlS=UlUlSUlUR	5 gr)r r+r,�
fullbcount�_SequenceMatcher__chain_b)r#r s  rr(�SequenceMatcher.set_seq2�s5��*
���;����.2�2���t�|�������rc�n�URn0=Uln[U5H(up4URU/5nUR	U5 M* [5=UlnURnU(aBUR5H#nU"U5(dMURU5 M% UHnX$	M [5=Ul
n[U5n	UR(aVU	S:�aOU	S-S-n
UR5H'upK[U5U
:�dMURU5 M) UHnX$	M ggg)N���d�)r �b2j�	enumerate�
setdefault�append�set�bjunkr�keys�add�bpopular�lenr!�items)r#r r6�i�elt�indices�junkr�popular�n�ntest�idxss            r�	__chain_b�SequenceMatcher.__chain_b
s��
�F�F������3���l�F�A��n�n�S�"�-�G��N�N�1��#�
 �E�!��
�T�������x�x�z���#�;�;��H�H�S�M�"����H��#&�%�'��
����F���=�=�Q�#�X���H�q�L�E� �Y�Y�[�	���t�9�u�$��K�K��$�)����H��&�=rc��URURURURR4upVpxUc[U5nUc[U5nXSp�n	0n/n
[
X5HknURn0nURX^U
5H@nUU:aMUU:�a O1U"US-
S5S-=nUU'UU:�dM/UU-
S-UU-
S-Up�n	MB UnMm X�:�acX�:�a^U"XjS-
5(dLXYS-
XjS-
:Xa<U	S-
U
S-
US-p�n	X�:�a)X�:�a$U"XjS-
5(dXYS-
XjS-
:XaM<X�-U:acX�-U:a[U"XjU-5(dIXYU-XjU-:Xa9US-
nX�-U:a,X�-U:a$U"XjU-5(dXYU-XjU-:XaM9X�:�acX�:�a^U"XjS-
5(aLXYS-
XjS-
:Xa<U	S-
U
S-
US-p�n	X�:�a)X�:�a$U"XjS-
5(aXYS-
XjS-
:XaM<X�-U:acX�-U:a[U"XjU-5(aIXYU-XjU-:Xa9US-nX�-U:a,X�-U:a$U"XjU-5(aXYU-XjU-:XaM9[X�U5$�Nrr5)	rr r6r;�__contains__r?�range�getr
)r#�alo�ahi�blo�bhirr r6�isbjunk�besti�bestj�bestsize�j2len�nothingrA�j2lenget�newj2len�j�ks                   r�find_longest_match�"SequenceMatcher.find_longest_match1s���t"�V�V�T�V�V�T�X�X�t�z�z�7N�7N�N���c��;��a�&�C��;��a�&�C�!$�1�h�������s��A��y�y�H��H��W�W�Q�T�7�+���s�7����8��"*�1�Q�3��"2�Q�"6�6��H�Q�K��x�<�-.�q�S��U�A�a�C��E�1�(�E�(�,��E�!�(�k�e�k��!�!�G�*�%�%��a��j�A�A�g�J�&�%*�1�W�e�A�g�x��z�(�E��k�e�k��!�!�G�*�%�%��a��j�A�A�g�J�&��n�s�"�u�~��';��!�(�N�+�,�,��h���1�8�^�#4�4���M�H��n�s�"�u�~��';��!�(�N�+�,�,��h���1�8�^�#4�4��k�e�k��a�a��j�!�!��a��j�A�A�g�J�&�%*�1�W�e�A�g�x��z�(�E��k�e�k��a�a��j�!�!��a��j�A�A�g�J�&��n�s�"�u�~��';��a�h��'�(�(��h���1�8�^�#4�4��!�|�H��n�s�"�u�~��';��a�h��'�(�(��h���1�8�^�#4�4��U�8�,�,rc�<�URbUR$[UR5[UR5p!SUSU4/n/nU(a�UR	5upVpxURXVXx5=up�p�U(aWUR
U5 XY:aXz:aUR
XYXz45 X�-U:a!X�-U:aUR
X�-XjU-U45 U(aM�UR5 S=n
=p�/nUH=unnnX�-U:XaX�-U:XaUU-
nMU(aUR
X�U45 UUUp�n
M? U(aUR
X�U45 UR
XS45 [[[RU55UlUR$�Nr)r+r?rr �popr^r9�sort�list�mapr
�_make)r#�la�lb�queuer+rPrQrRrSrAr\r]�x�i1�j1�k1�non_adjacent�i2�j2�k2s                    r�get_matching_blocks�#SequenceMatcher.get_matching_blocks�s���&���+��'�'�'��T�V�V��c�$�&�&�k�B��R��B�� �����!&�����C�c��1�1�#�C�E�E�G�A�!���&�&�q�)��7�s�w��L�L�#�#�!1�2��3��9���s���L�L�!�#�s�a�C��!5�6��e�	����
����R���)�J�B��B��w�"�}���B���b���
� �'�'����5���R����*��������-����b�a�[�*�#�C����\�$B�C����#�#�#rc�>�URbUR$S=p/=UlnUR5HcupEnSnX:aX%:aSnOX:aSnOX%:aSnU(aURXqXBU45 XF-XV-p!U(dMOURSXAXR45 Me U$)Nr��replace�delete�insert�equal)r,rrr9)r#rAr\�answer�ai�bj�size�tags        r�get_opcodes�SequenceMatcher.get_opcodes�s���:�<�<�#��<�<���	�� "�"���v� �4�4�6�L�B�D��C��v�!�&�������������
�
���r�2�4��7�B�G�q��t��
�
����6�8�'7�(�
rc#�p# �UR5nU(dS/nUSSS:Xa+USup4pVnU[XEU-
5U[XgU-
5U4US'USSS:Xa*USup4pVnX4[XTU-5U[XvU-54US'X-n/n	UHwup4pVnUS:XaVXT-
U:�aNU	RX4[XTU-5U[XvU-545 U	v� /n	[XEU-
5[XgU-
5pdU	RX4XVU45 My U	(a![	U	5S:XaU	SSS:XdU	v� ggg7f)N)ryrr5rr5rry���r5)r�max�minr9r?)
r#rF�codesr~rkrorlrp�nn�groups
          r�get_grouped_opcodes�#SequenceMatcher.get_grouped_opcodes#sX���2� � �"���*�+�E���8�A�;�'�!�"'��(��C�R�R��C��q�D�M�2�s�2�!�t�}�b�@�E�!�H���9�Q�<�7�"�"'��)��C�R�R���R�A����C��q�D�M�A�E�"�I�
�U����#(��C�R�R��g�~�"�%�"�*����c�s�2�!�t�}�b�#�b�Q�$�-�H�I������R�A����B�1��
�B��L�L�#�2�2�.�/�$)��#�e�*�a�-�E�!�H�Q�K�7�,B��K�-C�5�s�D4D6c��[SUR555n[U[UR5[UR
5-5$)Nc3�*# �UH	oSv� M g7f)r�Nr)�.0�triples  r�	<genexpr>�(SequenceMatcher.ratio.<locals>.<genexpr>ks���J�/I�V�R�j�/I�s�)�sumrrrr?rr )r#rs  r�ratio�SequenceMatcher.ratioUs?��,�J�t�/G�/G�/I�J�J�����T�V�V��s�4�6�6�{�)B�C�Crc��URc30=UlnURHnURUS5S-X'M URn0nURSpTURH;nU"U5(aX2nOURUS5nUS-
X2'US:�dM6US-nM= [U[
UR5[
UR5-5$rL)r/r rOrMrrr?)r#r/rB�avail�availhasr�numbs       r�quick_ratio�SequenceMatcher.quick_rations����?�?�"�+-�-�D�O�j��v�v��",�.�.��a�"8�1�"<�
����_�_�
���!�.�.��'��6�6�C���}�}��z��!�~�~�c�1�-�����E�J��a�x�!�A�+��� ���T�V�V��s�4�6�6�{�)B�C�Crc��[UR5[UR5p![[	X5X-5$r)r?rr rr�)r#rgrhs   r�real_quick_ratio� SequenceMatcher.real_quick_ratio�s0���T�V�V��c�$�&�&�k�B� ��B��R�W�5�5r)
rr!r r6r;r>r/rr+r,)NruruT)rNrN)�)�__name__�
__module__�__qualname__�__firstlineno__r$r"r'r(r0r^rrrr�r�r�r��classmethodr�__class_getitem__�__static_attributes__rrrrr,sW��X>�@
�3�4�X%�Nr-�hE$�N5�n0�dD�2D�:
6�$�L�1�rrc���US:�d[SU<35eSUs=::aS::dO [SU<35e/n[5nURU5 UHwnURU5 UR	5U:�dM*UR5U:�dM@UR
5U:�dMVURUR
5U45 My [X$5nUVVs/sHupvUPM	 snn$s snnf)Nrzn must be > 0: grzcutoff must be in [0.0, 1.0]: )	�
ValueErrorrr(r'r�r�r�r9�	_nlargest)�word�
possibilitiesrF�cutoff�result�srj�scores        rrr�s���:
��6���3�4�4��&��C���v�G�H�H�
�F���A��J�J�t��
��	�
�
�1�
�����6�)��=�=�?�f�$��7�7�9����M�M�1�7�7�9�a�.�)���q�
!�F�$�%�f�(�%�A�f�%�%��%s�C0c�D�SRS[X555$)Nruc3�d# �UH&upUS:XaUR5(aUOUv� M( g7f)� N)�isspace)r��c�tag_cs   rr��$_keep_original_ws.<locals>.<genexpr>�s.����%�H�A��c�\�a�i�i�k�k��u�4�%�s�.0)�join�zip)r��tag_ss  r�_keep_original_wsr��s$��
�7�7���A�
���rc�B�\rSrSrSSjrSrSrSrSrSr	S	r
S
rg)ri�Nc��XlX lgr��linejunk�charjunk)r#r�r�s   rr$�Differ.__init__*s��(!�
� �
rc	#�t# �[URX5nUR5H�upEpgnUS:XaURXXbXx5n	O]US:XaUR	SXU5n	OCUS:XaUR	SX'U5n	O)US:XaUR	SXU5n	O[SU<35eU	Shv�N M� gN	7f)	Nrvrw�-rx�+ryr��unknown tag )rr�r�_fancy_replace�_dumpr�)
r#rr �cruncherr~rPrQrRrS�gs
          r�compare�Differ.compareAs����4#�4�=�=�!�7��'/�';�';�'=�#�C�c���i���'�'����A������J�J�s�A�C�0������J�J�s�A�C�0������J�J�s�A�C�0�� �S�!:�;�;��L�L�(>�
�s�B*B8�,B6�-
B8c#�J# �[X45HnU<SX%<3v� M g7f)Nr�)rN)r#r~rj�lo�hirAs      rr��Differ._dumpjs ����r��A� �!�$�'�'��s�!#c#��# �Xe-
X2-
:a'URSXEU5nURSXU5nO&URSXU5nURSXEU5nXx4H
n	U	Shv�N M gN	7f)Nr�r�)r�)
r#rrPrQr rRrS�first�secondr�s
          r�_plain_replace�Differ._plain_replaceosq����9�s�y� ��Z�Z��Q�S�1�E��Z�Z��Q�S�1�F��Z�Z��Q�S�1�E��Z�Z��Q�S�1�F���A��L�L���s�A#A1�%A/�&
A1c#�"# �Supx[UR5n	Sup�[XV5H�nXLn
U	RU
5 [X#5HynXnX�:XaU
cX�p�MU	R	U5 U	R5U:�dM:U	R
5U:�dMPU	R5U:�dMfU	R5X�nnnM{ M� Xx:a%U
cURXX4XV5Shv�N gX�SnnnOSn
URXWXEW5Shv�N UUUUnnU
c�S=nnU	RUU5 U	R5HpunnnnnUU-
UU-
nnUS:XaUSU--
nUSU--
nM+US:Xa
USU--
nM;US	:Xa
US
U--
nMKUS:XaUSU--
nUSU--
nMc[S
U<35e URUUUU5Shv�N OSU-v� URUUS-X4US-U5Shv�N gGNN�N5N7f)N)g�G�z��?g�?�NNrrurv�^rwr�rxr�ryr�r��  r5)rr�rNr(r'r�r�r�r��
_fancy_helperr"rr��_qformat)r#rrPrQr rRrS�
best_ratior�r��eqi�eqjr\r|rAr{�best_i�best_j�aelt�belt�atags�btagsr~�ai1�ai2�bj1�bj2rgrhs                             rr��Differ._fancy_replace}sb���*(��
�"�4�=�=�1�����
�s��A���B����b�!��3�_���T���8��{�#$�S���!�!�"�%��,�,�.��;��*�*�,�z�9��n�n�&��3�19���1A�1���J��!%�!�(���{��.�.�q�s�s�H�H�H��),�3�J�F�F�J��C��%�%�a�f�a�f�E�E�E��v�Y��&�	�d���;���E�E����d�D�)�+3�+?�+?�+A�'��S�#�s�C��s��C�#�I�B���)�#��S�2�X�%�E��S�2�X�%�E��H�_��S�2�X�%�E��H�_��S�2�X�%�E��G�^��S�2�X�%�E��S�2�X�%�E�$��%>�?�?�,B��}�}�T�4���>�>�>���+���%�%�a����3�6�!�8�S�I�I�I�QI�	F�,
?�	J�s[�BH�H�H�49H�-H�.$H�H	�CH�H�*H�H
�H�	H�H�
Hc#�# �/nX#:a-XV:aURXX4XV5nO,URSXU5nOXV:aURSXEU5nUShv�N gN7f)Nr�r�)r�r�)r#rrPrQr rRrSr�s        rr��Differ._fancy_helper�sX������9��y��'�'����A���J�J�s�A�C�0��
�Y��
�
�3���,�A����s�AA�A�Ac#��# �[X5R5n[X$5R5nSU-v� U(aSUS3v� SU-v� U(a	SUS3v� gg7f)N�- z? �
�+ )r��rstrip)r#�aline�bliner�r�s     rr��Differ._qformat�sh��� "�%�/�6�6�8��!�%�/�6�6�8���U�l����u�g�R�.� ��U�l����u�g�R�.� ��s�A!A#)r�r�r�)r�r�r�r�r$r�r�r�r�r�r�r�rrrrr�s*��l!�.'�R(�
�\J�|
�!rrNz
\s*(?:#\s*)?$c��U"U5SL$rr)�line�pats  rrrs���t�9�D� � rc�
�X;$rr)�ch�wss  rrr%s�� �8�Orc�|�US-nX-
nUS:XaSRU5$U(dUS-nSRX#5$�Nr5z{}z{},{}��format��start�stop�	beginningrs    r�_format_range_unifiedr�<sE����	�I�
�\�F�
��{��{�{�9�%�%���Q��	��>�>�)�,�,rc	#�|# �[XX#XEU5 Sn[SX5RU5GHn	U(d^SnU(aSRU5OSn
U(aSRU5OSnSRX*U5v� SRX;U5v� U	SU	Sp�[	US	U
S
5n[	USU
S5nS
RX�U5v� U	HXunnnnnUS:XaUUUH
nSU-v� M M$US;aUUUH
nSU-v� M US;dMEUUUH
nSU-v� M MZ GM g7f)NFT�	{}ru�
--- {}{}{}z
+++ {}{}{}rr�r5�r��z@@ -{} +{} @@{}ryr�>rwrvr�>rxrvr�)�_check_typesrr�r�r�)rr �fromfile�tofile�fromfiledate�
tofiledaterF�lineterm�startedr��fromdate�todater��last�file1_range�file2_ranger~rkrorlrpr�s                      rr
r
GsS���R��x��8�L��G� ��a�*�>�>�q�A����G�6B�v�}�}�\�2��H�2<�V�]�]�:�.�"�F��%�%�h�(�C�C��%�%�f�h�?�?��A�h��b�	�t�+�E�!�H�d�1�g�>��+�E�!�H�d�1�g�>���&�&�{��J�J�#(��C��R��R��g�~��b��H�D���*�$�%���+�+��b��H�D���*�$�%��+�+��b��H�D���*�$�%�$)�B�s�DD<�D<c��US-nX-
nU(dUS-nUS::aSRU5$SRX"U-S-
5$r�r�r�s    r�_format_range_contextr�sO����	�I�
�\�F���Q��	�
��{��{�{�9�%�%��>�>�)��%7�!�%;�<�<rc	#�"# �[XX#XEU5 [SSSSS9nSn	[SX5RU5GHOn
U	(d^Sn	U(aSR	U5OS	nU(aSR	U5OS	nS
R	X+U5v� SR	X<U5v� U
SU
S
p�SU-v� [U
SUS5nSR	X�5v� [
SU
55(a-U
H'unnn nUS:wdMUUUH
nUUU-v� M M) [U
SUS5nSR	UU5v� [
SU
55(dGM"U
H'un nnnUS:wdMUUUH
nUUU-v� M M) GMR g7f)Nr�r�z! r�)rxrwrvryFTr�ruz
*** {}{}{}rrr�z***************r5rz
*** {} ****{}c3�6# �UHun   o!S;v� M g7f)>rwrvNr�r�r~�_s   rr��context_diff.<locals>.<genexpr>�����I�5���Q��1�a�+�+�5���rxr�rz
--- {} ----{}c3�6# �UHun   o!S;v� M g7f)>rxrvNrrs   rr�r�rrrw)r�dictrr�r�r�any)rr rrrrrFr�prefixr	r�r
rr�rr
r~rkrorr�rrlrps                        rr	r	�s����X��x��8�L�
��d�D��
E�F��G� ��a�*�>�>�q�A����G�6B�v�}�}�\�2��H�2<�V�]�]�:�.�"�F��%�%�h�(�C�C��%�%�f�h�?�?��A�h��b�	�t��(�*�*�+�E�!�H�d�1�g�>���$�$�[�;�;��I�5�I�I�I�%*�!��R��Q���(�?� !�"�R���$�S�k�D�0�0�!)�&+�
,�E�!�H�d�1�g�>���$�$�[�(�;�;��I�5�I�I�I�%*�!��Q��2�r��(�?� !�"�R���$�S�k�D�0�0�!)�&+�1B�s�C<F�AF�F�/ Fc��U(aE[US[5(d-[S[US5R<SUS<S35eU(aE[US[5(d-[S[US5R<SUS<S35eUH'n[U[5(aM[SU<35e g)Nrz"lines to compare must be str, not � (�)z all arguments must be str, not: )�
isinstance�str�	TypeError�typer�)rr �args�args    rrr�s���	��A�a�D�#�&�&���a��d��,�,�a��d�4�5�	5���A�a�D�#�&�&���a��d��,�,�a��d�4�5�	5����#�s�#�#��C�I�J�J�rc	
#�# �Sn	[[X�55n[[X�55nU	"U5nU	"U5nU	"U5nU	"U5nU	"U5nU"XX4XVXx5n
U
HnURSS5v� M g7f)Nc��URSS5$![a/nS[U5R<SU<S3n[	U5UeSnAff=f)N�ascii�surrogateescapez!all arguments must be bytes, not rr)�decode�AttributeErrorr"r�r!)r��err�msgs   rr)�diff_bytes.<locals>.decodesK��	*��8�8�G�%6�7�7���	*���G�$�$�a�)�C��C�.�c�)��	*�s��
A
�*A�A
r'r()rdre�encode)�dfuncrr rrrrrFrr)�linesr�s            rrr�s����*�	
�S��^��A��S��^��A��h��H�
�F�^�F��,�'�L��
�#�J��h��H��!��,�A�P�E����k�k�'�#4�5�5��s�A=A?c�6�[X#5RX5$r)rr�)rr r�r�s    rrrs��F�(�%�-�-�a�3�3rc#�N^^^^# �SSKnUR"S5m[XX45mSS/4U4SjjmUU4SjmU4SjnU"5nUcUShv�N gUS-
nSnSS/U-p�SnUSLa%[U5up�nX�-nX�U4X�'U	S-
n	USLaM%X�:�aSv� UnOU	nSn	U(aX�-nU	S-
n	X�v� US-nU(aMUS-
nU(a/[U5up�nU(aUS-
nOUS-nX�U4v� U(aM/M�N�![a gf=f![a gf=f7f)	Nrz
(\++|\-+|\^+)c�>�X2==S-
ss'UcX2URS5SS4$US:XaoURS5URS5pT/nU4SjnTRXu5 [U5H unup�USU	S-U-XIU
-S-XJS-nM" USSnO(URS5SSnU(dSnSU-U-S-nX2U4$)	Nr5rr�?c��URURS5SUR5/5 URS5$)Nr5r)r9r��span)�match_object�sub_infos  r�record_sub_info�3_mdiff.<locals>._make_line.<locals>.record_sub_info�s=������!3�!3�A�!6�q�!9�,�:K�:K�:M� N�O�#�)�)�!�,�,r��r�)rb�sub�reversed)r0�
format_key�side�	num_lines�text�markersr8r9�key�begin�end�	change_res           �r�
_make_line�_mdiff.<locals>._make_linefs���.	��1������O�E�I�I�a�L���$4�5�5����!�I�I�a�L�%�)�)�A�,�'��H�6>�
-�
�M�M�/�2�$,�H�#5���K�U��A�e�}�T�)�#�-�d��o�=�d�B�4��:�M��$6����8�D��9�9�Q�<���#�D�����*�$�t�+�d�2�D����%�%rc3�@># �/nSup[U5S:a,UR[TS55 [U5S:aM,SRUVs/sHo3SPM	 sn5nUR	S5(aUnGO�UR	S5(aT"USS5T"USS	5S4v� M�UR	S
5(aUS	-nT"USS5SS4v� M�UR	S5(aT"USS5SpeUS	-
SpGOBUR	S
5(aT"USS5T"USS	5S4v� GM.UR	S5(aT"USS5T"USS	5S4v� GM^UR	S5(aUS	-nT"USS5SS4v� GM�UR	S5(aUS	-
nST"USS	5S4v� GM�UR	S5(aST"USS	5peUS	-SpO`UR	S5(aUS	-
nST"USS	5S4v� GM
UR	S5(aT"USSSS5T"USS	5S4v� GM@US:aUS	-
nSv� US:aMUS:�aUS	-nSv� US:�aMUR	S5(agWWS4v� GM�s snf7f)N)rrTr�Xrurz-?+?r4r5z--++r�)z--?+z--+r�z-+?z-?+z+--r�)r�z+-r�F)N�rur�T)rLNT)r?r9�nextr��
startswith)	r0�num_blanks_pending�num_blanks_to_yieldr�r��	from_line�to_linerH�diff_lines_iterators	       ��r�_line_iterator�_mdiff.<locals>._line_iterator�s�������26�/����e�*�q�.����T�"5�s�;�<��e�*�q�.����U�3�U�T�a��U�3�4�A��|�|�C� � �'9�#����f�%�%� ��s�1�-�z�%��A�/F��L�L�����f�%�%�#�a�'�"� ��s�1�-�t�T�9�9�����3�4�4�%/�u�S��$;�T�'�9K�A�9M�a�$6����e�$�$� ��t�A�.�
�5��Q�0G��M�M�����e�$�$� ��s�1�-�z�%��Q�/G��M�M�����c�"�"�"�a�'�"� ��s�1�-�t�T�9�9�����e�$�$�#�a�'�"��J�u�S��3�T�9�9�����l�+�+�%)�:�e�C��+B�7�9K�A�9M�a�$6����c�"�"�"�a�'�"��J�u�S��3�T�9�9�����c�"�"� ��q��$�q�1�*�U�4��2J�5�P�P��&��)�#�q�(�#�)�)�&��)�&��)�#�q�(�#�)�)�&��)��|�|�C� � �����,�,�M��4�s%�AJ�J�J�#G<J�!J�8&Jc3�># �T"5n//p![U5S:Xd[U5S:Xa[[U5up4nUbURX545 UbURXE45 [U5S:XaMJ[U5S:XaM[UR	S5up6UR	S5upGX4U=(d U4v� M�![a gf=f7fra)r?rM�
StopIterationr9rb)	�
line_iterator�	fromlines�tolinesrQrR�
found_diff�fromDiff�to_diffrTs	        �r�_line_pair_iterator�#_mdiff.<locals>._line_pair_iterator�s�����'�(�
��R�'���y�>�1�$��G��a���59�-�5H�2�I�
��(��$�$�i�%;�<��&��N�N�G�#7�8��y�>�1�$��G��a��#,�-�-��"2��I�&�{�{�1�~��G��X�%8��9�9���
%����s3�*C�B?�9C�7C�7C�?
C�	C�C�Cr5F)NNN)�re�compilerrMrW)rYrZ�contextr�r�r`r^�line_pair_iterator�lines_to_write�index�contextLinesr[rQrRrArTrHrGrSs               @@@@r�_mdiffrg<s�����D��
�
�+�,�I� �	�(�D��78��e�6&�pV-�p:�B-�.����%�%�%�	�1������#$�d�V�W�%5�<��J���%��59�:L�5M�2�I�
��O��#,�z�"B�����
����%���&�&�!(��!&���� ��O����
��"�o�%��!�#��	!�.�%�Q�Y�N�
�$�59�:L�5M�2�I�
�!�)0����&�!�+��#�j�8�8�%�n�=�
	&��%�����:!�
��
�sf�A
D%�D�D%�-D�;D%�2D%�D%�4D�D%�
D�D%�D�D%�
D"�D%�!D"�"D%an
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>
    <meta http-equiv="Content-Type"
          content="text/html; charset=%(charset)s" />
    <title></title>
    <style type="text/css">%(styles)s
    </style>
</head>

<body>
    %(table)s%(legend)s
</body>

</html>aH
        table.diff {font-family:Courier; border:medium;}
        .diff_header {background-color:#e0e0e0}
        td.diff_header {text-align:right}
        .diff_next {background-color:#c0c0c0}
        .diff_add {background-color:#aaffaa}
        .diff_chg {background-color:#ffff77}
        .diff_sub {background-color:#ffaaaa}aZ
    <table class="diff" id="difflib_chg_%(prefix)s_top"
           cellspacing="0" cellpadding="0" rules="groups" >
        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
        %(header_row)s
        <tbody>
%(data_rows)s        </tbody>
    </table>a�
    <table class="diff" summary="Legends">
        <tr> <th colspan="2"> Legends </th> </tr>
        <tr> <td> <table border="" summary="Colors">
                      <tr><th> Colors </th> </tr>
                      <tr><td class="diff_add">&nbsp;Added&nbsp;</td></tr>
                      <tr><td class="diff_chg">Changed</td> </tr>
                      <tr><td class="diff_sub">Deleted</td> </tr>
                  </table></td>
             <td> <table border="" summary="Links">
                      <tr><th colspan="2"> Links </th> </tr>
                      <tr><td>(f)irst change</td> </tr>
                      <tr><td>(n)ext change</td> </tr>
                      <tr><td>(t)op</td> </tr>
                  </table></td> </tr>
    </table>c��\rSrSr\r\r\r\rSrSSS\	4Sjr
SSS.SjjrS	rS
r
SrSrS
rSrSrSSjrSrg)ri�r�Nc�4�XlX lX0lX@lgr)�_tabsize�_wrapcolumn�	_linejunk�	_charjunk)r#�tabsize�
wrapcolumnr�r�s     rr$�HtmlDiff.__init__�s�� �
�%��!��!�rzutf-8)�charsetc��UR[URURUR	XX4XVS9US9-RUS5R
U5$)N)rb�numlines)�styles�legend�tablerr�xmlcharrefreplace)�_file_templater�_styles�_legend�
make_tabler.r))r#rYrZ�fromdesc�todescrbrtrrs        r�	make_file�HtmlDiff.make_file�s`��&�#�#�d��<�<��<�<��/�/�)�h�*1�"�F��'
�
��6�'�.�/���w��
	@rc�^�U4SjnUVs/sH
oC"U5PM nnUVs/sH
oC"U5PM nnX4$s snfs snf)Nc��>�URSS5nURTR5nURSS5nURSS5RS5$)Nr�r;�	r�)rv�
expandtabsrkr�)r�r#s �r�expand_tabs�2HtmlDiff._tab_newline_replace.<locals>.expand_tabs�sS����<�<��D�)�D��?�?�4�=�=�1�D��<�<��D�)�D��<�<��S�)�0�0��6�6rr)r#rYrZr�r�s`    r�_tab_newline_replace�HtmlDiff._tab_newline_replace�sM���	7�4=�=�9�4�[��&�9�	�=�18�9���;�t�$���9�� � ��>��9s�9�>c���U(dURX#45 g[U5nURnXE::dXCRS5S--
U::aURX#45 gSnSnSnXu:aBXd:a=X6S:XaUS-
nX6nUS-
nOX6S:XaUS-
nSnO
US-
nUS-
nXu:aXd:aM=USUn	X6Sn
U(a
U	S-n	SU-U
-n
URX)45 UR	USU
5 g)Nr;r�rrur5r<�>)r9r?rl�count�_split_line)r#�	data_list�line_numrBr}r�rArF�mark�line1�line2s           rr��HtmlDiff._split_line�s)������h�_�-���4�y�������K�d�Z�Z��%5�a�%7�8�S�@����h�_�-��
��
�����g�!�(��w�$���Q����w���Q�����D���Q������Q����Q����g�!�(��R�a����R���
��D�L�E��4�K�%�'�E�	���(�)�*�	
����3�u�-rc#�T# �UH�up#nUcX#U4v� MX#supVupx//p�URX�U5 URX�U5 U	(d	U
(dMPU	(aU	RS5nOSnU
(aU
RS5nOSnX#U4v� U	(aMEU
(aMNM� g7f)Nr)rur�)r�rb)r#�diffs�fromdata�todata�flag�fromline�fromtext�toline�totext�fromlist�tolists           r�
_line_wrapper�HtmlDiff._line_wrappers����%*� �H�D��|��d�*�*��2:�/��X���!��V����X�x�8����V�6�2��f�f��'�|�|�A��H�'�H��#�Z�Z��]�F�%�F��d�*�*��(�f�f�%*�s�AB(�AB(�B(�#B(c�@�///pCnUH^upVnURUR"SU/UQ765 URUR"SU/UQ765 URU5 M` X#U4$![a% URS5 URS5 NGf=frL)r9�_format_liner!)r#r�r�r��flaglistr�r�r�s        r�_collect_lines�HtmlDiff._collect_lines.s���$&�b����$)� �H�D�
$����� 1� 1�!�D� C�(� C�D��
�
�d�/�/��$�?��?�@�

�O�O�D�!�%*��x�'�'���
$�����%��
�
�d�#�
$�s�AA.�.,B�Bc�"�SU-nSURU<U<S3nURSS5RSS5RS	S
5nURSS5R5nS
U<SU<SU<S3$![a SnNof=f)Nz%dz id="�"ru�&z&amp;r�z&gt;�<z&lt;r��&nbsp;z<td class="diff_header"z</td><td nowrap="nowrap">z</td>)�_prefixr!rvr�)r#r@r��linenumrB�ids      rr��HtmlDiff._format_lineCs���	��W�n�G�!%���d�!3�G�<�B�
�\�\�#�g�
&�
.�
.�s�6�
:�
B�
B�3�v�
N���|�|�C��)�0�0�2���W�T�#�	#���	��B�	�s�A?�?B�
Bc��S[R-nS[R-n[=RS-
slX/Ulg)Nzfrom%d_zto%d_r5)r�_default_prefixr�)r#�
fromprefix�toprefixs   r�_make_prefix�HtmlDiff._make_prefixZs?��
��!9�!9�9�
��X�5�5�5��� � �A�%� �"�,��rc��URSnS/[U5-nS/[U5-nSup�Sn[U5HAup�U
(a3U
(d*Sn
Un[SX�-
/5nSXi4-X|'U	S-
n	SXi4-X�'M=M?Sn
MC U(dS/nS/nS/nSnU(aS	/nUnOS
/=pUS(dSU-US'SU-X�'XX8U4$)
Nr5ru)rFrTz id="difflib_chg_%s_%d"z"<a href="#difflib_chg_%s_%d">n</a>Fz2<td></td><td>&nbsp;No Differences Found&nbsp;</td>z(<td></td><td>&nbsp;Empty File&nbsp;</td>z!<a href="#difflib_chg_%s_0">f</a>z#<a href="#difflib_chg_%s_top">t</a>)r�r?r7r�)r#r�r�r�rbrtr��next_id�	next_href�num_chg�	in_changerrAr�s              r�_convert_flags�HtmlDiff._convert_flagses���<�<��?���$�s�8�}�$���D��X��&�	�%�������)�F�A�� � $�I��D��Q�q�z�N�+�A�!:�h�=O�!O�G�J��q�L�G�&J�!�N+�'+�I�O�!�"�	�!*�$��w�H��d�G���I��D��P�Q��!��%O�$P�P����{�>��I�I�a�L�?�8�L�	���x�'�9�9rc
�`�UR5 URX5upU(aUnOSn[XXpRURS9nUR
(aUR
U5nURU5up�nURX�X�U5up�p�n
/nSn[[U55HKnUUcUS:�aURS5 M"M$URX�UUUU	UUUU
U4-5 MM U(dU(aSS<SU-<S<SU-<S3nOS	nUR[S	RU5UURS
S9-nUR!SS
5R!SS5R!SS5R!SS5R!SS5$)Nr�zV            <tr><td class="diff_next"%s>%s</td>%s<td class="diff_next">%s</td>%s</tr>
rz)        </tbody>        
        <tbody>
z<thead><tr>z!<th class="diff_next"><br /></th>z+<th colspan="2" class="diff_header">%s</th>z
</tr></thead>rur5)�	data_rows�
header_rowrz+z<span class="diff_add">z-z<span class="diff_sub">z^z<span class="diff_chg">r<z</span>r�r�)r�r�rgrmrnrlr�r�r�rNr?r9�_table_templaterr�r�rv)r#rYrZr}r~rbrt�
context_linesr�r�r�r�r�r�r��fmtrAr�rws                   rr|�HtmlDiff.make_table�s���(	
����!�5�5�i�H��	��$�M� �M��y����#�~�~�/������&�&�u�-�E�$(�#6�#6�u�#=� ���6:�5H�5H��H�X�67�2���7�
��7���s�8�}�%�A���{�"��q�5��H�H�J�K�����#���I�a�L��!��+4�Q�<��q�	�!C�C�D�&��v��3�=��H�3�=��F�	H�J��J��$�$�t��g�g�a�j�!��<�<��?�($�$��
�}�}�U�#<�=��W�U�#<�=��W�U�#<�=��W�T�)�,��W�T�(�+�		,r)rnrmr�rkrl)ruruF�)r�r�r�r�ryrzr�r{r�rr$rr�r�r�r�r�r�r�r|r�rrrrr�sz�� $�N��G�%�O��G��O��4��+�"�"AC�*+�@�8?�@�6!�.5.�n+�8(�*#�.	-�-:�^IN��K,rrc#�# �SSS.[U5nSU4nUHnUSSU;dMUSSv� M g![a [SU-5Sef=f7f)Nr�r�)r5rz)unknown delta choice (must be 1 or 2): %rr�r)�int�KeyErrorr�)�delta�whichr~�prefixesr�s     rrr�sv���,.��4� ��U��,���c�{�H������8�x���q�r�(�N���	�.��D�"�#�$�)-�	.�.�s�A�5�A�A�A�Ac�4�SSKnSSKnURU5$ra)�doctest�difflib�testmod)r�r�s  r�_testr�s����?�?�7�#�#r�__main__)r�g333333�?)z 	)rurururur�r�)rrrrr��
)%�__all__�heapqrr��collectionsr�_namedtuple�typesrr
rrrr�rr`ra�matchrrr�r
rr	rrrrgryrzr�r{�objectrrr�r�rrr�<module>r�s��:>��(�1���G�Z�(���
k	2�k	2�\.&�b�l!�l!�~	
��:�:�&6�7�=�=�!� �.	-�=?�.2�B%�R	=�,.�?C�J1�XK�"25�?D�6�<�(9�#4�J(,�d�%�K�\��(0������"],�v�],�~
��@$��z��	�G�r

?>