CoolFace
Apppublic

fred-dev/comfy_ui_ali

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
utils.cpython-312.pyc340 linesDownload Raw Back to __pycache__
1�

2���gٵ��4�dZddlZddlZddlZddlZddlZddlZ	ddl3mZddlZddl
Z
ddlmZddlmZdZeej(d�r^Gd�d	�Zd4e_ddlmZddlmZdd
lmZddlmZej(j=eeeeeg�dZej>d�nej>d�d\d�Z d]d�Z!d^d�Z"d^d�Z#d�Z$d_d�Z%d�Z&d�Z'hd�Z(hd�Z)ddddd d!d"d#d$d%d&d'd(�Z*hd)�Z+d*�Z,d+�Z-d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:e-fd;d<e-fd=d>hZ.hd?�Z/d^d@�Z0hdA�Z1hdB�Z2d^dC�Z3d^dD�Z4d^dE�Z5d`dF�Z6dG�Z7dH�Z8dadI�Z9dJ�Z:dK�Z;dL�Z<dMe=fdN�Z>dO�Z?dP�Z@dQ�ZAdR�ZBej��dbdS��ZDdcdT�ZEdaFdU�ZGdaHdV�ZIGdW�dX�ZJdY�ZKdZej�fd[�ZMy)da�5    This file is part of ComfyUI.6    Copyright (C) 2024 Comfy7 8    This program is free software: you can redistribute it and/or modify9    it under the terms of the GNU General Public License as published by10    the Free Software Foundation, either version 3 of the License, or11    (at your option) any later version.12 13    This program is distributed in the hope that it will be useful,14    but WITHOUT ANY WARRANTY; without even the implied warranty of15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the16    GNU General Public License for more details.17 18    You should have received a copy of the GNU General Public License19    along with this program.  If not, see <https://www.gnu.org/licenses/>.20�N)�Image)�interpolate)�	rearrangeF�add_safe_globalsc��eZdZy)�ModelCheckpointN)�__name__�21__module__�__qualname__���V/Users/fredrodrigues/Library/CloudStorage/Dropbox/Code/comfyui_hardware/comfy/utils.pyrr"s��r
rz,pytorch_lightning.callbacks.model_checkpoint)�scalar)�dtype)�Float64DType)�encodeTz.Checkpoint files will always be loaded safely.z�Warning, you are using an old pytorch version and some ckpt/pt files might be loaded unsafely. Upgrading to 2.4 or above is recommended.c��|�tjd�}d}|j�jd�s|j�jd�rj	t	j22|d|j��5}i}|j�D]}|j|�||<�|r|j�}ddd�n�|strtj ||d��}23n&tj ||t"j$�
�}24d|25vrt'j(d|26d���d|27vr|28d}nDt|29�dk(r4t+|30j��d}|31|}t-|t.�s|32}n|33}|r|fSS#1swY��xYw#t$rl}t|j�dkDrM|jd}	d|	vrtdj|	|���d	|	vrtd34j|	|���|�d}~wwxYw)N�cpuz.safetensorsz.sft�pt)�	framework�devicer�HeaderTooLargez�{}35 36File path: {}37 38The safetensors file is corrupt or invalid. Make sure this is actually a safetensors file and not a ckpt or pt or other filetype.�MetadataIncompleteBufferz�{}39 40File path: {}41 42The safetensors file is corrupt/incomplete. Check the file size and make sure you have copied/downloaded it correctly.T)�map_location�weights_only)r�
pickle_module�global_stepz
Global Step: �43state_dict�)�torchr�lower�endswith�safetensors�	safe_open�type�keys�44get_tensor�metadata�	Exception�len�args�45ValueError�format�ALWAYS_SAFE_LOAD�load�comfy�checkpoint_pickle�logging�debug�list�46isinstance�dict)�ckpt�	safe_loadr�return_metadatar(�f�sd�k�e�message�pl_sd�keys            r�load_torch_filerA1s��
�~����e�$���H��z�z�|���^�,��47�48��0E�0E�f�0M�	��&�&�t�t�F�K�K�P�TU�������A��L�L��O�B�q�E�"�"� �z�z�|�H�Q���(��J�J�t�&�t�L�E��J�J�t�&��H_�H_�`�E��E�!��M�M�M�%�
�*>�)?�@�A��5� ��|�$�B��5�z�Q���5�:�:�<�(��+���3�Z��!�"�d�+��B���,�B��>�4�"�4�?Q�P���	��1�6�6�{�Q���&�&��)��#�w�.�$�&@�&G�&G�HO�QU�&V�W�W�-��8�$�&u�&|�&|�}D�FJ�&K�L�L��G��	�s1�"F49�;>E>�9F50�>F�F51�52	G?�A'G:�:G?c��|�#tjj|||��ytjj||�y)N)r()r#r �	save_file)r;r7r(s   r�save_torch_filerDXs9�������#�#�B��x�#�@����#�#�B��-r
c��d}|j�D],}|j|�s�||}||j�z
}�.|S�Nr)r&�53startswith�nelement)r;�prefix�paramsr<�ws     r�calculate_parametersrL^sC��
�F�
�W�W�Y���<�<����1��A��a�j�j�l�"�F���Mr
c��i}|j�D]S}|j|�s�||}|j|jd�|j	�z||j<�Ut|�dk(ryt
||j��S)Nr)r@)r&rG�getr�numelr*�max)r;rI�dtypesr<rKs     r�weight_dtyperRfsu��
�F�
�W�W�Y���<�<����1��A�$�j�j����!�4�q�w�w�y�@�F�1�7�7�O��54�6�{�a����v�6�:�:�&�&r
c�L�|D]}||vs�|j|�|||<� |S�N)�pop)r�keys_to_replace�xs   r�state_dict_key_replacerXrs3��
���55�?�-7�^�^�A�->�J��q�)�*���r
c�����|ri}n|}�D]Y�tt��fd�t�fd�|j����}|D]}|j	|d�}|||d<� �[|S)Nc�J��|dj��|t��d�fS)N�{}{})r-r*)�a�replace_prefix�rps ��r�<lambda>z+state_dict_prefix_replace.<locals>.<lambda>~s%���a����~�b�7I�1�S�QS�W�X�;�)W�%Xr
c�&��|j��SrT)rG)r\r^s �rr_z+state_dict_prefix_replace.<locals>.<lambda>~s���kl�kw�kw�xz�k{r
rr)r4�map�filterr&rU)rr]�filter_keys�out�replacerWrKr^s `     @r�state_dict_prefix_replacerfxs������������s�X�Z`�a{�~H�~M�~M�~O�[P�Q�R���A����q��t�$�A��C��!��I���56�Jr
c	�j�ddddd�}|D]>}|j|�}||vs�|j|�|||j|�<�@dddd	d57d�}t|�D]�}|D]M}dD]F}	d
j||||	�}dj|||||	�}58||vs�3|j|�||59<�H�OdD]y}	dj|||	�}||vs�|j|�}|jddz}
td�D].}gd�}dj|||||	�}60||
|z|
|dzz||61<�0�{��|S)Nz&{}embeddings.position_embedding.weightz#{}embeddings.token_embedding.weightz{}final_layer_norm.weightz{}final_layer_norm.bias)z{}positional_embeddingz{}token_embedding.weightz{}ln_final.weightz{}ln_final.bias�layer_norm1�layer_norm2zmlp.fc1zmlp.fc2zself_attn.out_proj)�ln_1�ln_2zmlp.c_fcz62mlp.c_projz
attn.out_proj��weight�biasz {}transformer.resblocks.{}.{}.{}z{}encoder.layers.{}.{}.{}z*{}transformer.resblocks.{}.attn.in_proj_{}r�)zself_attn.q_projzself_attn.k_projzself_attn.v_projr)r-rU�range�shape)r;�prefix_from�	prefix_to�numberrVr<rW�resblock_to_replace�resblock�y�k_to�k_from�weights�63shape_from�ps               r�transformers_convertr}�s���"J�$I�8�4�	�O���
�H�H�[�!����7�79�v�v�a�y�B��q�!�(�(��3�4������-����&�M��$�A�'��6�=�=�k�8�UV�XY�Z��2�9�9�)�X�Ob�cd�Oe�gh�i����7�!�v�v�a�y�B�t�H�	(�%�$�A�A�H�H��V^�`a�b�F���|��&�&��.��$�]�]�1�-��2�64��q��A�T�A�6�=�=�i��ST�UV�SW�YZ�[�D�&�z�!�|�J��A��4F�G�B�t�H�"�$�"�$�Ir
c�\�t||dj|�d�}dj|�}||vr#|j|�|dj|�<dj|�}||vrA|j|�jdd�j	�|dj|�<|S)Nz
{}text_model.� z{}text_projection.weightz{}text_projectionrr)r}r-rU�	transpose�65contiguous)r;rrrs�tps    r�clip_text_transformers_convertr��s���	�b�+��/E�/E�i�/P�RT�	U�B�	#�	*�	*�;�	7�B�	�R�x�;=�6�6�"�:��%�,�,�Y�7�8�	�	#�	#�K�	0�B�	�R�x�;=�6�6�"�:�;O�;O�PQ�ST�;U�;`�;`�;b��%�,�,�Y�7�8�
�Ir
>�	norm.bias�norm.weight�proj_in.bias�proj_in.weight�
proj_out.bias�proj_out.weight>�66norm3.bias�norm3.weight�attn1.to_k.weight�attn1.to_q.weight�attn1.to_v.weight�attn2.to_k.weight�attn2.to_q.weight�attn2.to_v.weight�67norm1.bias�68norm2.bias�norm1.weight�norm2.weight�
ff.net.2.bias�ff.net.2.weight�ff.net.0.proj.bias�attn1.to_out.0.bias�attn2.to_out.0.bias�ff.net.0.proj.weight�attn1.to_out.0.weight�attn2.to_out.0.weightzconv1.weightz69conv1.biasztime_emb_proj.weightztime_emb_proj.biaszconv2.weightz70conv2.biaszconv_shortcut.weightzconv_shortcut.biasr�r�r�r�)zin_layers.2.weightzin_layers.2.biaszemb_layers.1.weightzemb_layers.1.biaszout_layers.3.weightzout_layers.3.biaszskip_connection.weightzskip_connection.biaszin_layers.0.weightzin_layers.0.biaszout_layers.0.weightzout_layers.0.bias>�z71out.0.biaszconv_norm_out.bias�z72out.2.biasz
conv_out.bias�zout.0.weightzconv_norm_out.weight�zout.2.weightzconv_out.weight�ztime_embed.0.biasztime_embedding.linear_1.bias�ztime_embed.2.biasztime_embedding.linear_2.bias�ztime_embed.0.weightztime_embedding.linear_1.weight�ztime_embed.2.weightztime_embedding.linear_2.weight�zinput_blocks.0.0.biaszconv_in.bias�zinput_blocks.0.0.weightzconv_in.weight��label_emb.0.0.biaszadd_embedding.linear_1.bias�r�zclass_embedding.linear_1.bias��label_emb.0.2.biaszadd_embedding.linear_2.bias�r�zclass_embedding.linear_2.bias��label_emb.0.0.weightzadd_embedding.linear_1.weight�r�zclass_embedding.linear_1.weight��label_emb.0.2.weightzadd_embedding.linear_2.weight�r�zclass_embedding.linear_2.weightc��d|vriS|d}|d}|ddd}|ddd}t|�}|jdd�}i}t|�D�]}d||dz|zz}	t||�D]�}73tD]/}dj	|	|�|dj	||74t|�<�1|jd	�}|d	kDrttD](}d75j	|	|�|dj	||76|�<�*t|�D]5}
tD]*}dj	|	|
|�|d
j	||77|
|�<�,�7|	dz
}	��dD]'}dj	|	|�|dj	||�<�)��d	}78tD]&}dj	|�|dj	|79|�<�(t|�D]3}
tD](}dj	|
|�|dj	|80|
|�<�*�5td	dg�D]<\}81}	tD].}dj	|	|�|dj	|82t|�<�0�>tt|��}t|�D�]/}||dz|z}	||dz}t|�D�]83}84d	}tD]/}dj	|	|�|dj	||85t|�<�1|dz
}|j�}|d	kDry|dz
}tD](}dj	|	|�|dj	||86|�<�*t|�D]5}
tD]*}dj	|	|
|�|dj	||87|
|�<�,�7|88|dz89k(r-dD](}dj	|	||�|dj	||�<�*|	dz
}	��
��2tD]
}|d	||d<�|S) N�num_res_blocks�channel_mult�transformer_depth�transformer_depth_output�transformer_depth_middlerzinput_blocks.{}.0.{}zdown_blocks.{}.resnets.{}.{}rzinput_blocks.{}.1.{}zdown_blocks.{}.attentions.{}.{}z*input_blocks.{}.1.transformer_blocks.{}.{}z5down_blocks.{}.attentions.{}.transformer_blocks.{}.{}rlzinput_blocks.{}.0.op.{}z%down_blocks.{}.downsamplers.0.conv.{}zmiddle_block.1.{}zmid_block.attentions.{}.{}z'middle_block.1.transformer_blocks.{}.{}z0mid_block.attentions.{}.transformer_blocks.{}.{}�zmiddle_block.{}.{}zmid_block.resnets.{}.{}zoutput_blocks.{}.0.{}zup_blocks.{}.resnets.{}.{}zoutput_blocks.{}.1.{}zup_blocks.{}.attentions.{}.{}z+output_blocks.{}.1.transformer_blocks.{}.{}z3up_blocks.{}.attentions.{}.transformer_blocks.{}.{}zoutput_blocks.{}.{}.conv.{}z!up_blocks.{}.upsamplers.0.conv.{})r*rNrp�UNET_MAP_RESNETr-rU�UNET_MAP_ATTENTIONS�TRANSFORMER_BLOCKS�	enumerater4�reversed�UNET_MAP_BASIC)�unet_configr�r�r�r��90num_blocks�transformers_mid�diffusers_unet_maprW�n�i�b�num_transformers�tr<�l�cs                 r�unet_to_diffusersr��s����{�*��	� �!1�2�N��~�.�L�#�$7�8��;��*�+E�F�q�I���\�"�J�"���'A�4�H����
�:�
��
���"�Q�&�!�+�+���~�a�(�)�A�$��f|�gD�gD�EF�HI�gJ�"�#A�#H�#H��A��_`�Oa�#b�c�%�0�4�4�Q�7���!�#�,�A�\r�\y�\y�z{�}~�\�&�'H�'O�'O�PQ�ST�VW�'X�Y�-��/�0�A�/��zf�zm�zm�no�qr�tu�zv�*�+b�+i�+i�jk�mn�pq�st�+u�v�0�1�
��F�A�*�$�A�Wp�Ww�Ww�xy�{|�W}��F�M�M�a�QR�S�T�$�� 	91�A�
 ��H[�Hb�Hb�cd�He��7�>�>�q�!�D�E�!�
�#�
$��#�A�fO�fV�fV�WX�Z[�f\��Q�X�X�YZ�\]�_`�a�b�$�%��1�a�&�!���1� �A�Zn�Zu�Zu�vw�yz�Z{��8�?�?��?�ST�CU�V�W�!�"��(�>�2�3�N�
�:�
��
�A�
��
"�a�'���1���!���q��A��A�$��d{�eC�eC�DE�GH�eI�"�#?�#F�#F�q�!�_�]^�M_�#`�a�%�
��F�A�7�;�;�=���!�#��Q���,�A�Zq�Zx�Zx�yz�|}�Z~�&�'F�'M�'M�a�QR�TU�'V�W�-��/�0�A�/��xe�xl�xl�mn�pq�st�xu�*�+`�+g�+g�hi�kl�no�qr�+s�t�0�1��A��E�z�+�A�[x�[�[�AB�DE�GH�\I�&�'J�'Q�'Q�RS�UV�'W�X�,�
��F�A�!��*��#$�Q�4��1�Q�4� ���r
c�d�|jdd��\}}tj||gd��}|S)Nr�r��dim)�chunkr �cat)rm�shift�scale�92new_weights    r�swap_scale_shiftr�As2���<�<��q�<�)�L�E�5����E�5�>�q�1�J��r
)�context_embedder.biasr�)�context_embedder.weightr�)�t_embedder.mlp.0.bias�/time_text_embed.timestep_embedder.linear_1.bias)�t_embedder.mlp.0.weight�1time_text_embed.timestep_embedder.linear_1.weight)�t_embedder.mlp.2.bias�/time_text_embed.timestep_embedder.linear_2.bias)�t_embedder.mlp.2.weight�1time_text_embed.timestep_embedder.linear_2.weight�zx_embedder.proj.bias�pos_embed.proj.bias�zx_embedder.proj.weight�pos_embed.proj.weight)zy_embedder.mlp.0.bias�+time_text_embed.text_embedder.linear_1.bias)zy_embedder.mlp.0.weight�-time_text_embed.text_embedder.linear_1.weight)zy_embedder.mlp.2.bias�+time_text_embed.text_embedder.linear_2.bias)zy_embedder.mlp.2.weight�-time_text_embed.text_embedder.linear_2.weight)�	pos_embed�pos_embed.pos_embed�#final_layer.adaLN_modulation.1.bias�norm_out.linear.bias�%final_layer.adaLN_modulation.1.weight�norm_out.linear.weight�zfinal_layer.linear.biasr��zfinal_layer.linear.weightr�>�zx_block.mlp.fc1.biasr��zx_block.mlp.fc2.biasr��zx_block.attn.proj.bias�attn.to_out.0.bias�zx_block.mlp.fc1.weightr��zx_block.mlp.fc2.weightr��zx_block.attn2.proj.biasr��zx_block.attn.ln_k.weight�attn.norm_k.weight�zx_block.attn.ln_q.weight�attn.norm_q.weight�zx_block.attn.proj.weight�attn.to_out.0.weight�zx_block.attn2.ln_k.weightzattn2.norm_k.weight�zx_block.attn2.ln_q.weightzattn2.norm_q.weight�zx_block.attn2.proj.weightr��zcontext_block.mlp.fc1.bias�ff_context.net.0.proj.bias�zcontext_block.mlp.fc2.bias�ff_context.net.2.bias�zcontext_block.attn.proj.bias�attn.to_add_out.bias�zcontext_block.mlp.fc1.weight�ff_context.net.0.proj.weight�zcontext_block.mlp.fc2.weight�ff_context.net.2.weight�zcontext_block.attn.ln_k.weight�attn.norm_added_k.weight�zcontext_block.attn.ln_q.weight�attn.norm_added_q.weight�zcontext_block.attn.proj.weight�attn.to_add_out.weight�zx_block.adaLN_modulation.1.bias�norm1.linear.bias�z!x_block.adaLN_modulation.1.weight�norm1.linear.weight�z%context_block.adaLN_modulation.1.bias�norm1_context.linear.bias�z'context_block.adaLN_modulation.1.weight�norm1_context.linear.weightc	��i}|jdd�}|jd|�}t|�D�]�}dj|�}dj||�}|dz}dD�]N}	dj|�}93d	j||	�}|dd|ff|d94j|95|	�<|d||ff|dj|96|	�<|d|dz|ff|d
j|97|	�<dj||	�}|dd|ff|dj|98|	�<|d||ff|dj|99|	�<|d|dz|ff|dj|100|	�<dj|�}101dj||	�}|dd|ff|d102j|103|	�<|d||ff|dj|104|	�<|d|dz|ff|d
j|105|	�<��QtD]-}106dj||107d�|dj||108d�<�/���tj�}|j
dj|dz109�dj|dz110�tf�|j
dj|dz111�dj|dz112�tf�|D]M}113t|114�dkDr"dj||115d�d|116df||117d<�3dj||118d�||119d<�O|S)N�depthrr��transformer_blocks.{}z{}joint_blocks.{}�@rl�{}.attn.z{}.x_block.attn.qkv.{}�	{}to_q.{}�	{}to_k.{}r��	{}to_v.{}z{}.context_block.attn.qkv.{}�{}add_q_proj.{}�{}add_k_proj.{}�{}add_v_proj.{}�	{}.attn2.z{}.x_block.attn2.qkv.{}�{}.{}rz5joint_blocks.{}.context_block.adaLN_modulation.1.biasz/transformer_blocks.{}.norm1_context.linear.biasz7joint_blocks.{}.context_block.adaLN_modulation.1.weightz1transformer_blocks.{}.norm1_context.linear.weightr[)	rNrpr-�MMDIT_MAP_BLOCK�MMDIT_MAP_BASIC�copy�addr�r*)
�mmdit_config�
output_prefix�key_maprr�r��120block_from�block_to�offset�endr<�qkv�	map_basics
             r�mmdit_to_diffusersr2usr���G����W�a�(�E��!�!�,��6�J�
�:�
��,�3�3�A�6�121�&�-�-�m�Q�?������%�C��!�!�*�-�A�*�1�1�(�C�@�C�36��A�v��2G�G�K�&�&�q�#�.�/�36��F�F�8K�2L�G�K�&�&�q�#�.�/�36��F�Q�J��8O�2P�G�K�&�&�q�#�.�/�0�7�7��#�F�C�9<�q�!�V�n�8M�G�%�,�,�Q��4�5�9<�q�&�&�>Q�8R�G�%�,�,�Q��4�5�9<�q�&�1�*�f�>U�8V�G�%�,�,�Q��4�5��"�"�:�.�A�+�2�2�8�S�A�C�36��A�v��2G�G�K�&�&�q�#�.�/�36��F�F�8K�2L�G�K�&�&�q�#�.�/�36��F�Q�J��8O�2P�G�K�&�&�q�#�.�/�!&�$!�A�8?���x�QR�ST�QU�8V�G�G�N�N�:�q��t�4�5�!�1�6 �$�$�&�I�
�M�M�J�Q�Q�RW�Z[�R[�\�_P�_W�_W�X]�`a�Xa�_b�dt�u�v�
�M�M�L�S�S�TY�\]�T]�^�aT�a[�a[�\a�de�\e�af�hx�y�z�
���q�6�A�:�#�]�]�=�!�A�$�?��q��t�L�G�A�a�D�M�"�M�M�-��1��>�G�A�a�D�M�	��Nr
>�zt_block.1.biaszadaln_single.linear.bias�zt_block.1.weightzadaln_single.linear.weight�zar_embedder.mlp.0.biasz4adaln_single.emb.aspect_ratio_embedder.linear_1.bias�zar_embedder.mlp.2.biasz4adaln_single.emb.aspect_ratio_embedder.linear_2.bias�zy_embedder.y_embeddingzcaption_projection.y_embedding�zar_embedder.mlp.0.weightz6adaln_single.emb.aspect_ratio_embedder.linear_1.weight�zar_embedder.mlp.2.weightz6adaln_single.emb.aspect_ratio_embedder.linear_2.weight�zcsize_embedder.mlp.0.biasz2adaln_single.emb.resolution_embedder.linear_1.bias�zcsize_embedder.mlp.2.biasz2adaln_single.emb.resolution_embedder.linear_2.bias�zy_embedder.y_proj.fc1.biasz caption_projection.linear_1.bias�zy_embedder.y_proj.fc2.biasz caption_projection.linear_2.bias�zcsize_embedder.mlp.0.weightz4adaln_single.emb.resolution_embedder.linear_1.weight�zcsize_embedder.mlp.2.weightz4adaln_single.emb.resolution_embedder.linear_2.weight�zy_embedder.y_proj.fc1.weightz"caption_projection.linear_1.weight�zy_embedder.y_proj.fc2.weightz"caption_projection.linear_2.weight�zfinal_layer.scale_shift_table�scale_shift_table�r�z0adaln_single.emb.timestep_embedder.linear_1.bias�r�z0adaln_single.emb.timestep_embedder.linear_2.bias�r�z2adaln_single.emb.timestep_embedder.linear_1.weight�r�z2adaln_single.emb.timestep_embedder.linear_2.weightr�r�r�r�>	�zmlp.fc1.biasr��zmlp.fc2.biasr��zattn.proj.biasr��zmlp.fc1.weightr��zmlp.fc2.weightr��zattn.proj.weightr��zcross_attn.proj.biasr��zcross_attn.proj.weightr��rCrCc	�f�i}|jdd�}|jdd�}t|�D�]U}dj|�}dj||�}dD]�}dj|�}	d	j||�}122|123dd|ff|d124j|	|�<|125d||ff|dj|	|�<|126d|dz|ff|d
j|	|�<dj|�}	dj||�}dj||�}||d127j|	|�<|dd|ff|dj|	|�<|d||ff|d
j|	|�<��tD]-}
dj||
d�|dj||
d�<�/��XtD]}
dj||
d�||
d<�|S)Nrr�hidden_sizei�rz{}blocks.{}rlz	{}.attn1.z{}.attn.qkv.{}rrr�rr#z{}.cross_attn.q_linear.{}z{}.cross_attn.kv_linear.{}r$rr[)rNrpr-�PIXART_MAP_BLOCK�PIXART_MAP_BASIC)r)r*r+rr.r�r,r-r/�sr0�q�kvr<s              r�pixart_to_diffusersrX�s����G����W�a�(�E�
�
�
�m�T�
2�F�
�5�\��,�3�3�A�6�128� �'�'�
�q�9��%�C��"�"�:�.�A�"�)�)�(�C�8�C�36��A�v��2G�G�K�&�&�q�#�.�/�36��F�F�8K�2L�G�K�&�&�q�#�.�/�36��F�Q�J��8O�2P�G�K�&�&�q�#�.�/��"�"�:�.�A�+�2�2�8�S�A�A�-�4�4�X�s�C�B�23�G�K�&�&�q�#�.�/�35��1�f�~�2F�G�K�&�&�q�#�.�/�35��6�6�7J�2K�G�K�&�&�q�#�.�/�&�"�A�8?���x�QR�ST�QU�8V�G�G�N�N�:�q��t�4�5�"�'�,���
�
�m�Q�q�T�:���!��
���Nr
c
��|jdd�}|jdd�}i}t|�D]�}||krH|}d}dj|�}idd�dd	�d129d�dd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�}	n#||z130}d&}d'j|�}ddddd(d)d*d+d,�}	|	D],}131d-j|||	|132�|d-j|||133�<�.��d.d/d0d1d2d3d4d5d6d7d8d9tfh}|D]M}134t	|135�d:kDr"d;j||136d�d|137d:f||138d<<�3d;j||139d�||140d<<�O|S)=N�n_double_layersr�n_layers�joint_transformer_blocksz{}double_layers�attn.to_q.weightzattn.w2q.weight�attn.to_k.weightzattn.w2k.weight�attn.to_v.weightzattn.w2v.weightr�zattn.w2o.weightzattn.add_q_proj.weightzattn.w1q.weightzattn.add_k_proj.weightzattn.w1k.weightzattn.add_v_proj.weightzattn.w1v.weightrzattn.w1o.weight�ff.linear_1.weightzmlpX.c_fc1.weight�ff.linear_2.weightzmlpX.c_fc2.weight�ff.out_projection.weightzmlpX.c_proj.weightzff_context.linear_1.weightzmlpC.c_fc1.weightzff_context.linear_2.weightzmlpC.c_fc2.weightz ff_context.out_projection.weightzmlpC.c_proj.weightrz
modX.1.weightrz
modC.1.weight�single_transformer_blocksz{}single_layerszmodCX.1.weightzmlp.c_fc1.weightzmlp.c_fc2.weightzmlp.c_proj.weight)r]r^r_r�rr`rarbz{}.{}.{})�positional_encodingr�)�register_tokensre)r�ztime_step_proj.linear_1.weight)r�ztime_step_proj.linear_1.bias)r�ztime_step_proj.linear_2.weight)r�ztime_step_proj.linear_2.bias)zcond_seq_linear.weightr�)zinit_x_linear.weightr�)zinit_x_linear.biasr�)zfinal_linear.weightr�z
modF.1.weightr�r�r[r�rNrpr-r�r*)r)r*rZr[r+r��indexrrrs�	block_mapr<�	MAP_BASICs            r�auraflow_to_diffusersrj�sC��"�&�&�'8�!�<�O����141�A�.�H��G�
�8�_������E�4�K�)�0�0��?�I��.�0A��.�0A��/�0A��3�4E�	�1425�6G��5�6G�
�5�6G��5�6G��1�2E��1�2E��7�8L��9�:M��9�:M��?�@T��2�?�� :�?�!�I�&��'�E�5�K�)�0�0��?�I�1B�0A�0A�4E�3C�2D�2D�8K�	�I��A�@J�@Q�@Q�R[�]b�dm�no�dp�@q�G�J�%�%�k�5�!�<�=��O�V	7�.�E�A�E�A�=�9�5�2�	�2�4D�E��I����q�6�A�:�#�]�]�=�!�A�$�?��q��t�L�G�A�a�D�M�"�M�M�-��1��>�G�A�a�D�M�	��Nr
c��|jdd�}|jdd�}|jdd�}i}t|�D�]}dj|�}dj||�}dD]�}	dj|�}143d	j||	�}|dd|ff|d144j|145|	�<|d||ff|dj|146|	�<|d|dz|ff|d
j|147|	�<dj|�}148dj||	�}|dd|ff|dj|149|	�<|d||ff|dj|150|	�<|d|dz|ff|dj|151|	�<��idd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�d&d'�d(d)�d*d+�d,d-�d.d/�d0d1�d2d3�d4d5d6d7��}|D]*}152d8j|||153�|d8j||154�<�,���t|�D]�}d9j|�}d:j||�}dD]�}	dj|�}155d;j||	�}|dd|ff|d156j|157|	�<|d||ff|dj|158|	�<|d|dz|ff|d
j|159|	�<|d|d<z|d=zff|d>j||	�<��d?d@dAdBdCdDdE�}|D]*}160d8j|||161�|d8j||162�<�,��dFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYtfdZd[tfd\d]h}
|
D]M}163t	|164�dkDr"d^j||165d�d|166df||167d_<�3d^j||168d�||169d_<�O|S)`Nrr�depth_single_blocksrRrz{}double_blocks.{}rlrz{}.img_attn.qkv.{}rrr�rz{}.txt_attn.qkv.{}r r!r"r�zimg_attn.proj.weightr�zimg_attn.proj.biasrzimg_mod.lin.weightrzimg_mod.lin.biasrztxt_mod.lin.weightrztxt_mod.lin.biasrztxt_attn.proj.weightrztxt_attn.proj.biasr�zimg_mlp.0.weightr�zimg_mlp.0.biasr�zimg_mlp.2.weightr�zimg_mlp.2.biasrztxt_mlp.0.weightrztxt_mlp.0.biasr	ztxt_mlp.2.weightrztxt_mlp.2.biasr�zimg_attn.norm.query_norm.scalezimg_attn.norm.key_norm.scaleztxt_attn.norm.query_norm.scaleztxt_attn.norm.key_norm.scale)r�r
rr$zsingle_transformer_blocks.{}z{}single_blocks.{}z
{}.linear1.{}ro�z{}.proj_mlp.{}zmodulation.lin.weightzmodulation.lin.biaszlinear2.weightzlinear2.biasznorm.query_norm.scaleznorm.key_norm.scale)znorm.linear.weightznorm.linear.biasr�r�r�r�r�r�)zimg_in.biaszx_embedder.bias)z
img_in.weightzx_embedder.weight)ztime_in.in_layer.biasr�)ztime_in.in_layer.weightr�)ztime_in.out_layer.biasr�)ztime_in.out_layer.weightr�)ztxt_in.biasr�)z
txt_in.weightr�)zvector_in.in_layer.biasr�)zvector_in.in_layer.weightr�)zvector_in.out_layer.biasr�)zvector_in.out_layer.weightr�)zguidance_in.in_layer.biasz/time_text_embed.guidance_embedder.linear_1.bias)zguidance_in.in_layer.weightz1time_text_embed.guidance_embedder.linear_1.weight)zguidance_in.out_layer.biasz/time_text_embed.guidance_embedder.linear_2.bias)zguidance_in.out_layer.weightz1time_text_embed.guidance_embedder.linear_2.weightr�r�r�r�)zpos_embed_input.biaszcontrolnet_x_embedder.bias)zpos_embed_input.weightzcontrolnet_x_embedder.weightr[rrf)r)r*rZ�n_single_layersrRr+rgrrrsr/r<r0rhris              r�flux_to_diffusersro.s���"�&�&�w��2�O�"�&�&�'<�a�@�O��"�"�=�!�4�K��G���'��-�4�4�U�;��(�/�/�
�u�E�	�%�C��!�!�+�.�A�&�-�-�i��=�C�36��A�{�8K�2L�G�K�&�&�q�#�.�/�36��K��8U�2V�G�K�&�&�q�#�.�/�36��K�!�O�[�8Y�2Z�G�K�&�&�q�#�.�/��!�!�+�.�A�&�-�-�i��=�C�9<�q�!�[�>Q�8R�G�%�,�,�Q��4�5�9<�q�+�{�>[�8\�G�%�,�,�Q��4�5�9<�q�+�PQ�/�S^�>_�8`�G�%�,�,�Q��4�5�&��.�0F��,�.B��.�/C��,�-?�	�1706�7K��4�5G�
�1�2H��/�0D��/�0B��-�.>��*�+=��(�)9��7�8J��5�6F��2�3E�� 0�1A�!�"-�.N�#�$/M�4T�4R�)�	�.�A�6=�n�n�Y�PY�Z[�P\�6]�G�G�N�N�;��2�3��Q(�V��'��4�;�;�E�B��(�/�/�
�u�E�	�%�C��!�!�+�.�A�!�(�(��C�8�C�36��A�{�8K�2L�G�K�&�&�q�#�.�/�36��K��8U�2V�G�K�&�&�q�#�.�/�36��K�!�O�[�8Y�2Z�G�K�&�&�q�#�.�/�BE��;�YZ�?�\g�jk�\k�Gl�Am�G�$�+�+�K��=�>�
&�/F�,A�+;�)7�.E�.C�
�	��A�6=�n�n�Y�PY�Z[�P\�6]�G�G�N�N�;��2�3��+(�2	5�8�*�.�T�X�U�Y�0�4�R�V�S�W�X�\�Y�]�	.�0F�HX�Y�	0�2J�L\�]�>�B�-�I�2���q�6�A�:�#�]�]�=�!�A�$�?��q��t�L�G�A�a�D�M�"�M�M�-��1��>�G�A�a�D�M�	��Nr
c�N�|j||kDr|j|d|�S|j||krm|j|dgztj||j|z�gzdgt|j�dz171|z172zz�j|d|�S|S)Nrr)rq�narrow�repeat�math�ceilr*)�tensor�173batch_sizer�s   r�repeat_to_batch_sizerw�s���
�|�|�C��:�%��}�}�S�!�Z�0�0�	���c�	�Z�	'��}�}�S�A�3�Y�$�)�)�J����c�AR�4R�*S�)T�T�XY�WZ�^a�bh�bn�bn�^o�rs�^s�vy�^y�Wz�z�{�C�C�DG�IJ�LV�W�	W��Mr
c���|jd}||k(r|S|dkr|d|Stj|gt|j�ddz|j|j174��}||kr>|dz175|dz176z}t
|�D]#}|tt||z�|dz177�||<�%|S||z}t
|�D]0}|ttj|dz|z�|dz178�||<�2|S)Nrr�rrg�?)rqr �emptyr4rrrp�min�roundrs�floor)rurv�
in_batch_size�outputr�r�s      r�resize_to_batch_sizer��s���L�L��O�M��179�"��
��Q���k�z�"�"�
�[�[�*���V�\�\�(:�1�2�(>�>�f�l�l�[a�[h�[h�
i�F��M�!���"�z�A�~�6���z�"�A��s�5��U��#3�]�Q�5F�G�H�F�1�I�#��M�	�180�*���z�"�A��s�4�:�:�q�3�w�%�.?�#@�-�RS�BS�T�U�F�1�I�#��Mr
c�t�t|j��}|D]}||j|�||<�|SrT)r4r&�to)rrr&r<s    r�
convert_sd_tor��s;���181���!�"�D�
��"�1�
�(�(��/�182�1�
���r
c���t|d�5}|jd�}tjd|�d}||kDr183	ddd�y|j|�cddd�S#1swYyxYw)N�rb�z<Qr)�open�read�struct�unpack)�safetensors_path�max_sizer:�header�length_of_headers     r�safetensors_headerr��s`��	
���	%��������!�=�=��v�6�q�9���h�&��	184&�	%�185�v�v�&�'�186&�	%�	%�s�1A!�A!�!A*c��|jd�}|ddD]}t||�}�t||d�}t||d|�|S�N�.�����)�split�getattr�setattr��obj�attr�value�attrs�name�prevs      r�set_attrr��sP���J�J�s�O�E��c�r�187���c�4� ����3��b�	�"�D��C��r��E�"��Kr
c�Z�t||tjj|d���S)NF)�
requires_grad)r�r �nn�	Parameter)r�r�r�s   r�set_attr_paramr��s%���C��u�x�x�1�1�%�u�1�M�N�Nr
c��|jd�}|ddD]}t||�}�t||d�}|jj|�yr�)r�r��data�copy_r�s      r�
copy_to_paramr��sK���J�J�s�O�E��c�r�188���c�4� ����3��b�	�"�D��I�I�O�O�E�r
r�c�N�|jd�}|D]}t||�}�|S)aERetrieves a nested attribute from an object using dot notation.189 190    Args:191        obj: The object to get the attribute from192        attr (str): The attribute path using dot notation (e.g. "model.layer.weight")193 194    Returns:195        The value of the requested attribute196 197    Example:198        model = MyModel()199        weight = get_attr(model, "layer1.conv.weight")200        # Equivalent to: model.layer1.conv.weight201 202    Important:203        Always prefer `comfy.model_patcher.ModelPatcher.get_model_object` when204        accessing nested model objects under `ModelPatcher.model`.205    r�)r�r�)r�r�r�r�s    r�get_attrr��s,��&
�J�J�s�O�E����c�4� ����Jr
c��d�}d�}|j}|j�}|j\}}}}	||}}206||	||j�\}}
}|
j	|||df�}
|j	|||df�}|j	|d|df�}|jd|
�j
dd�jd|f�}|jd|�j
dd�jd|f�}|j
dd�jd�}||||�}|j||||�j
dd�}|||207|j�\}}
}|
jd�j	||d|f�}
|jd�j	||d|f�}|jd�j	|dd|f�}|jd|
�j
dd�jd|f�}|jd|�j
dd�jd|f�}|j
dd�jd�}||||�}|j||208||�j
dd�}|j|�S)Nc���|jd}tj|dd��}tj|dd��}||z}||z}d||jd|�dk(<d||jd|�dk(<||zj	d�}tj209|�}	tj|	�}210tjd|jd�z211|	z�|212zjd�|ztj|jd�|	z�|213zjd�|zz}||d|z214z||zzjd|�z}||dkD||dkD<|d|z215z||zz|dk||dk<|S)	zKslerps batches b1, b2 according to ratio r, batches should be flat e.g. NxCr�T)r��keepdimgrg�?gwJ���?gwJ���)	rqr �norm�expand�sum�acos�sin�squeeze�	unsqueeze)�b1�b2�rr��b1_norms�b2_norms�
b1_normalized�
b2_normalized�dot�omega�so�ress            r�slerpzbislerp.<locals>.slerp�s���
�H�H�R�L���:�:�b�b�$�7���:�:�b�b�$�7���X�
�
��X�
�
�7:�
�h�o�o�b��+�s�2�3�69�
�h�o�o�b��+�s�2�3��]�*�/�/��2���216�217�3���
�Y�Y�u�
���y�y�#�a�i�i��l�*�E�1�2�2�5�@�@��C�M�Q�UZ�U^�U^�_`�_h�_h�ij�_k�lq�_q�Ur�su�Uu�UA�UA�BC�UD�GT�UT�T����C��E�"�X��\�1�9�9�"�Q�?�?��!��x��0��C�(�N��!�S��U�|�b�1�f�4�c�H�n�E��C�(�N���218r
c�n�tj|tj|��jd�}tjj219j
|d|fd��}||j�z220}|jtj�}tj|tj|��jd�dz}|dd�dd�dd�dfxxdzcc<tjj221j
|d|fd��}|jtj�}|||fS)Nry)rrrr�r�bilinear��size�moder�)222r �arange�float32�reshaper��223functionalrr}r��int64)�224length_old�225length_newr�coords_1�ratios�coords_2s      r�generate_bilinear_dataz'bislerp.<locals>.generate_bilinear_datas����<�<�226�%�-�-��O�W�W�Xb�c���8�8�&�&�2�2�8�1�j�/�Xb�2�c���H�N�N�,�,���;�;�u�{�{�+���<�<�227�%�-�-��O�W�W�Xb�c�fg�g����1�Q�r���a����8�8�&�&�2�2�8�1�j�/�Xb�2�c���;�;�u�{�{�+���x��)�)r
r�r)r�r)rrr�r�����)	r�floatrqrr��gather�movedimr�r�)�samples�width�heightr�r��228orig_dtyper�r��hrK�h_new�w_newr�r�r��pass_1�pass_2�results                  r�bislerpr��sq���>229*����J��m�m�o�G��m�m�G�A�a��!��E�5�E�"8��5�'�.�.�!Q��F�H�h�����1�a��}�-�H�����1�a��}�-�H�
�]�]�A�q�!�R�=�
)�F�
�^�^�B�x�
(�
0�
0��B�
7�
?�
?��A��
G�F�
�^�^�B�x�
(�
0�
0��B�
7�
?�
?��A��
G�F�
�^�^�A�r�
"�
*�
*�6�
2�F�
�6�6�6�
*�F�
�^�^�A�q�%��
+�
3�
3�B��
:�F�"8��5�'�.�.�!Q��F�H�h����230�+�2�2�A�q�"�e�3D�E�H����231�+�2�2�A�q�"�e�3D�E�H�
�^�^�J�
'�
.�
.��1�b�%�/@�
A�F�
�]�]�2�h�
'�
/�
/��2�
6�
>�
>��1�v�
F�F�
�]�]�2�h�
'�
/�
/��2�
6�
>�
>��1�v�
F�F�
�^�^�A�r�
"�
*�
*�6�
2�F�
�6�6�6�
*�F�
�^�^�A�u�e�Q�
/�
7�
7��A�
>�F��9�9�Z� � r
c���|D�cgc]x}tjtjd|j	dd�j�j
�zdd�jtj����z}}|D�cgc]/}|j||ftjj����1}}|D�cgc]Z}tjtj|�jtj�dz�j	dd���\}}tj |�}|j#|j$|j&�Scc}wcc}wcc}w)Ng�o@rr���)�resample)r�	fromarray�np�clipr�r�numpy�astype�uint8�resize�232Resampling�LANCZOSr �233from_numpy�arrayr��stackr�rr)r�r�r��image�imagesr�s      r�lanczosr�8s��x�A�x�ot�e�o�o�b�g�g�d�U�]�]�1�b�-A�-E�-E�-G�-M�-M�-O�&O�QR�TW�X�_�_�`b�`h�`h�i�j�x�F�A�\b�
c�\b�SX�e�l�l�E�6�?�U�5E�5E�5M�5M�l�N�\b�F�
c�gm�
n�gm�^c�e���r�x�x���5�5�b�j�j�A�E�I�J�R�R�SU�WX�Y�gm�F�
n�
�[�[��
 �F��9�9�W�^�^�W�]�]�3�3��	A��
c��
ns�A=E�4E#�AE(c���t|j�}t|�dkDrx|j|jd|jdd|jd|jd�}|j	dd�}|jd|d|d|d�}|dk(r�|jd}|jd}||z}||z}	d}234d}||	kDrt|||	|zzz235dz�}236n||	krt||||	zzz237dz�}|j
d|||dzz238�j
d|239||240dzz241�}n|}|dk(rt|||�}
nA|d	k(rt|||�}
n.tjjj|||f|�242�}
t|�dk(r|
S|
j|dd|df||fz�}
|
j	dd�j|dd||fz�S)Nrmrrr�r�r��centerr�r�r�)
�tuplerqr*r�r�r|rqr�r�r r�r�r)r�r�r��upscale_method�crop�243orig_shape�	old_width�244old_height�245old_aspect�246new_aspectrWrwrUrds              r�common_upscaler�?s247���7�=�=�)�248��z�?�Q���o�o�g�m�m�A�&6��
�
�a�8H�"�g�m�m�\^�N_�ah�an�an�oq�ar�s�G��o�o�a��+�G��o�o�b�*�Q�-��B���TV��X�G��8���
�
�b�)�I� ���r�*�J�"�Z�/�J����J��A��A��J�&��9�y�J��4K�'L�L�PQ�Q�R���j�(��:�249�j�:�6M�(N�N�RS�S�T�����r�1�j�1�q�5�&8�9�@�@��Q�	�TU�XY�TY�HY�Z�A��A��Y�&��!�U�F�+�C�
�y�
(��!�U�F�+�C��(�(�%�%�1�1�!�6�5�/�P^�1�_�C��z�?�a���J��k�k�:�a�=�"�j��m�<����N�O���{�{�1�a� �(�(��C�R��F�E�?�)J�K�Kr
c��||krdntj||z250||z251z�}||krdntj||z252||z253z�}||zS)Nr)rsrt)r�r��tile_x�tile_y�overlap�rows�colss       r�get_tiled_scale_stepsrasV���&� �1�d�i�i��'�1A�f�w�FV�0W�&X�D����1�T�Y�Y����F�W�DT�/U�%V�D��$�;�r
c254�����#�$�t��}255t�ttf�s�g|256z�t|ttf�s|g|257z}����t�ttf�s�g|258z��fd�}�fd�}�fd�}
�fd�}|r|�#|}n|�#|
}�#fd�}t	j259|jd|g||jdd�z|��}t|jd�D�]l}|||d	z�$t�$�fd260�t|261�D��r1|�$�j|�|||d	z|	�|	jd	��[t	j�$jd|g|�$jdd�z|��}t	j�$jd|g|�$jdd�z|��}t|262�D�cgc]I}�$j|dz�|kDr,td�$j|dz||z263�|||z264�ndg��K}}tj|�D�]}�$}g}t|265�D]�}tdt�$j|dz||z266||��}t�|�$j|dz|z267�}|j!|dz||�}|j#t%|||�����||�j|�}t	j&|�}td|268dz�D]�}t%�#|dz269||dz270��}||j|k\r�1t|�D]a}|d	z|z} |j!||d	�j)| �|j!||j|d	z271|z272d	�j)| ��c��|}!|}"t|273�D]T}|!j!|dz|||j|dz�}!|"j!|dz|||j|dz�}"�V|!j+||z�|"j+|�|	���|	jd	���||z|||d	z��o|Scc}w)Nc�>���|}t|�r||�S||zSrT��callable�r��val�up�upscale_amounts   �r�get_upscalez)tiled_scale_multidim.<locals>.get_upscalev�&���
�C�
 ���B�<��c�7�N���8�Or
c�>���|}t|�r||�S||zSrTrrs   �r�
get_downscalez+tiled_scale_multidim.<locals>.get_downscale}�&���
�C�
 ���B�<��c�7�N���8�Or
c�>���|}t|�r||�S||zSrTr�r�rr	�index_formulass   �r�get_upscale_posz-tiled_scale_multidim.<locals>.get_upscale_pos�rr
c�>���|}t|�r||�S||zSrTrrs   �r�get_downscale_posz/tiled_scale_multidim.<locals>.get_downscale_pos�rr
c274���g}tt|��D]&}|jt�|||����(|SrT)rpr*�appendr|)r\rdr��	get_scales   �r�mult_list_upscalez/tiled_scale_multidim.<locals>.mult_list_upscale�s;������s�1�v��A��J�J�u�Y�q�!�A�$�/�0�1���275r
rr�)rrc3�N�K�|]}�j|dz�|k���y�w)r�N)rq)�.0�drU�tiles  ��r�	<genexpr>z'tiled_scale_multidim.<locals>.<genexpr>�s'�����<��1�q�w�w�q��s�|�t�A�w�&��s�"%)r*r5r�r4r rzrqrp�allr��update�zeros�	itertools�productrPr{rqrr|�	ones_like�mul_�add_)%r��functionrr�r276�out_channels�
output_device�	downscaler�pbar�dimsrrrr�get_posrrr�rd�out_divr�	positions�it�s_in�upscaled�posr��ps�mask�featherr�r\�o�o_drrUs%  ` `   `                          @@r�tiled_scale_multidimr9fsd����t�9�D��~��t�}�5�(�)�D�0���w���
�.��)�d�"����'���~��t�}�5�(�)�D�0�������!�	�#���	�!����[�[�'�-�-��*�L�9�<M�g�m�m�\]�\^�N_�<`�`�iv�
w�F�
�7�=�=��#�
$���A�a��c�N���<��d��<�<�$�Q�K�N�N�=�9�F�1�Q�q�S�M������A����k�k�1�7�7�1�:�|�4�7H����QR�QS��7U�U�^k�l���+�+�q�w�w�q�z�<�8�;L�Q�W�W�UV�UW�[�;Y�Y�bo�p��|A�BF�|G�H�|G�vw�RS�RY�RY�Z[�\]�Z]�R^�ae�fg�ah�Rh�U�1�a�g�g�a��c�l�W�Q�Z�7��a��7�1�:�9M�N�op�nq�q�|G�	�H��#�#�Y�/�B��D��H��4�[���!�S�����Q���'�!�*�!<�b��e�D�E����Q������Q���#�!5�6���{�{�1�q�5�#�q�1������g�a��o� 6�7�	!��$��"�"�=�1�B��?�?�2�&�D��1�d�Q�h�'���	�!�a�%���Q��� @�A���d�j�j��m�+���w��A��Q��'�)�A��K�K��1�a�(�-�-�a�0��K�K��4�:�:�a�=�1�#4�q�#8�!�<�A�A�!�D�(�	(��A��C��4�[���H�H�Q��U�H�Q�K����A��E�1B�C���j�j��Q�����T�Z�Z��A��5F�G��!�
�F�F�2��9���H�H�T�N������A��A0�D�G���q��1��
�c%�d�M��KHs�AQc	277�,�t||||f|||||��S)N)r�r278r(r)r+)r9)	r�r'r�r�r�r279r(r)r+s	         r�tiled_scaler;�s6�����F�F�3C�W�es�CO�_l�sw�x�xr
c��|ayrT)�PROGRESS_BAR_ENABLED)�enableds r�set_progress_bar_enabledr?�s��"�r
c��|ayrT)�PROGRESS_BAR_HOOK)r's r�set_progress_bar_global_hookrB�s�� �r
c� �eZdZd�Zdd�Zd�Zy)�ProgressBarc�6�||_d|_t|_yrF)�total�currentrA�hook)�selfrFs  r�__init__zProgressBar.__init__�s����280����%��	r
Nc���|�||_||jkDr|j}||_|j�(|j|j|j|�yyrT)rFrGrH)rIr�rF�previews    r�update_absolutezProgressBar.update_absolute�sR�����D�J��4�:�:���J�J�E�����9�9� ��I�I�d�l�l�D�J�J��8�!r
c�@�|j|j|z�yrT)rMrG)rIr�s  rr zProgressBar.update�s�����T�\�\�E�1�2r
)NN)r	r281rrJrMr rr
rrDrD�s��&�9�3r
rDc�0�t|�dz282}|dk(rd}|dk(r1|jdd|jd|jdf�}d}|dk(rJt|j�dkr0|jddd|jd|jdf�}d	}tjj283j
||dd�284�}|jd|dkr(|jd|dfd|zz�dd�d|d�f}t||d�}|S)
Nr�r�linearr�r�r�ro��	trilinearr�)rr)	r*r�rqr r�r�rrrrw)�285input_mask�output_shaper,�286scale_moder5s     r�reshape_maskrV�s0���|��q� �D��q�y��287��q�y��'�'��Q�288�0@�0@��0D�j�FV�FV�WY�FZ�([�\�289��290��q�y��z��� �1�$�#�+�+�Q��2�z�7G�7G��7K�Z�M]�M]�^`�Ma�,b�c�J� �291��8�8���*�*�:�L���<L�S]�*�^�D��z�z�!�}�|�A��&��{�{�A�|�A��/�$��+�=�>�q�AQ�,�q�/�AQ�?Q�R����l�1�o�6�D��Kr
r5c�0�|\}}|\}}||f||fk(r|S|jdk(r|jd�}|jdk7r"tdt|j��d���|jd||zz292}|dd�d|�d|�f}|dd�d|�|d�f}	|dd�|d�|d�f}293|dd�|d�d|�f}t|	d||��}	t
|	|d	�294�}	t|	d�}	t|295d||��}296t
|297|d	�298�}299t|300d
||��}301t
|302|d	�303�}304t|305d||��}306t|d||��}t
||d	�307�}t|d�}tjtj||	gd��tj||308gd��gd��}|S)Nr�rrozGot a mask of shape z, expected [b, q, k] or [q, k]rzb t (h w) -> b t h w)r�rKr�r�zb t h w -> b t (h w)zb hw (h w) -> b hw h wz"b (hk wk) hq wq -> b (hq wq) hk wk)�hk�wkz$b (hq wq) hk wk -> b (hk wk) (hq wq))�hq�wqzb (h w) t -> b t h wzb t h w -> b (h w) tr�)	�ndimr�r,r4rqrrr r�)
r5�img_size_in�img_size_out�hi�wi�ho�wo�309txt_tokens�310txt_to_txt�311txt_to_img�312img_to_img�313img_to_txtrds
             r�upscale_dit_maskrh314s������B����B���8��B�x���K��9�9��>��>�>�!�$�D��9�9��>��3�D����4D�3E�Ec�d�e�e��Z�Z��]�b�2�g�.�315��!�[�j�[�+�:�+�5�6�316��!�[�j�[�*�+�5�6�317��!�Z�[�*�+�5�6�318��!�Z�[�+�:�+�5�6�319���-C�r�R�P�320� ��,�Z�P�321���-C�D�322���-E��r�R�323� ��,�Z�P�324���-Q�VX�]_�`�325� ��,�Z�P�326���-S�XZ�_a�b�327���-C�r�R�P�328� ��,�Z�P�329���-C�D�330��i�i��I�I�z�:�.�A�6��I�I�z�:�.�A�6�8��331��332�333r
)FNFrT)�)F)r)i@))rrr�rmrorFNN)rrr�rmrorN)N�__doc__r rsr��comfy.checkpoint_pickler0�safetensors.torchr#r�r��PILrr2r"�torch.nn.functionalr�einopsrr.�hasattr�
serializationrr334�numpy.core.multiarrayrr�numpy.dtypesr�_codecsrr�inforArDrLrRrXrfr}r�r�r�r�r�r�r�r&r%r2rTrSrXrjrorwr�r�r�r�r�r��strr�r�r�r�r�inference_moder9r;r=r?rArBrDrV�Tensorrhrr
r�<module>rysN���&
��
�������+����335�5��� 2�3�
�
�!O�O��,��)��	���(�(�/�6�5�,�X^�)_�`����G�L�L�A�B��G�L�L�\�]�%5�N.��336'��337�'�R338�����0)�$�1�-�)�%�4�0�(�$�)�%�
����*@�D�7�:�P�T�P�T�3�7�L�P�L�P�(�*�,B�DT�U�,�.F�HX�Y�0�4�#��(��6*�X��6339���BC�Jh�T��(�(��O�����0J!�X4� L�D�340�����l��l�\x���#���!�3�3�&�*'�5�<�<�'r