
    +jq                       S SK Jr  S SKJrJr  S SKrS SKrS SKJr  \(       a  S SK	J
r
  S SKrS SK	rS SKrS SKr " S S5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S\5      r " S S5      r " S S\5      r " S  S!5      r " S" S#5      r " S$ S%5      r " S& S'5      r " S( S)5      r  " S* S+5      r! " S, S-5      r" " S. S/5      r#\\\\\\\\\!\"\#\\\\\\\\\/r$0 r%0 r&\$ H+  r'\'\%\'RP                  '   \'RR                  \&\'RP                  '   M-     g)0    )annotations)TYPE_CHECKINGUnionN)IterableCLIPc                  b    \ rS rSrS rSr\S 5       rSrSr	Sr
SrSr S         SS
 jjrSrg	)PairConditioningSetProperties   zCond Pair Set Propsc                2    SSSSSSSS.4SS	/4S
.SSSS.S.$ )NCONDITIONINGFLOAT      ?              $@{Gz?defaultminmaxstepr   mask bounds)positive_NEWnegative_NEWstrengthset_cond_areaMASKHOOKSTIMESTEPS_RANGEmaskhooks	timestepsrequiredoptional ss    8/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_hooks.pyINPUT_TYPES)PairConditioningSetProperties.INPUT_TYPES   sF     !3 2$#c$X\&]^#,m"<!>	 ##1
 	
    Tr   r   positivenegativeadvanced/hooks/cond pairset_propertiesNc           	     N    [         R                  R                  X/X4XVUS9u  pX4$ N)condsr   r   r%   r&   timesteps_rangecomfyr&   set_conds_props)
selfr   r   r   r   r%   r&   r'   final_positivefinal_negatives
             r.   r7   ,PairConditioningSetProperties.set_properties+   s;     */)D)DLKgMUIMlu *E *w& //r1   r+   NNN
r   floatr   strr%   ztorch.Tensorr&   comfy.hooks.HookGroupr'   tuple__name__
__module____qualname____firstlineno__NodeIdNodeNameclassmethodr/   EXPERIMENTALRETURN_TYPESRETURN_NAMESCATEGORYFUNCTIONr7   __static_attributes__r+   r1   r.   r
   r
      sr    ,F$H
 
 L3L+L)HH ei0!&07:0)07L0^c0 0r1   r
   c                  b    \ rS rSrS rSr\S 5       rSrSr	Sr
SrSr S         SS
 jjrSrg	)'PairConditioningSetPropertiesAndCombine3   zCond Pair Set Props Combinec           
     6    SSSSSSSSSS.4SS	/4S
.SSSS.S.$ )Nr   r   r   r   r   r   r   r   r   )r4   r5   r   r   r   r   r   r    r"   r$   r(   r+   r,   s    r.   r/   3PairConditioningSetPropertiesAndCombine.INPUT_TYPES6   sL     /. 2 2$#c$X\&]^#,m"<!> ##1
 	
r1   Tr2   r3   r6   r7   Nc
           
     R    [         R                  R                  X/X4/XVXxU	S9u  pX4$ N)r:   	new_condsr   r   r%   r&   r;   r=   r&   set_conds_props_and_combine)r?   r4   r5   r   r   r   r   r%   r&   r'   r@   rA   s               r.   r7   6PairConditioningSetPropertiesAndCombine.set_propertiesN   sN     */)P)PX`Wk  yE  xTYaUY  yB *Q *C& //r1   r+   rC   rD   rI   r+   r1   r.   rX   rX   3   sr    6F,H
 
" L3L+L)HH ei0!&07:0)07L0^c0 0r1   rX   c                  ^    \ rS rSrS rSr\S 5       rSrSr	Sr
Sr S         SS	 jjrS
rg)ConditioningSetPropertiesV   zCond Set Propsc                0    SSSSSSS.4SS	/4S
.SSSS.S.$ )Nr   r   r   r   r   r   r   r   r   )cond_NEWr   r   r   r    r"   r$   r(   r+   r,   s    r.   r/   %ConditioningSetProperties.INPUT_TYPESY   sC     /$#c$X\&]^#,m"<!> ##1
 	
r1   Tr   advanced/hooks/cond singler7   Nc           	     N    [         R                  R                  U/X#XEUS9u  nU4$ r9   r<   )r?   rf   r   r   r%   r&   r'   
final_conds           r.   r7   (ConditioningSetProperties.set_propertiesm   s7     338*<D8<[d 4 f }r1   r+   rC   rD   rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rT   rU   r7   rV   r+   r1   r.   rc   rc   V   sm    (FH
 
 L$L+HH ei!&7:)7L^c r1   rc   c                  ^    \ rS rSrS rSr\S 5       rSrSr	Sr
Sr S         SS	 jjrS
rg)#ConditioningSetPropertiesAndCombineu   zCond Set Props Combinec                2    SSSSSSSS.4SS	/4S
.SSSS.S.$ )Nr   r   r   r   r   r   r   r   r   )condrf   r   r   r   r    r"   r$   r(   r+   r,   s    r.   r/   /ConditioningSetPropertiesAndCombine.INPUT_TYPESx   sF     +.$#c$X\&]^#,m"<!>	 ##1
 	
r1   Tr   rh   r7   Nc           
     R    [         R                  R                  U/U/X4XVUS9u  nU4$ r]   r_   )	r?   rq   rf   r   r   r%   r&   r'   rj   s	            r.   r7   2ConditioningSetPropertiesAndCombine.set_properties   s>     ??tfYaXbHPDHgp @ r }r1   r+   rC   rD   rl   r+   r1   r.   rn   rn   u   sm    2F'H
 
 L$L+HH ei!&7:)7L^c r1   rn   c                  F    \ rS rSrS rSr\S 5       rSrSr	Sr
SrSrS	 rS
rg)PairConditioningCombine   zCond Pair Combinec                    SSSSSS.0$ )Nr)   r   )
positive_A
negative_A
positive_B
negative_Br+   r,   s    r.   r/   #PairConditioningCombine.INPUT_TYPES   s"     ////	
 	
r1   Tr2   r3   r6   combinec                L    [         R                  R                  X/X4/S9u  pVXV4$ )N)r:   r^   r_   )r?   ry   rz   r{   r|   r@   rA   s          r.   r~   PairConditioningCombine.combine   s:    ).)P)PXbWo  }G  |T)P  *V&00r1   r+   N)rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rS   rT   rU   r~   rV   r+   r1   r.   rv   rv      s>    &F"H
 
 L3L+L)HH1r1   rv   c                  R    \ rS rSrSrSr\S 5       rSrSr	Sr
SrS	r S SS jjrSrg
)$PairConditioningSetDefaultAndCombine   !PairConditioningSetDefaultCombinezCond Pair Set Default Combinec                    SSSSS.SS0S.$ )Nr   )r4   r5   positive_DEFAULTnegative_DEFAULTr&   r    r(   r+   r,   s    r.   r/   0PairConditioningSetDefaultAndCombine.INPUT_TYPES   s+     .-$5$5	 

 
	
r1   Tr2   r3   r6   set_default_and_combineNc                N    [         R                  R                  X/X4/US9u  pgXg4$ N)r:   r^   r&   r=   r&   set_default_conds_and_combine)r?   r4   r5   r   r   r&   r@   rA   s           r.   r   <PairConditioningSetDefaultAndCombine.set_default_and_combine   s@    ).)R)RZbYm  {K  z^Y^ *S *`&//r1   r+   Nr&   rG   )rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rS   rT   rU   r   rV   r+   r1   r.   r   r      sQ    0F.H
 
 L3L+L)H(H >B0'<0 0r1   r   c                  N    \ rS rSrSrSr\S 5       rSrSr	Sr
Sr S SS
 jjrSrg	) ConditioningSetDefaultAndCombine   ConditioningSetDefaultCombinezCond Set Default Combinec                    SSS.SS0S.$ )Nr   )rq   cond_DEFAULTr&   r    r(   r+   r,   s    r.   r/   ,ConditioningSetDefaultAndCombine.INPUT_TYPES   s%     * 1
 
 	
r1   Tr   rh   r   Nc                N    [         R                  R                  U/U/US9u  nU4$ r   r   )r?   rq   r   r&   final_conditionings        r.   r   8ConditioningSetDefaultAndCombine.set_default_and_combine   s9     % I IQUPVcobpNS !J !U	"$$r1   r+   r   r   )rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rT   rU   r   rV   r+   r1   r.   r   r      sL    ,F)H	
 	
 L$L+H(H >B%'<% %r1   r   c                  J    \ rS rSrS rSr\S 5       rSrSr	Sr
SrSSS	 jjrS
rg)SetClipHooks   zSet CLIP Hooksc                ,    SSSSS.4SSSS.4S.SS0S	.$ )
Nr   BOOLEANTr   advancedF)clipapply_to_condsschedule_clipr&   r    r(   r+   r,   s    r.   r/   SetClipHooks.INPUT_TYPES   s<     "#,$D.Q"R"+D-Q!R 	
 		
r1   Tr   zadvanced/hooks/clipapply_hooksNc                   Ub  UR                  SS9nU(       a  XAl        UR                  5       UR                  l        X!l        UR                  (       d%  UR                  R                  R                  S 5        UR                  R                  U[        R                  R                  [        R                  R                  R                  5      5        U4$ )NT)disable_dynamic)cloneapply_hooks_to_condspatcherforced_hooksuse_clip_scheduleset_keyframes_on_hooksregister_all_hook_patchesr=   r&   create_target_dictEnumWeightTargetClip)r?   r   r   r   r&   s        r.   r   SetClipHooks.apply_hooks   s    ::d:3D,1)(-DLL%%2"))))@@FLL225%++:X:XY^YdYdYuYuYzYz:{|wr1   r+   r   )r   r   r   boolr   r   r&   rG   )rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rT   rU   r   rV   r+   r1   r.   r   r      s>    FH

 

 LL$HH
 
r1   r   c                  R    \ rS rSr/ SQrS rSr\S 5       rSr	Sr
SrSrS	rSS
 jrSrg)ConditioningTimestepsRangei  )zprompt schedulingztimestep segmentszconditioning phaseszTimesteps Rangec                ,    SSSSSSS.4SSSSSS.4S.0$ )Nr)   r   r   r   MbP?r   )start_percentend_percentr+   r,   s    r.   r/   &ConditioningTimestepsRange.INPUT_TYPES	  s:     ")s3s\a+b!c 'SSZ_)`a
 	
r1   T)r#   r#   r#   )r#   BEFORE_RANGEAFTER_RANGEzadvanced/hookscreate_rangec                    X4SU4US44$ )Nr   r   r+   )r?   r   r   s      r.   r   'ConditioningTimestepsRange.create_range  s    ,sM.B[RUDVWWr1   r+   N)r   rE   r   rE   )rJ   rK   rL   rM   SEARCH_ALIASESrN   rO   rP   r/   rQ   rR   rS   rT   rU   r   rV   r+   r1   r.   r   r     sD    VN)F H
 
 LLLELHHXr1   r   c                  P    \ rS rSrS rSrS r\S 5       rSr	Sr
SrSrSSS
 jjrSrg	)CreateHookLorai!  zCreate Hook LoRAc                    S U l         g r   loaded_lorar?   s    r.   __init__CreateHookLora.__init__$  s
    r1   c                ^    [         R                  " S5      4SSSSSS.4SSSSSS.4S.S	S
0S.$ )Nlorasr   r         4      4@r   r   )	lora_namestrength_modelstrength_clip
prev_hooksr    r(   folder_pathsget_filename_listr,   s    r.   r/   CreateHookLora.INPUT_TYPES'  sV     +<<WEH#*ERV`d,e"f")s5QU_c+d!e j	
 		
r1   Tr    advanced/hooks/createcreate_hookNc                   Uc  [         R                  R                  5       nUR                  5         US:X  a	  US:X  a  U4$ [        R
                  " SU5      nS nU R                  b7  U R                  S   U:X  a  U R                  S   nOU R                  nS U l        AUc&  [         R                  R                  USS9nXV4U l        [         R                  R                  XbUS9nUR                  U5      4$ )Nr   r      T)	safe_load)lorar   r   )r=   r&   	HookGroupr   r   get_full_pathr   utilsload_torch_filecreate_hook_loraclone_and_combine)	r?   r   r   r   r   	lora_pathr   tempr&   s	            r.   r   CreateHookLora.create_hook9  s    ..0JQ=A#5=  ..w	B	'"i/''*''#' <;;..yD.ID )0D,,$er,s,,U355r1   r   r   )r   rF   r   rE   r   rE   r   rG   rJ   rK   rL   rM   rN   rO   r   rP   r/   rQ   rR   rT   rU   r   rV   r+   r1   r.   r   r   !  sE    F!H  

 

 LL&HH6 6r1   r   c                  J    \ rS rSrS rSr\S 5       rSrSr	Sr
SrSSS	 jjrS
rg)CreateHookLoraModelOnlyiR  zCreate Hook LoRA (MO)c                N    [         R                  " S5      4SSSSSS.4S.S	S
0S.$ )Nr   r   r   r   r   r   r   )r   r   r   r    r(   r   r,   s    r.   r/   #CreateHookLoraModelOnly.INPUT_TYPESU  sC     +<<WEH#*ERV`d,e"f
 j
 	
r1   Tr    r   create_hook_model_onlyNc                $    U R                  XSUS9$ )Nr   )r   r   r   r   r   )r?   r   r   r   s       r.   r   .CreateHookLoraModelOnly.create_hook_model_onlyf  s    )bcpz{{r1   r+   r   )r   rF   r   rE   r   rG   rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rT   rU   r   rV   r+   r1   r.   r   r   R  s@    &F&H	
 	
 LL&H'H| |r1   r   c                  T    \ rS rSrS rSrS r\S 5       rSr	Sr
SrSr S SS
 jjrSrg	)CreateHookModelAsLoraii  zCreate Hook Model as LoRAc                    S U l         g r   loaded_weightsr   s    r.   r   CreateHookModelAsLora.__init__m  s     #r1   c                ^    [         R                  " S5      4SSSSSS.4SSSSSS.4S.S	S
0S.$ )Ncheckpointsr   r   r   r   r   r   )	ckpt_namer   r   r   r    r(   r   r,   s    r.   r/   !CreateHookModelAsLora.INPUT_TYPESr  sV     +<<]KN#*ERV`d,e"f")s5QU_c+d!e j	
 		
r1   Tr    r   r   Nc                   Uc  [         R                  R                  5       nUR                  5         [        R
                  " SU5      nS nS nU R                  bF  U R                  S   U:X  a  U R                  S   nU R                  S   nOU R                  nS U l        AUc  [         R                  R                  USS[        R                  " S5      S9n	[         R                  R                  U	S   5      n[         R                  R                  U	S   (       a  U	S   R                  OU	S   5      nXVU4U l        [         R                  R                  XgX#S9n
UR                  U
5      4$ )	Nr   r   r      T
embeddings)
output_vaeoutput_clipembedding_directory)weights_modelweights_clipr   r   )r=   r&   r   r   r   r   r   sdload_checkpoint_guess_configget_folder_pathsget_patch_weights_from_modelr   create_hook_model_as_lorar   )r?   r   r   r   r   	ckpt_pathr   r   r   outr&   s              r.   r   !CreateHookModelAsLora.create_hook  se   ..0J ..}iH	*""1%2 $ 3 3A 6#2215**&*# ((77	d`d  {G  {X  {X  Ye  {f7  gC!KKDDSVLM ;;CCVYZ[V\CFNNbefgbhiL#,\"JD55MES 6 r,,U355r1   r   r   )r   rF   r   rE   r   rE   r   rG   r   r+   r1   r.   r   r   i  sR    $F*H#
 

 

 LL&HH 7;6 56 6r1   r   c                  N    \ rS rSrS rSr\S 5       rSrSr	Sr
Sr S SS	 jjrS
rg)CreateHookModelAsLoraModelOnlyi  zCreate Hook Model as LoRA (MO)c                N    [         R                  " S5      4SSSSSS.4S.S	S
0S.$ )Nr   r   r   r   r   r   r   )r   r   r   r    r(   r   r,   s    r.   r/   *CreateHookModelAsLoraModelOnly.INPUT_TYPES  sC     +<<]KN#*ERV`d,e"f
 j
 	
r1   Tr    r   r   Nc                $    U R                  XSUS9$ )Nr   )r   r   r   r   r   )r?   r   r   r   s       r.   r   5CreateHookModelAsLoraModelOnly.create_hook_model_only  s    )ber|}}r1   r+   r   )r   rF   r   rE   r   rG   r   r+   r1   r.   r
  r
    sP    -F/H	
 	
 LL&H'H BF~+@~ ~r1   r
  c                  J    \ rS rSrS rSr\S 5       rSrSr	Sr
SrSSS	 jjrS
rg)SetHookKeyframesi  zSet Hook Keyframesc                    SS0SS0S.$ )Nr&   r    hook_kfHOOK_KEYFRAMESr(   r+   r,   s    r.   r/   SetHookKeyframes.INPUT_TYPES  s%      .	
 	
r1   Tr    advanced/hooks/schedulingset_hook_keyframesNc                L    Ub  UR                  5       nUR                  US9  U4$ )N)r  )r   r   )r?   r&   r  s      r.   r  #SetHookKeyframes.set_hook_keyframes  s+    KKME(((9xr1   r+   r   )r&   rG   r  comfy.hooks.HookKeyframeGroup)rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rT   rU   r  rV   r+   r1   r.   r  r    s>    F#H
 
 LL*H#H r1   r  c                  V    \ rS rSr/ SQrS rSr\S 5       rSr	Sr
SrSrS	rSSS jjrSrg
)CreateHookKeyframei  )zhook schedulingzstrength animationz
timed hookzCreate Hook Keyframec                2    SSSSSS.4SSSSSS.4S	.S
S0S.$ )Nr   r   r   r   r   r   r   r   )strength_multr   prev_hook_kfr  r(   r+   r,   s    r.   r/   CreateHookKeyframe.INPUT_TYPES  sE     #*s5QU_c+d!e")s3s\a+b!c
  3
 	
r1   Tr  HOOK_KFr  create_hook_keyframeNc                    Uc  [         R                  R                  5       nUR                  5       n[         R                  R	                  XS9nUR                  U5        U4$ )N)r   r   )r=   r&   HookKeyframeGroupr   HookKeyframeadd)r?   r  r   r  keyframes        r.   r#  'CreateHookKeyframe.create_hook_keyframe  sU     ;;88:L#))+;;++]+`"r1   r+   r   )r  rE   r   rE   r  r  )rJ   rK   rL   rM   r   rN   rO   rP   r/   rQ   rR   rS   rT   rU   r#  rV   r+   r1   r.   r  r    sH    LN!F%H	
 	
 L&LL*H%H r1   r  c                  f    \ rS rSr/ SQrS rSr\S 5       rSr	Sr
SrSrS	r S       SS jjrSrg
)CreateHookKeyframesInterpolatedi  )zease hook strengthzsmooth hook transitionzinterpolate keyframeszCreate Hook Keyframes Interp.c                    SSSSSS.4SSSSSS.4[         R                  R                  R                  4SSSSSS.4SSSSSS.4SSS	S
SS.4SSSS.4S.SS0S.$ )Nr   r   r   r   r   r   INT   r   d   r   r   FTr   )strength_startstrength_endinterpolationr   r   keyframes_countprint_keyframesr  r  r(   )r=   r&   InterpolationMethod_LISTr,   s    r.   r/   +CreateHookKeyframesInterpolated.INPUT_TYPES  s     $+CPT^c,d"g!(c#d\a*b e"'++"A"A"G"G!J")s3s\a+b!c 'SSZ_)`a$)q3XY+Z#[$-5d/S#T  3
 	
r1   Tr  r!  r  create_hook_keyframesNc	           	     :   Uc  [         R                  R                  5       nUR                  5       n[         R                  R                  R                  XEU[         R                  R                  R                  S9n	[         R                  R                  R                  XXcS9n
Sn[        X5       Hd  u  pSnU(       a  SnSnUR                  [         R                  R                  XUS95        U(       d  MH  [        R                  " SU SU 35        Mf     U4$ )	Nnum_fromnum_tolengthmethodTr   r   Fr   r   guarantee_stepsHook Keyframe - start_percent: = )r=   r&   r%  r   r5  get_weightsLINEARzipr'  r&  logginginfo)r?   r0  r1  r2  r   r   r3  r4  r  percents	strengthsis_firstpercentr   r@  s                  r.   r8  5CreateHookKeyframesInterpolated.create_hook_keyframes  s     ;;88:L#))+;;22>>  sBFKkkFeFeFlFl ? nKK33??  vE?  \	!$X!9GO"# U[[55xp5  A  B=gYc(TU ": r1   r+   )FN)r0  rE   r1  rE   r2  rF   r   rE   r   rE   r3  intr  r  rJ   rK   rL   rM   r   rN   rO   rP   r/   rQ   rR   rS   rT   rU   r8  rV   r+   r1   r.   r+  r+    so    ^N.F.H
 
  L&LL*H&H bf-2AFY\C` r1   r+  c                  b    \ rS rSrSS/rS rSr\S 5       rSr	Sr
SrS	rS
r S     SS jjrSrg)CreateHookKeyframesFromFloatsi%  zbatch keyframeszstrength list to keyframesz!Create Hook Keyframes From Floatsc                N    SSSSSS.4SSSSSS	.4SSSSSS	.4S
SSS.4S.SS0S.$ )NFLOATSr   T)r   r   r   
forceInputr   r   r   r   r   Fr   )floats_strengthr   r   r4  r  r  r(   r+   r,   s    r.   r/   )CreateHookKeyframesFromFloats.INPUT_TYPES)  sd     %-"RQVfj.k#l")s3s\a+b!c 'SSZ_)`a$-5d/S#T	  3

 
	
r1   Tr  r!  r  r8  Nc           	        Uc  [         R                  R                  5       nUR                  5       n[	        U5      [
        [        4;   a  [        U5      /nO8[        U[        5      (       a  O"[        S[	        U5      R                   S35      e[         R                  R                  R                  X#[        U5      [         R                  R                  R                  S9nSn[        Xa5       Hd  u  pSn
U(       a  Sn
SnUR!                  [         R                  R#                  XU
S95        U(       d  MH  [$        R&                  " S	U S
U	 35        Mf     U4$ )NzDfloats_strength must be either an iterable input or a float, but was.r:  Tr   r   Fr?  rA  rB  )r=   r&   r%  r   typerE   rM  
isinstancer   	Exception__repr__r5  rC  lenrD  rE  r'  r&  rF  rG  )r?   rU  r   r   r  r4  rH  rJ  rK  r   r@  s              r.   r8  3CreateHookKeyframesFromFloats.create_hook_keyframes=  sY     ;;88:L#))+ UCL0$_56O22bcghwcx  dB  dB  cC  CD  E  F  F;;22>>ru  wF  sGFKkkFeFeFlFl ? n !$X!?GO"# U[[55xp5  A  B=gYc(TU "@ r1   r+   )NF)rU  zUnion[float, list[float]]r   rE   r   rE   r  r  rN  r+   r1   r.   rP  rP  %  sm    ')EFN,F2H
 
 L&LL*H&H af-2AF,I r1   rP  c                  >    \ rS rSr\S 5       rSrSrSrSr	S
S jr
Srg	)SetModelHooksOnCondiZ  c                    SSSS.0$ )Nr)   r   r    )conditioningr&   r+   r,   s    r.   r/   SetModelHooksOnCond.INPUT_TYPES[  s      1#
 	
r1   Tr   zadvanced/hooks/manualattach_hookc                B    [         R                  R                  X5      4$ r   )r=   r&   set_hooks_for_conditioning)r?   rb  r&   s      r.   rd  SetModelHooksOnCond.attach_hooki  s    66|KMMr1   r+   Nr   )rJ   rK   rL   rM   rP   r/   rQ   rR   rT   rU   rd  rV   r+   r1   r.   r`  r`  Z  s0    
 
 L$L&HHNr1   r`  c                  Z    \ rS rSrS/rSrSr\S 5       rSr	Sr
SrS	r  S   SS jjrSrg
)CombineHooksip  zmerge hooksCombineHooks2zCombine Hooks [2]c                    0 SSS.S.$ )Nr    )hooks_Ahooks_Br(   r+   r,   s    r.   r/   CombineHooks.INPUT_TYPESt  s     &%
 	
r1   Tr    advanced/hooks/combinecombine_hooksNc                \    X/n[         R                  R                  R                  U5      4$ r   r=   r&   r   combine_all_hooks)r?   rl  rm  
candidatess       r.   rp  CombineHooks.combine_hooks  s*     '
%%77
CEEr1   r+   )NN)rl  rG   rm  rG   )rJ   rK   rL   rM   r   rN   rO   rP   r/   rQ   rR   rT   rU   rp  rV   r+   r1   r.   ri  ri  p  sa    #_NF"H
 
 LL'HH 6:59F4F4F Fr1   ri  c                  `    \ rS rSrSrSr\S 5       rSrSr	Sr
Sr    S       SS
 jjrSrg	)CombineHooksFouri  CombineHooks4zCombine Hooks [4]c                    0 SSSSS.S.$ )Nr    )rl  rm  hooks_Chooks_Dr(   r+   r,   s    r.   r/   CombineHooksFour.INPUT_TYPES  s$     &%%%		
 		
r1   Tr    ro  rp  Nc                ^    XX4/n[         R                  R                  R                  U5      4$ r   rr  )r?   rl  rm  rz  r{  rt  s         r.   rp  CombineHooksFour.combine_hooks  s,    
 9
%%77
CEEr1   r+   )NNNN)rl  rG   rm  rG   rz  rG   r{  rG   rJ   rK   rL   rM   rN   rO   rP   r/   rQ   rR   rT   rU   rp  rV   r+   r1   r.   rw  rw    sv    F"H

 

 LL'HH 6:595959	F4F4F  5F  5	F Fr1   rw  c                  x    \ rS rSrSrSr\S 5       rSrSr	Sr
Sr        S               SS
 jjrSrg	)CombineHooksEighti  CombineHooks8zCombine Hooks [8]c           
         0 SSSSSSSSS.S.$ )Nr    )rl  rm  rz  r{  hooks_Ehooks_Fhooks_Ghooks_Hr(   r+   r,   s    r.   r/   CombineHooksEight.INPUT_TYPES  s0     &%%%%%%%	
 	
r1   Tr    ro  rp  Nc	                b    XX4XVXx/n	[         R                  R                  R                  U	5      4$ r   rr  )
r?   rl  rm  rz  r{  r  r  r  r  rt  s
             r.   rp  CombineHooksEight.combine_hooks  s0     'G]
%%77
CEEr1   r+   )NNNNNNNN)rl  rG   rm  rG   rz  rG   r{  rG   r  rG   r  rG   r  rG   r  rG   r  r+   r1   r.   r  r    s    F"H
 
  LL'HH 6:59595959595959
F4
F4
F  5
F  5	
F
  5
F  5
F  5
F  5
F 
Fr1   r  )*
__future__r   typingr   r   rF  torchcollections.abcr   comfy.sdr   comfy.hooksr=   comfy.utilsr   r
   rX   rc   rn   rv   r   r   r   r   r   r   r   r
  r  r  r+  rP  r`  ri  rw  r  	node_listNODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSnoderN   rO   r+   r1   r.   <module>r     s   " '   $    
0 0B!0 !0F > @1 100 0:% %4 BX X8/6 /6b|n |.56 56n~%: ~< 2 <. .`0 0jN N,F F4F F:#F #FR "#!'!+$(3	6   D'+$.2mmt{{+ r1   