ó
    ¼RjkR  ã                   óø   • S SK JrJr  S SKJrJr  S SKJr  S SKJ	r	J
r
  S SKJrJrJrJr  S SKJrJrJr   " S S\5      r " S	 S
\5      rS rS rS rS rS rS\l        S rS\l        S rS r " S S5      rg)é    )ÚCounterÚdefaultdict)ÚpartialÚreduce)Úchain)Ú
attrgetterÚor_)ÚIntegrityErrorÚconnectionsÚmodelsÚtransaction)Úquery_utilsÚsignalsÚsqlc                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )ÚProtectedErroré
   c                 ó0   >• X l         [        TU ]	  X5        g ©N)Úprotected_objectsÚsuperÚ__init__)ÚselfÚmsgr   Ú	__class__s      €ÚED:\diplom_project\venv\Lib\site-packages\django/db/models/deletion.pyr   ÚProtectedError.__init__   s   ø€ Ø!2ÔÜ‰Ñ˜Õ0ó    )r   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r   
   s   ø† ÷1ó 1r   r   c                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )ÚRestrictedErroré   c                 ó0   >• X l         [        TU ]	  X5        g r   )Úrestricted_objectsr   r   )r   r   r+   r   s      €r   r   ÚRestrictedError.__init__   s   ø€ Ø"4ÔÜ‰Ñ˜Õ1r   )r+   r   r&   s   @r   r(   r(      s   ø† ÷2ó 2r   r(   c                 ó
  • U R                  UUR                  R                  UR                  UR                  SS9  UR                  (       a7  [
        U   R                  R                  (       d  U R                  US U5        g g g )NF)ÚsourceÚsource_attrÚnullableÚfail_on_restricted)	ÚcollectÚremote_fieldÚmodelÚnameÚnullr   ÚfeaturesÚcan_defer_constraint_checksÚadd_field_update©Ú	collectorÚfieldÚsub_objsÚusings       r   ÚCASCADEr?      sn   € Ø×ÑØØ×!Ñ!×'Ñ'Ø—J‘JØ—‘Ø ð ñ ð ‡z‡zœ+ eÑ,×5Ñ5×Q×QØ×"Ñ" 5¨$°Õ9ð R€zr   c           	      ó²   • [        SUR                  R                  R                  < SUS   R                  R                  < SUR
                  < S3U5      e)Nz'Cannot delete some instances of model 'z@' because they are referenced through a protected foreign key: 'r   Ú.Ú')r   r3   r4   r    r   r5   r:   s       r   ÚPROTECTrC   "   sJ   € Ý
ð ×Ñ×$Ñ$×-Ô-Ø�Q‰K×!Ñ!×*Ô*Ø�JŒJð	
ð 	ó	ð 	r   c                 ó†   • U R                  X5        U R                  UR                  R                  UR                  5        g r   )Úadd_restricted_objectsÚadd_dependencyr3   r4   r:   s       r   ÚRESTRICTrG   /   s0   € Ø×$Ñ$ UÔ5Ø×Ñ˜U×/Ñ/×5Ñ5°u·{±{ÕCr   c                 óf   ^ • [        T 5      (       a  U 4S jnOU 4S jnU 4S jUl        SUl        U$ )Nc                 ó6   >• U R                  UT" 5       U5        g r   ©r9   ©r;   r<   r=   r>   Úvalues       €r   Úset_on_deleteÚSET.<locals>.set_on_delete7   s   ø€ Ø×&Ñ& u©e«g°xÕ@r   c                 ó,   >• U R                  UTU5        g r   rJ   rK   s       €r   rM   rN   <   s   ø€ Ø×&Ñ& u¨e°XÕ>r   c                  ó   >• ST 40 4$ )Nzdjango.db.models.SET© )rL   s   €r   Ú<lambda>ÚSET.<locals>.<lambda>?   s   ø€ Ð)?À%ÀÈ2Ñ(Nr   T)ÚcallableÚdeconstructÚlazy_sub_objs)rL   rM   s   ` r   ÚSETrW   4   s0   ø€ Ü�‡�ö	Aõ
	?ô !O€MÔØ"&€MÔØÐr   c                 ó*   • U R                  US U5        g r   rJ   r:   s       r   ÚSET_NULLrY   D   s   € Ø×Ñ˜u d¨HÕ5r   Tc                 óD   • U R                  XR                  5       U5        g r   )r9   Úget_defaultr:   s       r   ÚSET_DEFAULTr\   K   s   € Ø×Ñ˜u×&7Ñ&7Ó&9¸8ÕDr   c                 ó   • g r   rQ   r:   s       r   Ú
DO_NOTHINGr^   R   s   € Ør   c                 ó.   • S U R                  SS9 5       $ )Nc              3   óº   #   • U  HQ  nUR                   (       d  M  UR                  (       a  M)  UR                  (       d  UR                  (       d  MM  Uv •  MS     g 7fr   )Úauto_createdÚconcreteÚ
one_to_oneÚone_to_many)Ú.0Úfs     r   Ú	<genexpr>Ú4get_candidate_relations_to_delete.<locals>.<genexpr>Y   s>   é € ð â5ˆAØ�>�>ó 	
à"#§*¥*ó 	
à23·,·,À!Ç-Å-÷ 	
‰Ú5ùs   ‚A›A® AÁ	AT)Úinclude_hidden)Ú
get_fields)Úoptss    r   Ú!get_candidate_relations_to_deleterl   V   s   € ñà—‘°�Ñ5óð r   c                   ó�   • \ rS rSrSS jrSS jrSS jrS rS rS r	S	 r
S
 rSS jrS r       SS jrS rS rS rS rSrg)Ú	Collectoré`   Nc                 óæ   • Xl         X l        [        [        5      U l        [        [
        5      U l        [        [        [        [        5      5      U l        / U l	        [        [        5      U l
        g r   )r>   Úoriginr   ÚsetÚdataÚlistÚfield_updatesr   r+   Úfast_deletesÚdependencies)r   r>   rq   s      r   r   ÚCollector.__init__a   sR   € ØŒ
àŒä¤Ó$ˆŒ	ä(¬Ó.ˆÔä"-¬g´kÄ3Ó.GÓ"HˆÔð ˆÔô (¬Ó,ˆÕr   c                 óð   • U(       d  / $ / nUS   R                   nU R                  U   nU H  nX‡;  d  M
  UR                  U5        M     UR                  U5        Ub  U(       d  U R	                  X&US9  U$ )a  
Add 'objs' to the collection of objects to be deleted.  If the call is
the result of a cascade, 'source' should be the model that caused it,
and 'nullable' should be set to True if the relation can be null.

Return a list of all objects that were not already collected.
r   ©Úreverse_dependency)r   rs   ÚappendÚupdaterF   )	r   Úobjsr.   r0   r{   Únew_objsr4   Ú	instancesÚobjs	            r   ÚaddÚCollector.addv   s}   € ö ØˆIØˆØ�Q‘×!Ñ!ˆØ—I‘I˜eÑ$ˆ	ÛˆCØÕ#Ø—‘ Ö$ñ ð 	×Ñ˜Ô"ð Ñ¦hØ×Ñ ÐBTÐÑUØˆr   c                 ó  • U(       a  X!p!U R                   UR                  R                     R                  UR                  R                  5        U R                  R                  X R                  R                  5       5        g r   )rw   Ú_metaÚconcrete_modelr‚   rs   Ú
setdefaultÚdefault_factory)r   r4   Ú
dependencyr{   s       r   rF   ÚCollector.add_dependencyŽ   s]   € ÞØ *�:Ø×Ñ˜%Ÿ+™+×4Ñ4Ñ5×9Ñ9Ø×Ñ×+Ñ+ô	
ð 	�	‰	×Ñ˜Z¯©×)BÑ)BÓ)DÕEr   c                 óB   • U R                   X4   R                  U5        g)zq
Schedule a field update. 'objs' must be a homogeneous iterable
collection of model instances (e.g. a QuerySet).
N)ru   r|   )r   r<   rL   r~   s       r   r9   ÚCollector.add_field_update–   s   € ð
 	×Ñ˜5˜<Ñ(×/Ñ/°Õ5r   c                 ót   • U(       a1  US   R                   nU R                  U   U   R                  U5        g g )Nr   )r   r+   r}   )r   r<   r~   r4   s       r   rE   Ú Collector.add_restricted_objects�   s7   € ÞØ˜‘G×%Ñ%ˆEØ×#Ñ# EÑ*¨5Ñ1×8Ñ8¸Õ>ð r   c                 ó´   • XR                   ;   aC  U R                   U   R                  5        VVs0 s H
  u  p4X4U-
  _M     snnU R                   U'   g g s  snnf r   )r+   Úitems)r   r4   r~   r<   r�   s        r   Ú!clear_restricted_objects_from_setÚ+Collector.clear_restricted_objects_from_set¢   s_   € Ø×+Ñ+Ó+ð %)×$;Ñ$;¸EÑ$B×$HÑ$HÔ$Jô.â$J‘L�Eð ˜t‘|Ò#Ù$Jò.ˆD×#Ñ# EÒ*ð ,ùó.s   °Ac           
      ó  • XR                   ;   al  [        UR                  U R                   U   R                  5        VVs/ s H  nU  H  nUR                  PM     M     snnS95      nU R                  X5        g g s  snnf )N)Úpk__in)r+   rr   ÚfilterÚvaluesÚpkr‘   )r   r4   Úqsr~   r�   s        r   Ú&clear_restricted_objects_from_querysetÚ0Collector.clear_restricted_objects_from_queryset©   s…   € Ø×+Ñ+Ó+ÜØ—	‘	ð %)×$;Ñ$;¸EÑ$B×$IÑ$IÔ$Kôâ$K˜DÜ#'˜Cð Ÿœá#'ñ Ù$Kòð ð óˆDð ×2Ñ2°5Õ?ð ,ùós   Á  A=c                 óŒ   • [         R                  R                  U5      =(       d    [         R                  R                  U5      $ r   )r   Ú
pre_deleteÚhas_listenersÚpost_delete)r   r4   s     r   Ú_has_signal_listenersÚCollector._has_signal_listeners¶   s7   € Ü×!Ñ!×/Ñ/Øó
÷ 6ä× Ñ ×.Ñ.¨uÓ5ð	6r   c                 óZ  ^• T(       a  TR                   R                  [        La  g[        US5      (       a  UR                  R
                  nO0[        US5      (       a  [        US5      (       a  UR
                  nOgU R                  U5      (       a  gUR                  n[        U4S jUR                  R                  R                  R                  5        5       5      =(       aC    [        S [        U5       5       5      =(       a!    [        S UR                   5       5      (       + $ )a�  
Determine if the objects in the given queryset-like or single object
can be fast-deleted. This can be done if there are no cascades, no
parents and no signal listeners for the object class.

The 'from_field' tells where we are coming from - we need this to
determine if the objects are in fact to be deleted. Allow also
skipping parent -> child -> parent chain preventing fast delete of
the child.
Fr…   r4   Ú_raw_deletec              3   ó.   >#   • U  H
  nUT:H  v •  M     g 7fr   rQ   )re   ÚlinkÚ
from_fields     €r   rg   Ú,Collector.can_fast_delete.<locals>.<genexpr>Ô   s   øé € ð âF�Dð ˜
Ö"ÚFùs   ƒc              3   ón   #   • U  H+  nUR                   R                  R                  [        L v •  M-     g 7fr   )r<   r3   Ú	on_deleter^   )re   Úrelateds     r   rg   r¦   Ú   s,   é € ð âF�Gð —‘×*Ñ*×4Ñ4¼
ÕBÚFùó   ‚35c              3   ó:   #   • U  H  n[        US 5      v •  M     g7f)Úbulk_related_objectsN)Úhasattr)re   r<   s     r   rg   r¦   à   s"   é € ð â!4˜ô ˜EÐ#9×:Ð:Ú!4ùs   ‚)r3   r¨   r?   r­   r…   r4   rŸ   Úallr†   Úparentsr–   rl   ÚanyÚprivate_fields)r   r~   r¥   r4   rk   s     `  r   Úcan_fast_deleteÚCollector.can_fast_delete»   sû   ø€ ö ˜*×1Ñ1×;Ñ;Ä7ÒJØÜ�4˜×!Ñ!Ø—J‘J×$Ñ$‰EÜ�T˜7×#Ñ#¬°°m×(DÑ(DØ—J‘J‰EàØ×%Ñ% e×,Ñ,Øð �{‰{ˆäô à ×/Ñ/×5Ñ5×=Ñ=×DÑDÔFóó ÷ ô ñ ä@ÀÔFóó ÷ô ñ à!%×!4Ò!4óó ô ð	
r   c                 ó2  • U Vs/ s H  o3R                   PM     nn[        [        U R                     R                  R                  XA5      S5      n[        U5      U:”  a+  [        S[        U5      U5       Vs/ s H	  nXXe-    PM     sn$ U/$ s  snf s  snf )zD
Return the objs in suitably sized batches for the used connection.
é   r   )r5   Úmaxr   r>   ÚopsÚbulk_batch_sizeÚlenÚrange)r   r~   Úfieldsr<   Úfield_namesÚconn_batch_sizeÚis          r   Úget_del_batchesÚCollector.get_del_batchesç   s›   € ñ 06Ó6ªv e—z”z©vˆÐ6ÜÜ˜Ÿ
™
Ñ#×'Ñ'×7Ñ7¸ÓJÈAó
ˆô ˆt‹9�Ó&ô ˜q¤# d£)¨_Ô=óâ=�Að ˜Ñ,Ó-Ù=ñð ð
 �6ˆMùò 7ùò
s   …BÁ9Bc	           
      ól  • U R                  U5      (       a  U R                  R                  U5        gU R                  XX6S9n	U	(       d  gU	S   R                  n
U(       d—  U
R
                  R                  nUR
                  R                  R                  5        HY  nU(       d  M  U	 Vs/ s H  n[        XÜR                  5      PM     nnU R                  UU
UR                  R                  SSSS9  M[     U(       d  gU(       a#  [        U
R
                  R                  5       5      n[!        ["        5      n[!        ["        5      n[%        U
R
                  5       GHe  nU(       a  UR&                  W;   a  M  UR(                  nUR                  R*                  nU[,        :X  a  MK  UR.                  nU R                  UUS9(       a  UU   R                  U5        M‚  U R1                  U	U/5      nU HÊ  nU R3                  UU/U5      nUR4                  R6                  (       dg  U R9                  U5      (       dQ  [        [:        R<                  " S [%        UR
                  5       5       5      5      nUR>                  " [A        U5      6 n[        US	S5      (       d	  U(       d  M´   U" U UUU RB                  5        MÌ     GMh     U(       aY  [E        SU
RF                  < SSRK                  U5      < S3[        [:        R<                  " UR                  5       5      5      5      eURM                  5        HO  u  nnU R1                  U	U5      nU H1  nU R3                  UUU5      nU R                  R                  U5        M3     MQ     U
R
                  RN                   HC  n[Q        US5      (       d  M  URS                  X�RB                  5      nU R                  UU
SSS9  ME     U(       Gah  U RT                  RM                  5        H  u  nnU RW                  UU5        M     U R                   H  nU RY                  UR&                  U5        M!     U RZ                  R                  5       (       aã  [!        ["        5      nU RZ                  RM                  5        HU  u  nn U RM                  5        H;  u  nnU(       d  M  S
URF                  < SUR                  < S
3nUU==   U-  ss'   M=     MW     U(       aY  []        SU
RF                  < SSRK                  U5      < S3[        [:        R<                  " UR                  5       5      5      5      egggs  snf ! [D         aL  nS
UR&                  RF                  < SUR                  < S
3nUU==   URH                  -  ss'    SnAGMº  SnAff = f)a  
Add 'objs' to the collection of objects to be deleted as well as all
parent instances.  'objs' must be a homogeneous iterable collection of
model instances (e.g. a QuerySet).  If 'collect_related' is True,
related objects will be handled by their respective on_delete handler.

If the call is the result of a cascade, 'source' should be the model
that caused it and 'nullable' should be set to True, if the relation
can be null.

If 'reverse_dependency' is True, 'source' will be deleted before the
current model, rather than after. (Needed for cascading to parent
models, the one case in which the cascade follows the forwards
direction of an FK rather than the reverse direction.)

If 'keep_parents' is True, data of parent model's will be not deleted.

If 'fail_on_restricted' is False, error won't be raised even if it's
prohibited to delete such objects due to RESTRICT, that defers
restricted object checking in recursive calls where the top-level call
may need to collect more objects to determine whether restricted ones
can be deleted.
Nrz   r   FT)r.   r/   Úcollect_relatedr{   r1   )r¥   c              3   ó\   #   • U  H"  nS  UR                   R                   5       v •  M$     g7f)c              3   ó8   #   • U  H  oR                   v •  M     g 7fr   )Úattname)re   Úrfs     r   rg   Ú.Collector.collect.<locals>.<genexpr>.<genexpr>U  s   é € ÐSÒ2R¨BŸZžZÒ2Rùs   ‚N)r<   Úforeign_related_fields)re   Úrels     r   rg   Ú$Collector.collect.<locals>.<genexpr>T  s.   é € ð ,ò( ñ T°#·)±)×2RÒ2R×SÐSò(ùs   ‚*,rV   rB   rA   z&Cannot delete some instances of model z= because they are referenced through protected foreign keys: z, r¬   )r.   r0   r1   z> because they are referenced through restricted foreign keys: )/r²   rv   r|   r‚   r   r…   r†   r¯   r–   Úgetattrr5   r2   r3   Úrelated_namerr   Úget_parent_listr   rt   rl   r4   r<   r¨   r^   Úrelated_modelr¿   Úrelated_objectsÚqueryÚselect_relatedrŸ   r   Úfrom_iterableÚonlyÚtupler>   r   r    r   Újoinr�   r±   r­   r¬   rs   r‘   r™   r+   r(   )!r   r~   r.   r0   rÂ   r/   r{   Úkeep_parentsr1   r   r4   r†   Úptrr�   Úparent_objsr¯   Úmodel_fast_deletesr   r©   r<   r¨   rÎ   ÚbatchesÚbatchr=   Úreferenced_fieldsÚerrorÚkeyÚrelated_fieldsr€   r˜   r+   r»   s!                                    r   r2   ÚCollector.collect÷   s×  € ðD ×Ñ ×%Ñ%Ø×Ñ×$Ñ$ TÔ*ØØ—8‘8Ø˜(ð ð 
ˆö Øà˜‘×%Ñ%ˆæð #Ÿ[™[×7Ñ7ˆNØ%×+Ñ+×3Ñ3×:Ñ:Ö<�ß�3ÙEMÓ"NÂX¸c¤7¨3·±Ö#9ÁX�KÐ"NØ—L‘LØ#Ø$Ø$'×$4Ñ$4×$AÑ$AØ(-Ø+/Ø+0ð !ó ñ =ö ØæÜ˜%Ÿ+™+×5Ñ5Ó7Ó8ˆGÜ(¬Ó.ÐÜ'¬Ó-ÐÜ8¸¿¹×EˆGæ §¡°Ó 8ÙØ—M‘MˆEØ×*Ñ*×4Ñ4ˆIØœJÓ&ÙØ#×1Ñ1ˆMØ×#Ñ# M¸eÐ#ÖDØ" =Ñ1×8Ñ8¸Ô?ÙØ×*Ñ*¨8°e°WÓ=ˆGÛ �Ø×/Ñ/°À¸wÈÓN�ð —N‘N×1×1Ø×1Ñ1°-×@Ñ@ä(+Ü×+Ò+ñ ,ä'HØ -× 3Ñ 3ô(ó,ó ó)Ð%ð  (Ÿ}š}¬eÐ4EÓ.FÐG�HÜ˜9 o°u×=Ñ=ÇÀðJÙ! $¨¨x¸¿¹ÖDô/ !ñ FöP Ý ð —N”NØ—I‘IÐ/Ö0ð	ô ”E×'Ò'Ð(9×(@Ñ(@Ó(BÓCÓDóð ð .@×-EÑ-EÖ-GÑ)ˆM˜>Ø×*Ñ*¨8°^ÓDˆGÛ �Ø×/Ñ/°¸~ÈuÓU�Ø×!Ñ!×(Ñ(¨Ö2ó !ñ .Hð
 —[‘[×/Ô/ˆEÜ�uÐ4×5Ó5à ×5Ñ5°hÇ
Á
ÓK�Ø—‘Ø U°TÈeð ó ñ	 0÷ ð -1¯I©I¯O©OÖ,=Ñ(�˜yØ×6Ñ6°}ÀiÖPñ ->à×'Ô'�Ø×;Ñ;¸B¿H¹HÀbÖIñ (à×&Ñ&×-Ñ-×/Ñ/Ü%0´Ó%6Ð"Ø-1×-DÑ-D×-JÑ-JÖ-LÑ)�M 6Ø'-§|¡|¦~™˜˜tß™4Ø/<×/EÔ/EÀuÇzÄzÐ"R˜CØ.¨sÓ3°tÑ;Õ3ó (6ñ .Mö
 &Ý)ð
 "ŸNœNØ ŸI™IÐ&8Ö9ðô œE×/Ò/Ð0B×0IÑ0IÓ0KÓLÓMó	ð 	ð &ð 0ð ùò_ #Oøôj *ô JØ+0¯;©;×+?Ô+?ÀÇÄÐL˜Ø)¨#Ó.°%×2IÑ2IÑI×.Ò.ûðJús   Â+UÊ)UÕ
V3Õ'A V.Ö.V3c                 ó  • [         R                  R                  U Vs/ s H  oDR                   S3U4PM     sn[         R                  R                  S9nUR
                  R                  U R                  5      R                  U5      $ s  snf )zA
Get a QuerySet of the related model to objs via related fields.
Ú__in)Ú	connector)r   ÚQÚcreater5   ÚORÚ_base_managerr>   r•   )r   rÎ   rß   r~   Úrelated_fieldÚ	predicates         r   rÏ   ÚCollector.related_objects“  s{   € ô  —M‘M×(Ñ(ÙFTÓUÂn°]×#Ñ#Ð$ DÐ)¨4Ó0ÁnÑUÜ!—m‘m×&Ñ&ð )ð 
ˆ	ð ×*Ñ*×0Ñ0°·±Ó<×CÑCÀIÓNÐNùò Vs   žB
c              #   ón   #   • U R                   R                  5        H  u  pU H  nX4v •  M
     M     g 7fr   )rs   r�   )r   r4   r€   r�   s       r   Úinstances_with_modelÚCollector.instances_with_model�  s/   é € Ø $§	¡	§¡Ö 1ÑˆEÛ �Ø�jÔ ó !ò !2ùrª   c                 ó>  • / n[        5       n[        U R                  5      n[        U5      [        U5      :  aº  SnU H�  nXQ;   a  M
  U R                  R                  UR                  R                  5      nU(       a  UR                  U5      (       a  MX  UR                  U5        UR                  UR                  R                  5        SnM’     U(       d  g [        U5      [        U5      :  a  Mº  U Vs0 s H  oUU R                  U   _M     snU l        g s  snf )NFT)rr   rt   rs   r¹   rw   Úgetr…   r†   Ú
differencer|   r‚   )r   Úsorted_modelsÚconcrete_modelsr   Úfoundr4   rw   s          r   ÚsortÚCollector.sort¢  så   € ØˆÜ›%ˆÜ�d—i‘i“ˆÜ�-Ó ¤3 v£;Ó.ØˆEÛ�ØÓ)ÙØ#×0Ñ0×4Ñ4°U·[±[×5OÑ5OÓP�Þ$¨×)@Ñ)@À×)QÓ)QØ!×(Ñ(¨Ô/Ø#×'Ñ'¨¯©×(BÑ(BÔCØ ’Eñ  ö Øô �-Ó ¤3 v£;Õ.ñ ;HÓHº-°˜DŸI™I eÑ,Ò,¹-ÑHˆ�	ùÒHs   Ã8Dc           
      ó€
  • U R                   R                  5        H%  u  p[        U[        S5      S9U R                   U'   M'     U R	                  5         [        5       n[        U R                   5      S:X  aÜ  [        W5      S:X  aÍ  [        U5      S   nU R                  U5      (       a©  [        R                  " U R                  5         [        R                  " W5      R                  UR                  /U R                  5      nS S S 5        [!        UWR"                  R                  R$                  S 5        WUR"                  R&                  U04$ [        R(                  " U R                  SS9   U R+                  5        HV  u  pUR"                  R,                  (       a  M"  [.        R0                  R3                  UUU R                  U R4                  S9  MX     U R6                   HO  nUR9                  U R                  S9nU(       d  M%  X7R:                  R"                  R&                  ==   U-  ss'   MQ     U R<                  R                  5        GH  u  u  p‰n
/ n/ nU
 HS  n[?        U[@        RB                  5      (       a   URD                  c  URG                  U5        MB  URI                  U5        MU     U(       a.  [K        [L        U5      nURN                  " S	0 URP                  U	0D6  U(       d  M¤  US   RR                  n[        RT                  " U5      nURW                  [        U Vs1 s H  ofR                  iM     sn5      URP                  U	0U R                  5        GM     U R                   RY                  5        H  nUR[                  5         M     U R                   R                  5        HÒ  u  p[        R                  " U5      nU Vs/ s H  ofR                  PM     nnUR                  XðR                  5      nU(       a   X1R"                  R&                  ==   U-  ss'   UR"                  R,                  (       a  M•  U H7  n[.        R\                  R3                  UUU R                  U R4                  S9  M9     MÔ     S S S 5        U R                   R                  5        H8  u  pU H-  n[!        XAR"                  R                  R$                  S 5        M/     M:     [_        URY                  5       5      [a        U5      4$ ! , (       d  f       GN= fs  snf s  snf ! , (       d  f       N¤= f)
Nr—   )rÞ   rµ   r   F)r>   Ú	savepoint)ÚsenderÚinstancer>   rq   )r>   rQ   )1rs   r�   Úsortedr   rô   r   r¹   rt   r²   r   Úmark_for_rollback_on_errorr>   r   ÚDeleteQueryÚdelete_batchr—   Úsetattrr…   rÅ   ÚlabelÚatomicrì   ra   r   rœ   Úsendrq   rv   r¢   r4   ru   Ú
isinstancer   ÚQuerySetÚ_result_cacher|   Úextendr   r	   r}   r5   r   ÚUpdateQueryÚupdate_batchr–   Úreverserž   ÚsumÚdict)r   r4   r€   Údeleted_counterrù   Úcountr�   r˜   r<   rL   Úinstances_listÚupdatesr~   Úcombined_updatesrÐ   Úpk_lists                   r   ÚdeleteÚCollector.delete´  sô  € à $§	¡	§¡Ö 1ÑˆEÜ% i´ZÀÓ5EÑFˆD�I‰I�eÓñ !2ð 	�	‰	Œä!›)ˆô ˆt�y‰y‹>˜QÓ¤3 y£>°QÓ#6Ü˜I“ qÑ)ˆHØ×#Ñ# H×-Ñ-Ü ×;Ò;¸D¿J¹JÕGÜŸOšO¨EÓ2×?Ñ?Ø!Ÿ™˜ t§z¡zó�E÷ Hô ˜ %§+¡+§.¡.×"8Ñ"8¸$Ô?Ø˜uŸ{™{×0Ñ0°%Ð8Ð8Ð8ä×Ò d§j¡j¸EÓBà"×7Ñ7Ö9‘
�Ø—{‘{×/×/Ñ/Ü×&Ñ&×+Ñ+Ø$Ø!$Ø"Ÿj™jØ#Ÿ{™{ð	 ,ó ñ :ð ×'Ô'�ØŸ™¨T¯Z©Z˜Ð8�ß�5Ø#§H¡H§N¡N×$8Ñ$8Ó9¸UÑBÕ9ñ (ð 37×2DÑ2D×2JÑ2J×2LÑ.‘� Ø�Ø�Û!/�Iä" 9¬f¯o©o×>Ñ>Ø%×3Ñ3Ñ;àŸ™ yÖ1àŸ™ IÖ.ñ "0ö Ü'-¬c°7Ó';Ð$Ø$×+Ò+ÑB¨u¯z©z¸5Ð.AÒBß�4Ø  ™G×-Ñ-�EÜŸOšO¨EÓ2�EØ×&Ñ&Ü±Ó5²¨Ÿfœf±Ñ5Ó6¸¿¹ÀUÐ8KÈTÏZÉZ÷ñ# 3Mð, "ŸY™Y×-Ñ-Ö/�	Ø×!Ñ!Ö#ñ 0ð %)§I¡I§O¡OÖ$5Ñ �ÜŸš¨Ó.�Ù-6Ó7ªY cŸ6œ6©Y�Ð7Ø×*Ñ*¨7·J±JÓ?�ÞØ#§K¡K×$5Ñ$5Ó6¸%Ñ?Ó6à—{‘{×/×/Ñ/Û(˜Ü×+Ñ+×0Ñ0Ø#(Ø%(Ø"&§*¡*Ø#'§;¡;ð	 1ó ó  )ñ %6÷Y Cðx !%§	¡	§¡Ö 1ÑˆEÛ%�Ü˜§+¡+§.¡.×"8Ñ"8¸$Ö?ó &ñ !2ô �?×)Ñ)Ó+Ó,¬d°?Ó.CÐCÐC÷M HÖGüòV 6ùò 8÷] CÕBúsS   Ã
<TÅ2/T/Æ%A%T/ÈC(T/Ë:9T/Ì3T%ÍBT/ÏT*Ï/AT/ÑAT/Ô
T"Ô%
T/Ô/
T=)rs   rw   rv   ru   rq   r+   r>   r   )NFF)F)NFTNFFT)r    r!   r"   r#   r   r‚   rF   r9   rE   r‘   r™   rŸ   r²   r¿   r2   rÏ   rì   rô   r  r$   rQ   r   r   rn   rn   `   sm   † ô-ô*ô0Fò6ò?ò
ò@ò6ô
*
òXð& ØØØØ ØØôZòxOò!ò
Iõ$VDr   rn   N) Úcollectionsr   r   Ú	functoolsr   r   Ú	itertoolsr   Úoperatorr   r	   Ú	django.dbr
   r   r   r   Údjango.db.modelsr   r   r   r   r(   r?   rC   rG   rW   rY   rV   r\   r^   rl   rn   rQ   r   r   Ú<module>r     s�   ðß ,ß %Ý ß $ç FÓ Fß 6Ñ 6ô1�^ô 1ô2�nô 2ò	:ò
òDò
ò 6ð €Ô òEð !€Ô ò	ò÷jDò jDr   