
    +j                        d dl Z d dlmZ d dlmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZ dZde de fd	Z!d
e"de"de"de fdZ# G d dej$                  Z% G d dej$                  Z& G d dej$                  Z' G d dej$                  Z( G d dej$                  Z) G d de          Z*de*fdZ+dS )    N)override)IOComfyExtensionInput)#ImageRelightAdvancedSettingsRequestImageRelightRequest ImageSkinEnhancerCreativeRequest ImageSkinEnhancerFaithfulRequest ImageSkinEnhancerFlexibleRequestImageStyleTransferRequestImageUpscalerCreativeRequestImageUpscalerPrecisionV2RequestInputAdvancedSettingsInputPortraitModeInputSkinEnhancerModeTaskResponse)
ApiEndpointdownload_url_to_image_tensordownscale_image_tensorget_image_dimensionsget_number_of_imagespoll_opsync_opupload_images_to_comfyapivalidate_image_aspect_ratiovalidate_image_dimensionsg
ףp=
?
megapixelsreturnc                 6    | dk    rdS | dk    rdS | dk    rdS dS )zLPrice in EUR for a single Magnific upscaling step based on input megapixels.g?gM?g      @gM?g@g~jt?g~jt? )r   s    >/home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_magnific.py_tier_price_eurr"   $   s7    SuSuSu5    widthheightscalec                     t          t          j        |                    }d}| |z  }t          |          D ]}|t	          |dz            z  }|dz  }t          |t          z  d          S )zZCalculate total Magnific upscale price in USD for given input dimensions and scale factor.g        i@B       )intmathlog2ranger"   round_EUR_TO_USD)r$   r%   r&   	num_steps	total_eurpixels_s          r!   %_calculate_magnific_upscale_price_usdr4   /   su    DIe$$%%IIV^F9  _Vi%7888	![(!,,,r#   c                   |    e Zd Zed             Zedej        dedededededed	ed
ede	de
j        fd            ZdS )!MagnificImageUpscalerCreativeNodec                 N   t          j        ddddt           j                            d          t           j                            ddd	          t           j                            d
g d          t           j                            dg d          t           j                            ddddt           j        j                  t           j                            dddddt           j        j                  t           j                            dddddt           j        j                  t           j                            dddddt           j        j                  t           j                            dg dd          t           j	                            ddd d!          g
t           j        
                                gt           j        j        t           j        j        t           j        j        gdt          j        t          j        d
dg"          d#$          %	  	        S )&Nr6   z!Magnific Image Upscale (Creative)partner/image/Magnificuf   Prompt‑guided enhancement, stylization, and 2x/4x/8x/16x upscaling. Maximum output: 25.3 megapixels.imagepromptT 	multilinedefaultscale_factor2x4x8x16xoptionsoptimized_for)	standardsoft_portraitshard_portraitsart_n_illustrationvideogame_assetsnature_n_landscapesfilms_n_photography
3d_rendersscience_fiction_n_horror
creativityi
   r   )minmaxr>   display_modehdrz#The level of definition and detail.rS   rT   r>   tooltiprU   resemblancez/The level of resemblance to the original image.
fractalityz:The strength of the prompt and intricacy per square pixel.engine)	automaticmagnific_illusiomagnific_sharpymagnific_sparkle)rF   advancedauto_downscaleFzOAutomatically downscale input image if output would exceed maximum pixel limit.r>   rX   r`   widgetsa  
                (
                  $ad := widgets.auto_downscale;
                  $mins := $ad
                    ? {"2x": 0.172, "4x": 0.343, "8x": 0.515, "16x": 0.515}
                    : {"2x": 0.172, "4x": 0.343, "8x": 0.515, "16x": 0.844};
                  $maxs := {"2x": 0.515, "4x": 0.844, "8x": 1.015, "16x": 1.187};
                  {
                    "type": "range_usd",
                    "min_usd": $lookup($mins, widgets.scale_factor),
                    "max_usd": $lookup($maxs, widgets.scale_factor),
                    "format": { "approximate": true }
                  }
                )
                
depends_onexpr	node_iddisplay_namecategorydescriptioninputsoutputshiddenis_api_nodeprice_badge)r   SchemaImager   StringComboIntNumberDisplaysliderBooleanOutputHiddenauth_token_comfy_orgapi_key_comfy_org	unique_id
PriceBadgePriceBadgeDependsclss    r!   define_schemaz/MagnificImageUpscalerCreativeNode.define_schema;   s   y7<-/ w''	D"EE~7P7P7PQQ#
 
 
    \sATVTdTkllA!#!1!8    !M!#!1!8     X!#!1!8    ddd!   
 
  $!m!	 !  a6p !! 	.	+	#
 /IY8Z[[[  MX
 X
 X
 X	
r#   r9   r:   r?   rG   rQ   rV   rY   rZ   r[   ra   r   c                 v  K   t          |          dk    rt          d          t          |ddd           t          |dd           d	}t	          |          \  }}t          |                    d
                    }||z  |z  |z  }||k    r|
rn||z  }d}|dz  }dD ]F}||k    r	||z  |z  }||k    r|}d } n*t          j        ||z            }|dk    r|}|||z  z  } nG|t          ||          }| d
}n$t          d||z   d
||z   d|dd|dd	          t	          |          \  }}t          |                    d
                    }t          |||          t          | t          dd          t          t          t          | |dd            d {V d         |||||||	|r|nd 	  	                   d {V }t!          | t          d|j                   t          d fdd !           d {V }t%          j        t)          |j        d                    d {V           S )"N   $Exactly one input image is required.r      r   r   Fstrict   
min_height	min_widthi xr)   r(         r(   r)          @total_pixelszOutput size (z = ,z) pixels) exceeds maximum allowed size of 9 pixels. Use a smaller input image or lower scale factor.z#/proxy/freepik/v1/ai/image-upscalerPOSTpathmethod
max_imagesr   r   )	r9   r?   rG   rQ   rV   rY   rZ   r[   r:   response_modeldataz$/proxy/freepik/v1/ai/image-upscaler/r   c                     | j         S Nstatusr   s    r!   <lambda>z;MagnificImageUpscalerCreativeNode.execute.<locals>.<lambda>       qx r#   c                     S r   r    r3   	price_usds    r!   r   z;MagnificImageUpscalerCreativeNode.execute.<locals>.<lambda>       i r#         $@r   status_extractorprice_extractorpoll_interval)r   
ValueErrorr   r   r   r*   rstripr+   sqrtr   r4   r   r   r   r   r   r   task_idr   
NodeOutputr   	generated)r   r9   r:   r?   rG   rQ   rV   rY   rZ   r[   ra   max_output_pixelsr%   r$   requested_scaleoutput_pixelsinput_pixelsr&   max_input_pixels	candidatescale_output_pixelsdownscale_ratiofinal_heightfinal_widthactual_scaleinitial_resfinal_responser   s                              @r!   executez)MagnificImageUpscalerCreativeNode.execute   sm       &&!++CDDD#E66%HHHH!%C3GGGG&,U33l11#66778?J,,,   %v~#4#9 !.  I ?22 *6*BY*N'*.??? )+/(&*i0CFW0W&X&XO&#-- )+<YAV+W( .
 $/25GWXXXE"'{{{ HEO$; H Hf>V H H[hu H H7HUH H H   %9$?$?!k<..s33449+|Uabb	#B6RRR'-6sEa^bcccccccccefg)+%'%!'1vvT
 
 
	
 
 
 
 
 
 
 
 
   'YKDWYYZZZ'////// 
  
  
 
 
 
 
 
 
 }#?@XYZ@[#\#\\\\\\\]]]r#   N__name__
__module____qualname__classmethodr   r   rs   strr*   boolr   r   r   r    r#   r!   r6   r6   :   s        Y
 Y
 [Y
v R^{R^ R^ 	R^
 R^ R^ R^ R^ R^ R^ R^ 
R^ R^ R^ [R^ R^ R^r#   r6   c                   p    e Zd Zed             Zedej        dededededede	d	e
j        fd
            ZdS )"MagnificImageUpscalerPreciseV2Nodec                 b   t          j        ddddt           j                            d          t           j                            dg d          t           j                            d	g d
d          t           j                            dddddt           j        j                  t           j                            dddddt           j        j                  t           j                            dddddt           j        j                  t           j                            dddd          gt           j        	                                gt           j
        j        t           j
        j        t           j
        j        gdt          j        t          j        dg          d           	  	        S )!Nr   z#Magnific Image Upscale (Precise V2)r8   uq   High-fidelity upscaling with fine control over sharpness, grain, and detail. Maximum output: 10060×10060 pixels.r9   r?   r@   rE   flavor)sublimephotophoto_denoiserzbProcessing style: sublime for general use, photo for photographs, photo_denoiser for noisy photos.rF   rX   sharpenr   d      zNImage sharpness intensity. Higher values increase edge definition and clarity.rW   smart_grainzaIntelligent grain/texture enhancement to prevent the image from looking too smooth or artificial.ultra_detail   zIControls fine detail, textures, and micro-details added during upscaling.ra   FzNAutomatically downscale input image if output would exceed maximum resolution.Trb   rc   a  
                (
                  $mins := {"2x": 0.172, "4x": 0.343, "8x": 0.515, "16x": 0.844};
                  $maxs := {"2x": 2.045, "4x": 2.545, "8x": 2.889, "16x": 3.06};
                  {
                    "type": "range_usd",
                    "min_usd": $lookup($mins, widgets.scale_factor),
                    "max_usd": $lookup($maxs, widgets.scale_factor),
                    "format": { "approximate": true }
                  }
                )
                re   rh   )r   rr   rs   r   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   s    r!   r   z0MagnificImageUpscalerPreciseV2Node.define_schema   s   y8>-3 w''~7P7P7PQQBBBg    l!#!1!8    !8!#!1!8    "g!#!1!8    
  $!l!	 !  E(T !! 	.	+	#
 /8HIII  qG
 G
 G
 G	
r#   r9   r?   r   r   r   r   ra   r   c                 r  K   t          |          dk    rt          d          t          |ddd           t          |dd           d	}t	          |          \  }	}
t          |                    d
                    }|
|z  }|	|z  }||k    s||k    r|rt          |
|	          }d}|dz  }||z  }t          |
|	z  |z  |z            }dD ]K}||k    r	||z  }||k    r|}d } n2||z  }|dk    r&|}||z  }||z  }t          |
|	z  |z  |z            } nL|t          ||          }|}nt          d| d
| d| d
| d	          t	          |          \  }}t          |||          t          | t          dd          t          t          t          | |dd            d {V d         |||||                     d {V }t          | t          d|j                   t          d fdd           d {V }t#          j        t'          |j        d                    d {V           S )Nr   r   r   r   Fr   r   r   iL'  r   r)   r   r   r   zOutput dimensions (z') exceed maximum allowed resolution of r   z0/proxy/freepik/v1/ai/image-upscaler-precision-v2r   r   r   r   )r9   r?   r   r   r   r   r   z1/proxy/freepik/v1/ai/image-upscaler-precision-v2/r   c                     | j         S r   r   r   s    r!   r   z<MagnificImageUpscalerPreciseV2Node.execute.<locals>.<lambda>  r   r#   c                     S r   r    r   s    r!   r   z<MagnificImageUpscalerPreciseV2Node.execute.<locals>.<lambda>  r   r#   r   r   )r   r   r   r   r   r*   striprT   r   r4   r   r   r   r   r   r   r   r   r   r   r   )r   r9   r?   r   r   r   r   ra   max_output_dimensionr%   r$   r   output_widthoutput_heightmax_dimr&   max_input_dimscale_ratior   r   
output_dimr   r   r   r   r   r   s                             @r!   r   z*MagnificImageUpscalerPreciseV2Node.execute9  sr       &&!++CDDD#E66%HHHH!%C3GGGG$,U33l005566.0...-BV2V2V   eV,, 4 9+g5#&uv~'Ck'Q#R#R !.  I ?22 !(9!4J!%999 )+/(&03G&GO&#-- )(<	(I&3g&=+.uv~/Kk/Y+Z+Z( . $/25GWXXXE"' H, H H H H%9H H<PH H H   %9$?$?!k9+|Udee	#OX^___'06sEa^bcccccccccefg,')  	
 
 
 
 
 
 
 
 
  'fQ\Qdffggg'////// 
  
  
 
 
 
 
 
 
 }#?@XYZ@[#\#\\\\\\\]]]r#   Nr   r    r#   r!   r   r      s        H
 H
 [H
T P^{P^ P^ 	P^
 P^ P^ P^ P^ 
P^ P^ P^ [P^ P^ P^r#   r   c                       e Zd Zed             Zedej        dej        dededededed	e	d
e
dej        fd            ZdS )MagnificImageStyleTransferNodec                    t          j        ddddt           j                            dd          t           j                            dd	          t           j                            d
dd          t           j                            dddddt           j        j                  t           j                            dddddt           j        j                  t           j                            dg dd          t           j                            dg ddd          t           j	                            dt           j	        
                    dg           t           j	        
                    d t           j                            d!g d"d#          t           j                            d$g d%d&          g          gd'          t           j                            d(dd)d*          g	t           j                                        gt           j        j        t           j        j        t           j        j        gdt          j        d+,          -	  	        S ).Nr   zMagnific Image Style Transferr8   z>Transfer the style from a reference image to your input image.r9   z%The image to apply style transfer to.rX   reference_imagez*The reference image to extract style from.r:   Tr;   r<   style_strengthr   r   zPercentage of style strength.rW   structure_strength2   z.Maintains the structure of the original image.r   )faithfulgen_zpsychedeliadetailyclear
donotstyledonotstyle_sharpzStyle transfer flavor.r   r[   )	balanceddefinioillusio
3d_cartooncolorful_anime
caricaturereal
super_realsoftyProcessing engine selection.)rF   rX   r`   portrait_modedisabledenabledportrait_style)rH   pop	super_popz(Visual style applied to portrait images.portrait_beautifier)nonebeautify_facebeautify_face_maxz-Facial beautification intensity on portraits.z-Enable portrait mode for facial enhancements.fixed_generationzlWhen disabled, expect each generation to introduce a degree of randomness, leading to more diverse outcomes.rb   {"type":"usd","usd":0.11}rg   rh   )r   rr   rs   r   rt   rv   rw   rx   ru   DynamicComboOptionry   rz   r{   r|   r}   r~   r   r   s    r!   r   z,MagnificImageStyleTransferNode.define_schema  s^   y48-Xw0WXX0:fgg	D"EE$;!#!1!8    (L!#!1!8    vvv4   
 
 
 
 ;!     %%#..z2>>..% "$4,L,L,L,V !/ !" !"
 !#$9,Z,Z,Z,[ !/ !" !" $ L) &  , 
  & 8! !  FP !! 	.	+	#
 4  kX
 X
 X
 X	
r#   r9   r   r:   r   r   r   r[   r   r
  r   c
                 \  K   t          |          dk    rt          d          t          |          dk    rt          d          t          |ddd           t          |ddd           t          |dd	           t          |dd	           |d
         dk    }
|                    dd          }|                    dd          }t          | ||gd           d {V }t          | t          dd          t          t          |d         |d         |r|nd |||
|
r|nd |
r|dk    r|nd |||	                     d {V }t          | t          d|j                   t          d d           d {V }t          j        t          |j        d                    d {V           S )Nr   r   (Exactly one reference image is required.r   r   Fr   r   r   r   r  r  rH   r  r  r)   r   z)/proxy/freepik/v1/ai/image-style-transferr   r   r   )r9   r   r:   r   r   is_portraitr  r  r   r[   r
  r   z*/proxy/freepik/v1/ai/image-style-transfer/r   c                     | j         S r   r   r   s    r!   r   z8MagnificImageStyleTransferNode.execute.<locals>.<lambda>  r   r#   r   r   r   r   )r   r   r   r   getr   r   r   r   r   r   r   r   r   r   r   )r   r9   r   r:   r   r   r   r[   r   r
  r  r  r  uploaded_urlsr   r   s                   r!   r   z&MagnificImageStyleTransferNode.execute  sP       &&!++CDDD00A55GHHH#E66%HHHH#OVVERRRR!%C3GGGG!/cSQQQQ#O4	A&**+;ZHH+//0EvNN7e_=Ubcddddddddd#HQWXXX'*#A& -a 0!'1vvT-#5'1<F~~$;F$rK^bhKhKh$7$7nr!1  	
 
 
 
 
 
 
 
 
$  '_+J]__```'// 
  
  
 
 
 
 
 
 
 }#?@XYZ@[#\#\\\\\\\]]]r#   N)r   r   r   r   r   r   rs   r   r*   r   r   r   r   r   r    r#   r!   r   r     s        Y
 Y
 [Y
v 4^{4^ 4^ 	4^
 4^  4^ 4^ 4^ )4^ 4^ 
4^ 4^ 4^ [4^ 4^ 4^r#   r   c                       e Zd Zed             Ze	 ddej        dededede	de	d	e	d
e
dej        dz  dej        fd            ZdS )MagnificImageRelightNodec           !      
   t          j        ddddt           j                            dd          t           j                            dd	d
d          t           j                            dddddt           j        j                  t           j                            dg dd          t           j	                            dddd	          t           j	                            dd	dd	          t           j	                            dd	dd	          t           j
                            dt           j
                            dg           t           j
                            d t           j                            d!ddd"d#t           j        j                  t           j                            d$ddd"d%t           j        j                  t           j                            d&ddd"d't           j        j                  t           j                            d(ddd"d)t           j        j                  t           j                            d*ddd"d+t           j        j                  t           j                            d,g d-d.          t           j                            d/g d0d1          t           j                            d2g d3d4          t           j	                            d5d	d67          g	          gd8          t           j                            d9d	d:;          g	t           j                                        gt           j        j        t           j        j        t           j        j        gd	t          j        d<=          >	  	        S )?Nr  zMagnific Image Relightr8   zWRelight an image with lighting adjustments and optional reference-based light transfer.r9   zThe image to relight.r   r:   Tr;   zFDescriptive guidance for lighting. Supports emphasis notation (1-1.4).)r=   r>   rX   light_transfer_strengthr   r   z(Intensity of light transfer application.rW   style)rH   darker_but_realisticcleansmoothbrightercontrasted_n_hdrjust_compositionzStylistic output preference.r   interpolate_from_originalFz<Restricts generation freedom to match original more closely.rb   change_backgroundz.Modifies background based on prompt/reference.preserve_detailsz1Maintains texture and fine details from original.advanced_settingsr  r  whitesr   z)Adjusts the brightest tones in the image.blacksz'Adjusts the darkest tones in the image.
brightnesszOverall brightness adjustment.contrastzContrast adjustment.
saturationzColor saturation adjustment.r[   )	r\   r   coolr   r   fairyr   hard_transformr   r   transfer_light_a)r\   lowmediumnormalhighhigh_on_facesz The intensity of light transfer.transfer_light_b)r\   compositionstraight	smooth_in
smooth_outsmooth_bothreverse_bothsoft_insoft_outsoft_midstyle_shiftstrong_shiftzeAlso modifies light transfer intensity. Can be combined with the previous control for varied effects.r
  z1Ensures consistent output with the same settings.)r>   rX   z2Fine-tuning options for advanced lighting control.r   z3Optional reference image to transfer lighting from.)optionalrX   r  r  rh   )r   rr   rs   r   rt   rv   rw   rx   ru   ry   r  r  rz   r{   r|   r}   r~   r   r   s    r!   r   z&MagnificImageRelightNode.define_schema#  s   y.1-qw0GHH	"d	     -F!#!1!8       ;    
  /!Z!	 !   
  ' L!	 !   
  & O!	 !   %%'..z2>>..% "$,()(+,.,W131A1H !- !" !" !#$,()(+,.,U131A1H !- !" !" !#$0()(+,.,L131A1H !- !" !" !#$.()(+,.,B131A1H !- !" !" !#$0()(+,.,J131A1H !- !" !" !#$,
-& 
-& 
-& -K !/ !" !" !#$6,m,m,m,N !/ !" !"
 !#$6-& -& -&-d# !/ !" !"( !#
 0 0$6,0,_ !1 !" !"cVY Y\z Q & ` `B %!Q   aUn !! 	.	+	#
 4  Ig
 g
 g
 g	
r#   Nr9   r:   r  r  r"  r#  r$  r%  r   r   c
                   K   t          |          dk    rt          d          |	"t          |	          dk    rt          d          t          |ddd           t          |dd	           |	%t          |	ddd           t          |	dd	           t	          | |d
           d {V d         }
d }|	t	          | |	d
           d {V d         }d }|d         dk    rNt          |d         |d         |d         |d         |d         |d         |d         |d         |d         	  	        }t          | t          dd          t          t          |
|r|nd |||||||	  	                   d {V }t          | t          d|j                   t          d d !           d {V }t          j        t          |j        d                    d {V           S )"Nr   r   r  r   r   Fr   r   r   r  r   r%  r  r&  r'  r(  r)  r*  r[   r.  r4  r
  )	r&  r'  r(  r)  r*  r[   r.  r4  r
  z"/proxy/freepik/v1/ai/image-relightr   r   )	r9   r:   #transfer_light_from_reference_imager  r"  r#  r  r$  r%  r   z#/proxy/freepik/v1/ai/image-relight/r   c                     | j         S r   r   r   s    r!   r   z2MagnificImageRelightNode.execute.<locals>.<lambda>  r   r#   r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r9   r:   r  r  r"  r#  r$  r%  r   	image_urlreference_urladv_settingsr   r   s                  r!   r   z MagnificImageRelightNode.execute  s       &&!++CDDD&+?+P+PTU+U+UGHHH#E66%HHHH!%C3GGGG&'PUVVVV%o#QTUUUU4S%ANNNNNNNNNPQR	&#<S/^_#`#`#```````bcdM01Y>>>(2(2,\:*:6,\:(2!23E!F!23E!F!23E!F
 
 
L $A&QQQ'$!'1vvT4A(?*C"3!1".
 
 
	
 
 
 
 
 
 
 
 
   'X;CVXXYYY'// 
  
  
 
 
 
 
 
 
 }#?@XYZ@[#\#\\\\\\\]]]r#   r   )r   r   r   r   r   r   rs   r   r*   r   r   r   r   r   r    r#   r!   r  r  "  s        h
 h
 [h
T  /3@^ @^{@^ @^ "%	@^
 @^ $(@^  @^ @^ 1@^ t+@^ 
@^ @^ @^ [@^ @^ @^r#   r  c                   d    e Zd Zed             Zedej        dededede	j
        f
d            ZdS )	MagnificImageSkinEnhancerNodec                    t          j        ddddt           j                            dd          t           j                            dd	d
d	dt           j        j                  t           j                            dd	d
ddt           j        j                  t           j                            dt           j                            dg           t           j                            dt           j                            dd	d
ddt           j        j                  g          t           j                            dt           j	                            dg dd          g          gd          gt           j        
                                gt           j        j        t           j        j        t           j        j        gdt          j        t          j        dg          d           	  	        S )!NrH  zMagnific Image Skin Enhancerr8   z>Skin enhancement for portraits with multiple processing modes.r9   zThe portrait image to enhance.r   r   r   r   zSharpening intensity level.rW   r   r)   zSmart grain intensity level.modecreativer   skin_detailP   zSkin detail enhancement level.flexiblerG   )enhance_skinimprove_lightingenhance_everythingtransform_to_real
no_make_upz Enhancement optimization target.r   zProcessing mode: creative for artistic enhancement, faithful for preserving original appearance, flexible for targeted optimization.Trc   z
                (
                  $rates := {"creative": 0.29, "faithful": 0.37, "flexible": 0.45};
                  {"type":"usd","usd": $lookup($rates, widgets.mode)}
                )
                re   rh   )r   rr   rs   r   rv   rw   rx   r  r  ru   rz   r{   r|   r}   r~   r   r   r   s    r!   r   z+MagnificImageSkinEnhancerNode.define_schema  s   y37-Xw0PQQ9!#!1!8    !:!#!1!8    %%..z2>>..& "$1()(+,.,L131A1H !- !" !"	  ..& "$3-& -& -& -O !/ 
!" 
!" @:E & % %%8t !! 	.	+	#
 /AAA  OP
 P
 P
 P	
r#   r9   r   r   rJ  r   c                   K   t          |          dk    rt          d          t          |ddd           t          |dd           t	          | |dd	
           d {V d         }|d         }|dk    rd}t          |||          }n=|dk    rd}t          ||||d                   }nd}t          ||||d                   }t          | t          d| d          t          |           d {V }	t          | t          d|	j                   t          d d           d {V }
t          j        t          |
j        d                    d {V           S )Nr   r   r   r   Fr   r   r   i   r   r   rJ  rK  )r9   r   r   r   rL  )r9   r   r   rL  rN  rG   )r9   r   r   rG   z#/proxy/freepik/v1/ai/skin-enhancer/r   r   r   r   c                     | j         S r   r   r   s    r!   r   z7MagnificImageSkinEnhancerNode.execute.<locals>.<lambda>  r   r#   r   r  )r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   )r   r9   r   r   rJ  rD  selected_modeendpointr   r   r   s              r!   r   z%MagnificImageSkinEnhancerNode.executeg  s       &&!++CDDD#E66%HHHH!%C3GGGG4S%A\ghhhhhhhhhjkl	VJ&&!H3'  DD
 j((!H3' /	  DD "H3'"?3	  D $M8MMV\]]]'	
 
 
 
 
 
 
 
 
  'X;CVXXYYY'// 
  
  
 
 
 
 
 
 
 }#?@XYZ@[#\#\\\\\\\]]]r#   N)r   r   r   r   r   r   rs   r*   r   r   r   r   r    r#   r!   rH  rH    s        Q
 Q
 [Q
f 4^{4^ 4^ 	4^
 $4^ 
4^ 4^ 4^ [4^ 4^ 4^r#   rH  c                   L    e Zd Zedeeej                          fd            ZdS )MagnificExtensionr   c                 F   K   t           t          t          t          t          gS r   )r6   r   r   r  rH  )selfs    r!   get_node_listzMagnificExtension.get_node_list  s!       ..*$)
 	
r#   N)	r   r   r   r   listtyper   	ComfyNoder\  r    r#   r!   rY  rY    sE        
T$r|*<%= 
 
 
 X
 
 
r#   rY  c                  "   K   t                      S r   )rY  r    r#   r!   comfy_entrypointra    s      r#   ),r+   typing_extensionsr   comfy_api.latestr   r   r   comfy_api_nodes.apis.magnificr   r   r	   r
   r   r   r   r   r   r   r   r   comfy_api_nodes.utilr   r   r   r   r   r   r   r   r   r   r/   floatr"   r*   r4   r_  r6   r   r   r  rH  rY  ra  r    r#   r!   <module>rg     s    & & & & & & 6 6 6 6 6 6 6 6 6 6                                                    %    - -c -# -RW - - - -p^ p^ p^ p^ p^ p^ p^ p^f]^ ]^ ]^ ]^ ]^ ]^ ]^ ]^@R^ R^ R^ R^ R^R\ R^ R^ R^jm^ m^ m^ m^ m^r| m^ m^ m^`J^ J^ J^ J^ J^BL J^ J^ J^Z	
 	
 	
 	
 	
 	
 	
 	
 1      r#   