§
    ŸjQ  ã                   ó‚   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ  G d	„ d
e¦  «        ZdS )é    N)ÚDecimal)ÚApps)ÚNotSupportedError)ÚBaseDatabaseSchemaEditor)Ú	Statement)Ústrip_quotes)ÚCompositePrimaryKeyÚUniqueConstraintc                   ó¬   ‡ — e Zd ZdZdZdZeZdZdZdZ	dZ
dZˆ fd„Zˆ fd„Zd	„ Zd
„ Z	 dd„Zdˆ fd„	Zˆ fd„Zˆ fd„Z	 dd„Zd„ Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚDatabaseSchemaEditorzDROP TABLE %(table)sNzEREFERENCES %(to_table)s (%(to_column)s) DEFERRABLE INITIALLY DEFERREDz,ALTER TABLE %(table)s DROP COLUMN %(column)sz7CREATE UNIQUE INDEX %(name)s ON %(table)s (%(columns)s)zDROP INDEX %(name)sc                 ó”   •— | j                              ¦   «         st          d¦  «        ‚t          ¦   «                              ¦   «         S )NzüSQLite schema editor cannot be used while foreign key constraint checks are enabled. Make sure to disable them before entering a transaction.atomic() context because SQLite does not support disabling them in the middle of a multi-statement transaction.)Ú
connectionÚdisable_constraint_checkingr   ÚsuperÚ	__enter__)ÚselfÚ	__class__s    €ún/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/db/backends/sqlite3/schema.pyr   zDatabaseSchemaEditor.__enter__   sJ   ø€ ð Œ×:Ò:Ñ<Ô<ð 	Ý#ð1ñô ð õ ‰wŒw× Ò Ñ"Ô"Ð"ó    c                 ó²   •— | j                              ¦   «          t          ¦   «                              |||¦  «         | j                              ¦   «          d S ©N)r   Úcheck_constraintsr   Ú__exit__Úenable_constraint_checking)r   Úexc_typeÚ	exc_valueÚ	tracebackr   s       €r   r   zDatabaseSchemaEditor.__exit__&   sM   ø€ ØŒ×)Ò)Ñ+Ô+Ð+Ý‰Œ×Ò˜ 9¨iÑ8Ô8Ð8ØŒ×2Ò2Ñ4Ô4Ð4Ð4Ð4r   c                 óL  — 	 dd l }|                     |¦  «        }n# t          $ r Y n|j        $ r Y nw xY wt	          |t
          ¦  «        rt          t          |¦  «        ¦  «        S t	          |t          t          t          f¦  «        rt          |¦  «        S t	          |t          ¦  «        rd| 
                    dd¦  «        z  S |€dS t	          |t          t          t          f¦  «        rd|                     ¦   «         z  S t          d|›dt!          |¦  «        ›�¦  «        ‚)	Nr   z'%s'ú'z''ÚNULLzX'%s'zCannot quote parameter value z	 of type )Úsqlite3ÚadaptÚImportErrorÚProgrammingErrorÚ
isinstanceÚboolÚstrÚintr   ÚfloatÚreplaceÚbytesÚ	bytearrayÚ
memoryviewÚhexÚ
ValueErrorÚtype)r   Úvaluer!   s      r   Úquote_valuez DatabaseSchemaEditor.quote_value+   s3  € ð	ØˆNˆNˆNà—M’M %Ñ(Ô(ˆEˆEøÝð 	ð 	ð 	ØˆDØÔ'ð 	ð 	ð 	ØˆDð	øøøõ �e�TÑ"Ô"ð 	Ý•s˜5‘z”z‘?”?Ð"Ý˜¥­µÐ4Ñ5Ô5ð 	Ý�u‘:”:ÐÝ˜�sÑ#Ô#ð 	Ø˜EŸMšM¨#¨tÑ4Ô4Ñ4Ð4Øˆ]Ø�6Ý˜¥¥yµ*Ð=Ñ>Ô>ð 	ð ˜UŸYšY™[œ[Ñ(Ð(å�*Ø@EÀÀÅtÈEÁ{Ä{À{ÐSñô ð s   ‚ œ
4¨	4³4c                 ó,   — |                       |¦  «        S r   )r2   )r   r1   s     r   Úprepare_defaultz$DatabaseSchemaEditor.prepare_defaultJ   s   € Ø×Ò Ñ&Ô&Ð&r   c                 óˆ  ‡ ‡‡‡‡‡— ˆfd„Šˆfd„‰j         j        D ¦   «         }‰j         j        }t          |t          ¦  «        r|                     ¦   «         ||j        <   ˆ fd„‰j         j        D ¦   «         }i Šd}|pg }t          |dd¦  «        st          d„ |D ¦   «         ¦  «        rdt          | 
                    ¦   «         ¦  «        D ]B\  Š}	|	j        r6t          ˆfd„|D ¦   «         ¦  «        sd|	_        |	}|	j        r|‰= ||	j        = ŒC|rc|||j        <   |                     ¦   «         sE|j        s>|j        s7|j        r0‰                      ‰                      |¦  «        ¦  «        ||j        <   |D �]}
|
\  }}|                     |j        d¦  «         |                     |j        d¦  «         |||j        <   |j        ‰|j        <   |j        rŒ_|j        r‡|j        s€|                     ¦   «         s)‰                      ‰                      |¦  «        ¦  «        }n‰                      |¦  «        \  }}d	‰                      |j        ¦  «        |d
œz  }|||j        <   Œí‰                      |j        ¦  «        ||j        <   �Œ‰r_|‰j        = |                     ‰j        d¦  «         ‰j        r5‰j        j        j         j        r‰                      ‰j        j        ¦  «        S t7          ¦   «         }ˆfd„‰j         j        D ¦   «         }‰j         j        }‰rˆfd„|D ¦   «         }t          ‰j         j        ¦  «        }t?          j         |¦  «        }‰j         j!        ‰j         j"        ||||dœ}tG          dd|¦  «        }||d<   ‰j$        |d<   tG          ‰j         j%        ‰j&        |¦  «         t?          j         |¦  «        }‰j         j!        dtO          ‰j         j"        ¦  «        z  ||||dœ}tG          dd|¦  «        }||d<   ‰j$        |d<   tG          d‰j         j%        z  ‰j&        |¦  «        }‰ra‰j(        |j         j        j(        k    rG|j         j        }tS          ||j(        ¦  «         |j         j*         +                    |¦  «         d|_        ‰  ,                    |¦  «         ‰  -                    d‰                      |j         j"        ¦  «        ›dd .                    ˆ fd„|D ¦   «         ¦  «        ›dd .                    | /                    ¦   «         ¦  «        ›d‰                      ‰j         j"        ¦  «        ›�¦  «         ‰                      ‰d¬¦  «         ‰  0                    ||j         j"        ‰j         j"        ¦  «         ‰ j1        D ]}‰  -                    |¦  «         Œg ‰ _1        |r	d|_        dS dS )a|  
        Shortcut to transform a model from old_model into new_model

        This follows the correct procedure to perform non-rename or column
        addition operations based on SQLite's documentation

        https://www.sqlite.org/lang_altertable.html#caution

        The essential steps are:
          1. Create a table with the updated definition called "new__app_model"
          2. Copy the data from the existing "app_model" table to the new table
          3. Drop the "app_model" table
          4. Rename the "new__app_model" table to "app_model"
          5. Restore any index of the previous "app_model" table.
        c                 ó.   •— | j         o| j        j        ‰u S r   )Úis_relationÚremote_fieldÚmodel)Úfr9   s    €r   Úis_self_referentialz?DatabaseSchemaEditor._remake_table.<locals>.is_self_referentialc   s   ø€ Ø”=ÐB Q¤^Ô%9¸UÐ%BÐBr   c                 ó^   •— i | ])}|j          ‰|¦  «        r|                     ¦   «         n|“Œ*S © )ÚnameÚclone)Ú.0r:   r;   s     €r   ú
<dictcomp>z6DatabaseSchemaEditor._remake_table.<locals>.<dictcomp>g   sJ   ø€ ð 
ð 
ð 
àð ŒFÐ!4Ð!4°QÑ!7Ô!7Ð>�A—G’G‘I”I�I¸Qð
ð 
ð 
r   c                 ób   •— i | ]+}|j         d u ¯|j        ‰                     |j        ¦  «        “Œ,S ©F)Ú	generatedÚcolumnÚ
quote_name)r@   r:   r   s     €r   rA   z6DatabaseSchemaEditor._remake_table.<locals>.<dictcomp>t   sB   ø€ ð 
ð 
ð 
àØŒ{˜eÐ#Ð#ð ŒH�d—o’o a¤hÑ/Ô/à#Ð#Ð#r   NÚprimary_keyFc              3   ó>   K  — | ]\  }}t          |d d¦  «        V — ŒdS )rG   FN)Úgetattr)r@   Ú_Ú	new_fields      r   ú	<genexpr>z5DatabaseSchemaEditor._remake_table.<locals>.<genexpr>   sC   è è € ð >
ð >
Ù9E¸¸I�G�I˜}¨eÑ4Ô4ð>
ð >
ð >
ð >
ð >
ð >
r   c              3   ó4   •K  — | ]\  }}‰|j         k    V — Œd S r   )r>   )r@   rJ   rK   r>   s      €r   rL   z5DatabaseSchemaEditor._remake_table.<locals>.<genexpr>ƒ   sD   øè è € ð 1ð 1ñ %˜˜9ð ˜IœNÒ*ð1ð 1ð 1ð 1ð 1ð 1r   zcoalesce(%(col)s, %(default)s))ÚcolÚdefaultc                 ó,   •— g | ]}ˆfd „|D ¦   «         ‘ŒS )c                 ó<   •— g | ]}‰                      ||¦  «        ‘ŒS r=   )Úget)r@   ÚnÚrename_mappings     €r   ú
<listcomp>zADatabaseSchemaEditor._remake_table.<locals>.<listcomp>.<listcomp>¿   s)   ø€ Ð6Ð6Ð6¨!ˆ^×Ò  1Ñ%Ô%Ð6Ð6Ð6r   r=   )r@   ÚuniquerT   s     €r   rU   z6DatabaseSchemaEditor._remake_table.<locals>.<listcomp>¾   s=   ø€ ð 
ð 
ð 
àð 7Ð6Ð6Ð6¨vÐ6Ñ6Ô6ð
ð 
ð 
r   c                 ó0   •— g | ]}‰j         |j        v¯|‘ŒS r=   )r>   Úfields)r@   ÚindexÚdelete_fields     €r   rU   z6DatabaseSchemaEditor._remake_table.<locals>.<listcomp>Å   s/   ø€ ð ð ð Ø¨lÔ.?ÀuÄ|Ð.SÐ.S�Ð.SÐ.SÐ.Sr   )Ú	app_labelÚdb_tableÚunique_togetherÚindexesÚconstraintsÚappsÚMetar=   Ú
__module__znew__%szNew%súINSERT INTO ú (ú, c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r   )rF   )r@   Úxr   s     €r   rL   z5DatabaseSchemaEditor._remake_table.<locals>.<genexpr>  s/   øè è € Ð>Ð>°˜$Ÿ/š/¨!Ñ,Ô,Ð>Ð>Ð>Ð>Ð>Ð>r   ú	) SELECT ú FROM )Úhandle_autom2mT)2Ú_metaÚlocal_concrete_fieldsÚpkr%   r	   r?   r>   rI   ÚanyÚlistÚitemsrG   Úauto_createdrE   Úhas_db_defaultÚmany_to_manyrD   Úconcreter4   Úeffective_defaultÚpopÚnullÚdb_default_sqlrF   r8   ÚthroughÚdelete_modelr   r]   r^   r_   ÚcopyÚdeepcopyr[   r\   r0   rb   Úobject_nameÚ	__bases__r   ÚattnameÚdelattrÚlocal_fieldsÚremoveÚcreate_modelÚexecuteÚjoinÚvaluesÚalter_db_tableÚdeferred_sql)r   r9   Úcreate_fieldrZ   Úalter_fieldsÚbodyrm   ÚmappingÚrestore_pk_fieldÚfieldÚalter_fieldÚ	old_fieldrK   rO   rJ   Úcase_sqlr`   r]   r^   r_   Ú	body_copyÚmeta_contentsÚmetaÚ	new_modelÚauto_pkÚsqlr;   r>   rT   s   `` `                      @@@r   Ú_remake_tablez"DatabaseSchemaEditor._remake_tableM   sð  øøøøøø€ ð,	Cð 	Cð 	Cð 	Cð 	Cð
ð 
ð 
ð 
à”[Ô6ð
ñ 
ô 
ˆð Œ[Œ^ˆÝ�bÕ-Ñ.Ô.ð 	'ØŸHšH™JœJˆD�”‰Mð
ð 
ð 
ð 
à”[Ô6ð
ñ 
ô 
ˆð ˆð  ÐØ#Ð) rˆÝ�< °Ñ6Ô6ð 	2½#ð >
ð >
ØIUð>
ñ >
ô >
ñ ;
ô ;
ð 	2õ  $ D§J¢J¡L¤LÑ1Ô1ð 2ð 2‘��eØÔ$ð 
2­Sð 1ð 1ð 1ð 1ð )5ð	1ñ 1ô 1ñ .ô .ð 
2ð ).�EÔ%Ø',Ð$ØÔ)ð 2Ø  ˜JØ# E¤LÐ1øàð 
	Ø&2ˆD�Ô"Ñ#ð !×/Ò/Ñ1Ô1ðà%Ô2ðà6BÔ6Lðð !Ô)ðð
 04×/CÒ/CØ×*Ò*¨<Ñ8Ô8ñ0ô 0�˜Ô+Ñ,ð (ð 	Nñ 	NˆKØ#.Ñ ˆI�yØ�HŠH�Y”^ TÑ*Ô*Ð*Ø�KŠK˜	Ô(¨$Ñ/Ô/Ð/Ø#,ˆD�”Ñ Ø-6¬^ˆN˜9œ>Ñ*ØÔ"ð ØØŒ~ð N i¤nð NØ ×/Ò/Ñ1Ô1ð @Ø"×2Ò2°4×3IÒ3IÈ)Ñ3TÔ3TÑUÔU�G�Gà!%×!4Ò!4°YÑ!?Ô!?‘J�G˜QØ;ØŸ?š?¨9Ô+;Ñ<Ô<Ø&ð?ð ?ñ �ð -5�˜	Ô(Ñ)Ð)à,0¯OªO¸IÔ<LÑ,MÔ,M�˜	Ô(Ñ)Ñ)àð 	LØ�\Ô&Ð'Ø�KŠK˜Ô+¨TÑ2Ô2Ð2ð Ô)ðLà Ô-Ô5Ô;ÔHðLð ×(Ò(¨Ô)BÔ)JÑKÔKÐKå‰vŒvˆð
ð 
ð 
ð 
àœ+Ô5ð
ñ 
ô 
ˆð
 ”+Ô%ˆØð 	ðð ð ð Ø#*ðñ ô ˆGõ ˜5œ;Ô2Ñ3Ô3ˆõ
 ”M $Ñ'Ô'ˆ	ð œÔ.ØœÔ,Ø.ØØ&Øð
ð 
ˆõ �F˜B Ñ.Ô.ˆØ ˆ	�&ÑØ"'Ô"2ˆ	�,ÑÝˆUŒ[Ô$ e¤o°yÑAÔAÐAõ ”M $Ñ'Ô'ˆ	àœÔ.Ø!¥L°´Ô1EÑ$FÔ$FÑFØ.ØØ&Øð
ð 
ˆõ �F˜B Ñ.Ô.ˆØ ˆ	�&ÑØ"'Ô"2ˆ	�,ÑÝ˜ 5¤;Ô#:Ñ:¸E¼OÈYÑWÔWˆ	ð ð 	 ˜LÔ0°I´OÔ4FÔ4NÒNÐNØ”oÔ(ˆGÝ�I˜wœÑ/Ô/Ð/ØŒOÔ(×/Ò/°Ñ8Ô8Ð8ØˆIŒLð 	×Ò˜)Ñ$Ô$Ð$ð 	�Šˆð —’ 	¤Ô 8Ñ9Ô9Ð9Ð9Ø—	’	Ð>Ð>Ð>Ð>°gÐ>Ñ>Ô>Ñ>Ô>Ð>Ð>Ø—	’	˜'Ÿ.š.Ñ*Ô*Ñ+Ô+Ð+Ð+Ø—’ ¤Ô 4Ñ5Ô5Ð5ðñ	
ô 	
ð 	
ð 	×Ò˜%°ÐÑ6Ô6Ð6ð 	×ÒØØŒOÔ$ØŒKÔ ñ	
ô 	
ð 	
ð Ô$ð 	ð 	ˆCØ�LŠL˜ÑÔÐÐØˆÔàð 	0Ø+/ÐÔ(Ð(Ð(ð	0ð 	0r   Tc                 ó”  •— |r#t          ¦   «                              |¦  «         d S |                      | j        d|                      |j        j        ¦  «        iz  ¦  «         t          | j        ¦  «        D ]P}t          |t          ¦  «        r9|                     |j        j        ¦  «        r| j                             |¦  «         ŒQd S )NÚtable)r   rz   r„   Úsql_delete_tablerF   rk   r\   ro   rˆ   r%   r   Úreferences_tabler‚   )r   r9   rj   r—   r   s       €r   rz   z!DatabaseSchemaEditor.delete_model  sØ   ø€ Øð 	2Ý‰GŒG× Ò  Ñ'Ô'Ð'Ð'Ð'ð �LŠLØÔ%à˜TŸ_š_¨U¬[Ô-AÑBÔBðññô ð õ ˜DÔ-Ñ.Ô.ð 2ð 2�Ý˜c¥9Ñ-Ô-ð 2°#×2FÒ2FØ”KÔ(ñ3ô 3ð 2ð Ô%×,Ò,¨SÑ1Ô1Ð1øð	2ð 2r   c                 óÚ  •— ddl m} |j        r7|j        j        j        j        r!|                      |j        j        ¦  «         dS t          |t          ¦  «        rdS |j
        sL|j        sE|j        r>|                      |¦  «        €)|                     ¦   «         r.t          |j        |¦  «        s|                      ||¬¦  «         dS t#          ¦   «                              ||¦  «         dS )zCreate a field on a model.r   )ÚValueN)r‰   )Údjango.db.models.expressionsrž   rs   r8   ry   rk   rq   rƒ   r%   r	   rG   rV   rw   ru   rr   Ú
db_defaultr˜   r   Ú	add_field)r   r9   rŽ   rž   r   s       €r   r¡   zDatabaseSchemaEditor.add_field+  s  ø€ à6Ð6Ð6Ð6Ð6Ð6ð Ôð 	, %Ô"4Ô"<Ô"BÔ"Oð 	,Ø×Ò˜eÔ0Ô8Ñ9Ô9Ð9Ð9Ð9Ý˜Õ2Ñ3Ô3ð 	,ð
 ˆFð Ôð	,ð Œ|ð		,ð
 ”:ð	,ð ×%Ò% eÑ,Ô,Ð8ð ×$Ò$Ñ&Ô&ð 9õ 0:¸%Ô:JÈEÑ/RÔ/Rð 9ð
 ×Ò˜u°5ÐÑ9Ô9Ð9Ð9Ð9å‰GŒG×Ò˜e UÑ+Ô+Ð+Ð+Ð+r   c                 ó¬  •— |j         r9|j        j        j        j        r!|                      |j        j        ¦  «         dS dS | j        j        j        rG|j	        s@|j
        s9|j        s2|j        r|j        s$t          ¦   «                              ||¦  «         dS |                     | j        ¬¦  «        d         €dS |                      ||¬¦  «         dS )z…
        Remove a field from a model. Usually involves deleting a column,
        but for M2Ms may involve deleting a table.
        )r   r0   N)rZ   )rs   r8   ry   rk   rq   rz   r   ÚfeaturesÚcan_alter_table_drop_columnrG   rV   Údb_indexÚdb_constraintr   Úremove_fieldÚdb_parametersr˜   )r   r9   rŽ   r   s      €r   r§   z!DatabaseSchemaEditor.remove_fieldJ  s  ø€ ð Ôð 	:àÔ!Ô)Ô/Ô<ð >Ø×!Ò! %Ô"4Ô"<Ñ=Ô=Ð=Ð=Ð=ð>ð >ð ŒOÔ$Ô@ð	:ð Ô%ð		:ð
 ”Lð	:ð ”Nð	:ð Ô'ð	:ð -2Ô,?ð	:õ ‰GŒG× Ò  ¨Ñ.Ô.Ð.Ð.Ð.ð ×"Ò"¨d¬oÐ"Ñ>Ô>¸vÔFÐNØ�Ø×Ò˜u°5ÐÑ9Ô9Ð9Ð9Ð9r   Fc	                 óÞ  — |j         |j         k    r|                      ||¦  «        |                      ||¦  «        k    rQ|j        r|j        sC|j        r|j        s5|                      |                      |j        j        |||¦  «        ¦  «        S |                      |||fg¬¦  «         | 	                    d¦  «        }	| 	                    d¦  «        }
|j
        �r||k    s|	|
k    �rt          ¦   «         }|j        j        }|j        D ]r}|j        |k    rŒ|j        s+|j        |j        k    r|                     |j        ¦  «         Œ@|j        r+|j        j        j        r|                     |j        ¦  «         Œs|j        rK|j        D ]C}|j        |k    rŒ|j        j        j        j        r|                     |j        j        ¦  «         ŒD|D ]}|                      |¦  «         ŒdS dS dS )z3Perform a "physical" (non-ManyToMany) field update.©rŠ   Ú	collationN)rE   Ú
column_sqlr8   r¦   r„   Ú_rename_field_sqlrk   r\   r˜   rR   rV   Úsetr9   Úrelated_objectsÚrelated_modelrs   Ú
field_namer>   ÚaddrG   ry   rq   )r   r9   r�   rK   Úold_typeÚnew_typeÚold_db_paramsÚnew_db_paramsÚstrictÚold_collationÚnew_collationÚrelated_modelsÚoptsr8   rs   r°   s                   r   Ú_alter_fieldz!DatabaseSchemaEditor._alter_fieldf  sQ  € ð Ô 	Ô 0Ò0Ð0Ø—’  yÑ1Ô1°T·_²_ÀUÈIÑ5VÔ5VÒVÐVàÔ&ð Wð Ô+ð Wð Ô)ð	 Wð
 Ô+ð Wð —<’<Ø×&Ò&Ø”KÔ(¨)°YÀñô ñô ð ð 	×Ò˜5°¸IÐ0FÐ/GÐÑHÔHÐHà%×)Ò)¨+Ñ6Ô6ˆØ%×)Ò)¨+Ñ6Ô6ˆØÔñ 	2Ø˜Ò Ð  M°]Ò$BÑ$Bå ™UœUˆNØ”?Ô(ˆDØ $Ô 4ð =ð =�àÔ-°Ò6Ð6ØØ#Ô0ð =Ø#Ô.°)´.Ò@Ð@Ø&×*Ò*¨<Ô+EÑFÔFÐFøØÔ*ð =¨|Ô/CÔ/IÔ/Vð =Ø"×&Ò& |Ô';Ñ<Ô<Ð<øØÔ$ð NØ$(Ô$5ð Nð N�Là#Ô1°UÒ:Ð:Ø Ø#Ô0Ô8Ô>ÔKð NØ&×*Ò*¨<Ô+DÔ+LÑMÔMÐMøØ!/ð 2ð 2�Ø×"Ò" =Ñ1Ô1Ð1Ð1ð-	2ð 	2Ø$BÐ$Bð(2ð 2r   c                 ó–  — |j         j        j        j        |j         j        j        j        k    rù|                      |j         j        |j         j        j                             |                     ¦   «         ¦  «        |j         j        j                             |                     ¦   «         ¦  «        f|j         j        j                             |                     ¦   «         ¦  «        |j         j        j                             |                     ¦   «         ¦  «        fg¬¦  «         dS |                      |j         j        ¦  «         |  	                    d|  
                    |j         j        j        j        ¦  «        ›dd                     d|                     ¦   «         |                     ¦   «         g¦  «        ›dd                     d|                     ¦   «         |                     ¦   «         g¦  «        ›d|  
                    |j         j        j        j        ¦  «        ›�¦  «         |                      |j         j        ¦  «         dS )	z*Alter M2Ms to repoint their to= endpoints.rª   Nrc   rd   re   Úidrh   ri   )r8   ry   rk   r\   r˜   Ú	get_fieldÚm2m_reverse_field_nameÚm2m_field_namerƒ   r„   rF   r…   Úm2m_column_nameÚm2m_reverse_namerz   )r   r9   r�   rK   r·   s        r   Ú_alter_many_to_manyz(DatabaseSchemaEditor._alter_many_to_many   s@  € ð Ô"Ô*Ô0Ô9ØÔ%Ô-Ô3Ô<ò=ð =ð
 ×ÒØÔ&Ô.ð "Ô.Ô6Ô<×FÒFØ%×<Ò<Ñ>Ô>ñô ð "Ô.Ô6Ô<×FÒFØ%×<Ò<Ñ>Ô>ñô ð
ð "Ô.Ô6Ô<×FÒFØ%×4Ò4Ñ6Ô6ñô ð "Ô.Ô6Ô<×FÒFØ%×4Ò4Ñ6Ô6ñô ð
ðð ñ ô ð ð6 ˆFð 	×Ò˜)Ô0Ô8Ñ9Ô9Ð9à�Šˆð —’ 	Ô 6Ô >Ô DÔ MÑNÔNÐNÐNØ—	’	àØ!×1Ò1Ñ3Ô3Ø!×2Ò2Ñ4Ô4ðñô ð ð ð —	’	àØ!×1Ò1Ñ3Ô3Ø!×2Ò2Ñ4Ô4ðñô ð ð ð —’ 	Ô 6Ô >Ô DÔ MÑNÔNÐNð#ñ	
ô 	
ð 	
ð, 	×Ò˜)Ô0Ô8Ñ9Ô9Ð9Ð9Ð9r   c                 óÜ   •— t          |t          ¦  «        r@|j        s|j        s|j        s|j        r$t          ¦   «                              ||¦  «         d S |                      |¦  «         d S r   )	r%   r
   Ú	conditionÚcontains_expressionsÚincludeÚ
deferrabler   Úadd_constraintr˜   ©r   r9   Ú
constraintr   s      €r   rÊ   z#DatabaseSchemaEditor.add_constraintà  s‚   ø€ Ý�jÕ"2Ñ3Ô3ð 	&ØÔ ð	&àÔ.ð	&ð Ô!ð	&ð Ô$ð		&õ ‰GŒG×"Ò" 5¨*Ñ5Ô5Ð5Ð5Ð5à×Ò˜uÑ%Ô%Ð%Ð%Ð%r   c                 óÜ   •— t          |t          ¦  «        r@|j        s|j        s|j        s|j        r$t          ¦   «                              ||¦  «         d S |                      |¦  «         d S r   )	r%   r
   rÆ   rÇ   rÈ   rÉ   r   Úremove_constraintr˜   rË   s      €r   rÎ   z&DatabaseSchemaEditor.remove_constraintë  s‚   ø€ Ý�jÕ"2Ñ3Ô3ð 	&ØÔ ð	&àÔ.ð	&ð Ô!ð	&ð Ô$ð		&õ ‰GŒG×%Ò% e¨ZÑ8Ô8Ð8Ð8Ð8à×Ò˜uÑ%Ô%Ð%Ð%Ð%r   c                 ó   — d|z   S )NzCOLLATE r=   )r   r«   s     r   Ú_collate_sqlz!DatabaseSchemaEditor._collate_sqlö  s   € Ø˜IÑ%Ð%r   )NNN)TrC   )Ú__name__rb   Ú__qualname__r›   Úsql_create_fkÚsql_create_inline_fkÚsql_create_column_inline_fkÚsql_delete_columnÚsql_create_uniqueÚsql_delete_uniqueÚsql_alter_table_commentÚsql_alter_column_commentr   r   r2   r4   r˜   rz   r¡   r§   r¼   rÄ   rÊ   rÎ   rÐ   Ú__classcell__)r   s   @r   r   r      s„  ø€ € € € € Ø-ÐØ€MàOð ð #7ÐØFÐØQÐØ-ÐØ"ÐØ#Ðð#ð #ð #ð #ð #ð5ð 5ð 5ð 5ð 5ð
ð ð ð>'ð 'ð 'ð IMðJ0ð J0ð J0ð J0ðX2ð 2ð 2ð 2ð 2ð 2ð$,ð ,ð ,ð ,ð ,ð>:ð :ð :ð :ð :ðJ ð82ð 82ð 82ð 82ðt>:ð >:ð >:ð@	&ð 	&ð 	&ð 	&ð 	&ð	&ð 	&ð 	&ð 	&ð 	&ð&ð &ð &ð &ð &ð &ð &r   r   )r{   Údecimalr   Údjango.apps.registryr   Ú	django.dbr   Údjango.db.backends.base.schemar   Ú!django.db.backends.ddl_referencesr   Údjango.db.backends.utilsr   Údjango.db.modelsr	   r
   r   r=   r   r   ú<module>rã      sÑ   ðØ €€€Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø CÐ CÐ CÐ CÐ CÐ CØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bðk&ð k&ð k&ð k&ð k&Ð3ñ k&ô k&ð k&ð k&ð k&r   