Ë
    Î£j6R  ã                   ó¤  — d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZ d dlmZmZmZ d d	lmZmZ d d
lmZmZmZ d dlm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>  ej~                  «       Z@eeAeBgdf   ZC G d„ d«      ZDy)é    N)ÚCallable)ÚPath)ÚPCFFileÚVPKFile)Úprepare_working_copy)Úconfig)ÚBACKUP_MAINMENU_FOLDERÚCUSTOM_VPK_NAMEÚCUSTOM_VPK_NAMESÚCUSTOM_VPK_SPLIT_PATTERNÚDX8_LISTÚ
Sourcemods)ÚFileHandlerÚcopy_config_filesÚgenerate_config)Údisable_paintsÚenable_paints)Úcheck_parentsÚrestore_particle_filesÚupdate_materials)Úhandle_skybox_modsÚrestore_skybox_files)ÚSoundHandler)Úcheck_game_typeÚ	game_typeÚget_from_custom_dirÚinitialize_pcf)Úgenerate_missing_vmt_files)Úrelocate_mdl_paths)Úremove_duplicate_elements)Úextract_elementsÚload_particle_system_map)Úpatch_mainmenuoverride)Úmake_precache_list)ÚQuickPrecache)Úcheck_writableÚcopyÚdeleteÚmove)Úget_vpk_namec                   óü   — e Zd Zd„ Zd„ Zd„ Zededz  defd„«       Z	ededdfd	„«       Z
ddd
ddd
ej                  fdedee   dedz  deg df   dz  dedededededdfd„Zdej                  fdededz  defd„Zy)ÚInstallServicec                 ó0   — t        «       | _        d| _        y )NF)r   Úsound_handlerÚcancel_requested©Úselfs    úHC:\Users\pivot\Documents\cueki\casual-preloader\core\services\install.pyÚ__init__zInstallService.__init__3   s   € Ü)›^ˆÔØ %ˆÕó    c                 ó   — d| _         y )NT)r/   r0   s    r2   Úrequest_cancelzInstallService.request_cancel7   s
   € Ø $ˆÕr4   c                 ó2   — | j                   rt        d«      ‚y )NzInstallation cancelled by user)r/   Ú	Exceptionr0   s    r2   Ú_check_cancelledzInstallService._check_cancelled:   s   € Ø× Ò ÜÐ<Ó=Ð=ð !r4   Útf_pathNÚreturnc                 óL   — | €y| dz  }|j                  «       rt        |«      S dS )NFúgameinfo.txt)Úis_filer   )r:   Úgameinfo_paths     r2   Úis_modifiedzInstallService.is_modified>   s/   € àˆ?ØØ .Ñ0ˆØ1>×1FÑ1FÔ1HŒ˜}Ó-ÐSÈeÐSr4   Ú
custom_dirc                 ó>  — g }| j                  «       D ]¶  }|j                  «       sŒ|j                  j                  d«      rŒ0|dz  }|j	                  «       sŒF	 t        |d«      5 }t        j                  |«      }|j                  dd«      j                  «       dk(  r#|j                  dd«      r|j                  |«       d d d «       Œ¸ |D ]  }t        |«       Œ y # 1 sw Y   ŒxY w# t        j                  $ r t        j                  d	|› �d
¬«       Y �Œw xY w)NÚ_úmod.jsonÚrÚtypeÚ ÚhudÚpreloader_installedFúInvalid JSON in T©Úexc_info)ÚiterdirÚis_dirÚnameÚ
startswithÚexistsÚopenÚjsonÚloadÚgetÚlowerÚappendÚJSONDecodeErrorÚlogÚwarningr(   )rA   Úitems_to_deleteÚitemÚmod_jsonÚfÚmod_infos         r2   Úcleanup_hudszInstallService.cleanup_hudsE   sô   € ð ˆØ×&Ñ&Ö(ˆDØ�{‰{�} T§Y¡Y×%9Ñ%9¸#Õ%>Ø *Ñ,�Ø—?‘?Õ$ðRÜ! (¨CÔ0°AÜ'+§y¡y°£|˜HØ'Ÿ|™|¨F°BÓ7×=Ñ=Ó?À5ÒHÈXÏ\É\ÐZoÐqvÔMwØ /× 6Ñ 6°tÔ <÷ 1øð )ó $ˆDÜ�4�Lñ $÷ 1Ð0ûô  ×/Ñ/ò RÜŸ™Ð&6°x°jÐ$AÈD˜×QðRús+   ÁC+Á&ACÃC+ÃC(	Ã$C+Ã+-DÄDFTÚselected_addonsÚon_progressÚapply_particle_selectionsÚdisable_paint_colorsÚshow_console_on_startupÚfix_mdl_pathsÚskip_quickprecacheÚ	sourcemodc
           	      óì  ‡— d| _         dt        dt        fˆfd„}
	 |	t        j                  k(  }d}d}d}|rY|t        |«      z  }t        |«      st        d|	j                  › d�«      ‚t        |«      }t        t        j                  «      \  }} |
dd	«       d}g }i }t        |«      D �]¿  \  }}t        j                  |z  }|j                  «       sŒ+|j!                  «       sŒ<|d
z  }|j                  «       r¨	 t#        |d«      5 }t%        j&                  |«      }|j)                  dd«      j+                  «       dk(  rY|j+                  «       }|j)                  |«      €|||<   	 ddd«       ŒÇt-        d||   j.                  › d|j.                  › d�«      ‚	 ddd«       |j7                  d«      D ]³  }|j9                  «       sŒ|j.                  d
k7  sŒ$|j.                  dk7  sŒ4|j;                  |«      }|j<                  d   dk(  rDt?        |j<                  «      dk\  r,d|j.                  j+                  «       v r|j@                  dk(  rŒ›|dz  }|jC                  |||f«       Œµ �ŒÂ | jE                  «        |dz  }|jG                  d¬«       |rÖ| jI                  |«       |jK                  «       D ]²  \  }}||z  }|j                  «       rt2        jM                  |› d�«       Œ4tO        ||«       |d
z  }|j                  «       sŒV	 t#        |d«      5 }t%        j&                  |«      }ddd«       dd<   t#        |d «      5 }t%        jP                  ||d¬!«       ddd«       Œ´ | jE                  «        |r!tS        |«       tU        |«       tW        |«       | jE                  «        |r |«        i }|�r©d#} d}! |
d$d%|› d&�«       |D ]¥  \  }}}| jE                  «        |j;                  |«      }|j@                  j+                  «       d'k(  rt        jX                  |z  }"nt        jZ                  |z  }"tO        ||"«       |||"<   |!dz  }!d$t        |!|z  | z  «      z   }# |
|#d(|!› d)|› d&�«       Œ§ |r¨ |
d*d+«       t        j\                  dz  }$g }%|d,z  }&|&j                  «       r|%jC                  |&«       t_        |j7                  d-«      «      }'|%ja                  |'«       | jb                  je                  t        jZ                  |$|%«      }(|(r |
d.|(d/   «       | jE                  «        |rtg        t        jZ                  |«       |r|r |
d0d1«       ti        |«       |�r¯g d2¢})|)D ]À  }*t        jX                  |*z  }+|+j                  «       rŒ't        j                  |*z  },|+jj                  jG                  dd¬3«       |,j                  «       sŒhtm        to        |,«      jq                  «       ts        t        jt                  «      d4|+j.                  › �   «      jw                  |+«       ŒÂ t        jX                  d5z  j                  «       r.ty        t        jX                  d5z  t        jX                  d6z  «       t_        t        jX                  j7                  d7«      «      }-t{        d8„ |-D «       «      }.t?        |-«      |.z   }d9}/d#} d}! |
|/d:|› d;�«       |-D �]5  }0| jE                  «        |0j.                  }1to        |0«      jq                  «       }2|1|j|                  j.                  k7  rt        |2|«      rŒ_|1|j|                  j.                  k(  rt�        ||2«      }2tƒ        |2«      }3|0j„                  t†        v rJ|0j„                  d<z   }4|j‰                  |4|3«       |!dz  }!|/t        |!|z  | z  «      z   }# |
|#d=|!› d)|› d;�«       |j‰                  |1|3«       |0j‹                  «        |!dz  }!|/t        |!|z  | z  «      z   }# |
|#d=|!› d)|› d;�«       �Œ8 nÒt_        t        jX                  j7                  d7«      «      }-|-r¨t        jZ                  d>z  }5|5jG                  dd¬3«       t?        |-«      }d.}/d?}  |
|/d@|› d;�«       t        |-«      D ]X  \  }6}0| jE                  «        ty        |0|5|0j.                  z  «       |/t        |6dz   |z  | z  «      z   }# |
|#dA|6dz   › d)|› d;�«       ŒZ | jE                  «         |
dBdC«       t�        |dDz  d¬E«       |r|tŽ        z  }7t‘        |7d¬F«       t’        D ]P  }8||8z  }9||8dGz   z  }:|9j                  «       r|9j‹                  «        |:j                  «       sŒA|:j‹                  «        ŒR t        jZ                  };t•        |;«       |r/t—        |«       |r |
dHdI«       t™        |;|¬J«       t›        |;|«       |j7                  tœ        › dK�«      D ]E  }<|<j‹                  «        ||<j.                  dGz   z  }=|=j                  «       sŒ6|=j‹                  «        ŒG |;j                  «       r{tŸ        |;j¡                  «       «      rbdL}>|t£        j¤                  dMd«      z  }?|;jG                  dd¬3«       t§        j¨                  t        |;«      t        |?«      |>«      st-        dN«      ‚| jE                  «        |�rát«        |j¬                  d   d¬O«      j¯                  d¬P«       |dQz  }@|@j                  «       r@j‹                  «        |dRz  }A|Aj                  «       rAj‹                  «        |rt2        jM                  dS«       np |
dTdU«       t±        |j¬                  d   «      }B|BrMt«        |j¬                  d   d‰¬V«      }C|Cj¯                  d¬W«       tO        t        j²                  dXz  |dQz  «       | jE                  «         |
dYdZ«       d}D|j¡                  «       D ]B  }E|Ej9                  «       sŒEj@                  dMk(  sŒ$Ej.                  jµ                  d[«      sŒ@d}D n |dQz  j                  «       }Ft·        D|F|«      }G|t£        j¤                  dMd\«      z  }H|Hj                  «       r,t        H«      }I|Ij‰                  d]Gjw                  d^«      «        |
d_d`«       t¹        |«        |
dadb«       t»        «        y# 1 sw Y   �Œ>xY w# t$        j0                  $ r t2        j5                  d|› �d¬«       Y �Œqw xY w# 1 sw Y   �	ŒêxY w# 1 sw Y   �	ŒÅxY w# t$        j0                  $ r t2        j5                  d|› d"�d¬«       Y �
Œ¬w xY w# t»        «        w xY w)caí  
        Install selected addons to the game directory.

        Args:
            tf_path: Path to the tf/ directory
            selected_addons: List of addon directory names to install
            on_progress: Callback for progress updates (percent, message)
            apply_particle_selections: Callback to apply particle selections from UI
            disable_paint_colors: Whether to disable paint colors
            show_console_on_startup: Whether to show console on startup
        FÚpctÚmsgc                 ó   •— ‰r
 ‰| |«       y y ©N© ©rj   rk   rb   s     €r2   Úprogressz(InstallService.install.<locals>.progressr   ó   ø€ ÙÙ˜C Õ%ð r4   NzPlease close z before installing.r   zInstalling addons...rD   rE   rF   rG   rH   z]There are 2 mods that have directory names which resolve to the same case-insensitive name:
'z'
'Ú'rJ   TrK   z**/*zsound.cacheÚscriptsé   Úsoundz.txté   Úcustom©Úexist_okzJ already exists, skipping as to not overwrite possible user-modified filesrI   Úw)Úindentz#, skipping preloader_installed flagé   é
   zInstalling addons... (0/z files)z.pcfzInstalling addons... (Ú/é#   zProcessing sound mods...ztf2_sound_misc_dir.vpkztf2_sound_vo_*_dir.vpké2   Úmessageé4   zDisabling paint colors...)zitem_fx.pcfzhalloween.pcfzbigboom.pcfzdirty_explode.pcf)Úparentsry   z
particles/zblood_trail.pcfz
npc_fx.pcfz*.pcfc              3   óF   K  — | ]  }|j                   t        v sŒd –— Œ y­w)rv   N)Ústemr   )Ú.0Úpcf_files     r2   Ú	<genexpr>z)InstallService.install.<locals>.<genexpr>  s   è ø€ Ð^±. hÀHÇMÁMÔU]ÒD]¤±.ùs   ‚!š!é7   z Processing particle files... (0/Ú)z	_dx80.pcfzProcessing particle files... (Ú	particlesé   zCopying particle files... (0/zCopying particle files... (éP   zMaking custom VPKr=   ©Ú	uninstall©Únot_exist_okú.sound.cacheéN   z"Relocating model material paths...)Úfile_originú*.vpkl        z.vpkzFailed to create custom VPK©Údebug©Úflushú_QuickPrecache.vpkúQuickPrecache.vpkz;Skipping QuickPrecache scan/build (skip_quickprecache=True)éU   z"Scanning for models to precache...)r—   Úprogress_callback)Úautoz%core/quickprecache/_QuickPrecache.vpké_   zConfiguring...Úmastercomfigz_dir.vpkzcfg/w/config.cfgzutf-8éa   zFinalizing...éd   zInstallation complete)^r/   ÚintÚstrr   ÚTF2r*   r&   ÚPermissionErrorÚ	full_namer   r   r   Útemp_to_be_referenced_dirÚ	enumerateÚ
addons_dirrQ   rN   rR   rS   rT   rU   rV   r8   rO   rX   rY   rZ   Úglobr>   Úrelative_toÚpartsÚlenÚsuffixrW   r9   Úmkdirr`   ÚitemsÚinfor'   Údumpr   r   r   Útemp_to_be_patched_dirÚtemp_to_be_vpk_dirÚ
backup_dirÚlistÚextendr.   Úprocess_temp_sound_modsr   r   Úparentr!   r   Údecoder"   Úparticle_system_map_fileÚencoder)   ÚsumÚ
input_filer   r   r    r…   r   Úprocess_fileÚunlinkr   r	   r(   r   r   r#   r   r   r   ÚanyrM   r
   Úreplacer   Úcreater%   rƒ   Úrunr$   Úinstall_dirrP   r   r   r   )Jr1   r:   ra   rb   rc   rd   re   rf   rg   rh   rp   Úis_tf2Úfile_handlerÚbase_default_pcfÚbase_default_parentsÚworking_vpk_pathÚtotal_filesÚfiles_to_copyÚ
hud_addonsÚaddon_indexÚ
addon_pathÚ	addon_dirÚmod_json_pathr^   r_   Úsrc_pathÚrel_pathrA   Ú
addon_nameÚhud_destÚhud_mod_jsonr”   Úprogress_rangeÚcompleted_filesÚ	dest_pathÚcurrent_progressÚbackup_scripts_dirÚ	vpk_pathsÚmisc_vpkÚvo_vpksÚsound_resultÚduplicate_effectsÚduplicate_effectÚtarget_pathÚsource_pathÚparticle_filesÚ	dx8_filesÚstart_progressr‡   Ú	base_nameÚmod_pcfÚprocessed_pcfÚ
dx_80_nameÚparticles_dirÚiÚbackup_mainmenu_folderÚ
custom_vpkÚvpk_pathÚ
cache_pathÚcustom_content_dirÚ
split_fileÚ
cache_fileÚ
split_sizeÚvpk_base_pathÚquick_precache_pathÚold_quick_precache_pathÚprecache_prop_setÚprecacheÚhas_mastercomfigr\   Úneeds_quickprecacheÚconfig_contentÚcustom_vpk_pathÚvpk_handlersJ      `                                                                      r2   ÚinstallzInstallService.installX   s2  ø€ ð0 !&ˆÔð	&œ#ð 	&¤Cõ 	&ðz	#Ø¤*§.¡.Ñ0ˆFàˆLØ#ÐØ#'Ð ÙØ#*¬\¸'Ó-BÑ#BÐ Ü%Ð&6Ô7Ü)¨M¸)×:MÑ:MÐ9NÐNaÐ*bÓcÐcÜ*Ð+;Ó<�Ü9GÌ×HhÑHhÓ9iÑ6Ð Ð"6Ù�QÐ.Ô/àˆKØˆMØˆJä+4°_×+EÑ'�˜ZÜ"×-Ñ-°
Ñ:�	Ø×#Ñ#Õ%¨)×*:Ñ*:Õ*<Ø$-°
Ñ$:�MØ$×+Ñ+Ô-ð[Ü!% m°SÔ!9¸QÜ+/¯9©9°Q«< Ø#+§<¡<°¸Ó#;×#AÑ#AÓ#CÀuÒ#LØ1;×1AÑ1AÓ1C Jà'1§~¡~°jÓ'AÐ'IØAJ¨
°:Ñ(>Ø(0÷ ":Ð!9ô /8ð  ;Yð  Zdð  eoñ  Zp÷  Zuñ  Zuð  Yvð  vzð  {D÷  {Iñ  {Ið  zJð  JKð  9Ló  /Mð  )Mð $M÷ ":ð %.§N¡N°6Ö$:˜Ø#×+Ñ+Õ-°(·-±-À:Ó2MÐRZ×R_ÑR_ÐcpÓRpØ'/×';Ñ';¸IÓ'F˜HØ (§¡¨qÑ 1°YÒ >Ü # H§N¡NÓ 3°qÒ 8Ø '¨8¯=©=×+>Ñ+>Ó+@Ñ @Ø (§¡°6Ò 9Ø (Ø'¨1Ñ,˜KØ)×0Ñ0°(¸IÀ{Ð1SÕTò %;ð' ,Fð< ×!Ñ!Ô#à  8Ñ+ˆJØ×Ñ dÐÔ+áØ×!Ñ! *Ô-à-7×-=Ñ-=Ö-?Ñ)�J 	Ø)¨JÑ6�HØ—‘Ô(ÜŸ™ H :Ð-wÐ!xÔyØ Ü˜ HÔ-à#+¨jÑ#8�LØ#×*Ñ*Õ,ð}Ü!% l°CÔ!8¸AÜ+/¯9©9°Q«< ÷ "9à>B˜HÐ%:Ñ;Ü!% l°CÔ!8¸AÜ $§	¡	¨(°A¸aÕ @÷ "9øð .@ð$ ×!Ñ!Ô#ÙÜ$ WÔ-Ü& wÔ/Ü˜gÔ&à×!Ñ!Ô#á(Ù)Ô+ð
 ,.ˆKâØ!#�Ø"#�Ù˜Ð7¸°}ÀGÐLÔMã8EÑ4�H˜i¨Ø×)Ñ)Ô+à'×3Ñ3°IÓ>�HØ—‘×,Ñ,Ó.°&Ò8Ü$*×$AÑ$AÀHÑ$L™	ä$*×$=Ñ$=ÀÑ$H˜	ä˜ 9Ô-Ø-8�K 	Ñ*à# qÑ(�OØ')¬C°À;Ñ1NÐR`Ñ0`Ó,aÑ'aÐ$ÙÐ-Ð1GÈÐGXÐXYÐZeÐYfÐfmÐ/nÕoð 9Fñ  Ù˜RÐ!;Ô<Ü)/×):Ñ):¸YÑ)FÐ&à "�IØ&Ð)AÑA�HØ—‘Ô(Ø!×(Ñ(¨Ô2Ü" 7§<¡<Ð0HÓ#IÓJ�GØ×$Ñ$ WÔ-à#'×#5Ñ#5×#MÑ#MÜ×1Ñ1Ø*Ø!ó$�Lñ
 $Ù   \°)Ñ%<Ô=à×%Ñ%Ô'áÜ&¤v×'@Ñ'@À'ÔJáÑ2Ù˜RÐ!<Ô=Ü" 7Ô+âò%Ð!ó ):Ð$Ü"(×"?Ñ"?ÐBRÑ"R�KØ&×-Ñ-Õ/Ü&,×&FÑ&FÐIYÑ&Y˜Ø#×*Ñ*×0Ñ0¸ÈÐ0ÔMØ&×-Ñ-Õ/Ü,¬W°[Ó-A×-HÑ-HÓ-JÜ-EÄf×FeÑFeÓ-fØ0:¸;×;KÑ;KÐ:LÐ.Mñ.OóPçPVÑPVÐWbÕPcð ):ô ×1Ñ1Ð4EÑE×MÑMÔOÜœ×6Ñ6Ð9JÑJÜ×6Ñ6¸ÑEôGô "&¤f×&CÑ&C×&HÑ&HÈÓ&QÓ!R�ÜÑ^±.Ó^Ó^�	Ü! .Ó1°IÑ=�Ø!#�Ø!#�Ø"#�Ù˜Ð+KÈKÈ=ÐXYÐ)ZÔ[ä .�HØ×)Ñ)Ô+à (§¡�Iä% hÓ/×6Ñ6Ó8�Gà Ð$4×$?Ñ$?×$DÑ$DÒDÌÐW^Ð`tÔIuØ à Ð$4×$?Ñ$?×$DÑ$DÒDÜ"2Ð3CÀWÓ"M˜ä$=¸gÓ$F�Mà—}‘}¬Ñ0Ø%-§]¡]°[Ñ%@˜
Ø$×1Ñ1°*¸mÔLà'¨1Ñ,˜Ø+9¼CÀÐS^ÑA^ÐbpÑ@pÓ<qÑ+qÐ(Ù Ð!1Ð5SÐTcÐSdÐdeÐfqÐerÐrsÐ3tÔuà ×-Ñ-¨i¸ÔGØ—O‘OÔ%à# qÑ(�OØ'5¼¸_È{Ñ=ZÐ^lÑ<lÓ8mÑ'mÐ$ÙÐ-Ð1OÐP_ÐO`Ð`aÐbmÐanÐnoÐ/pÖqñ9 !/ô< "&¤f×&CÑ&C×&HÑ&HÈÓ&QÓ!R�Ù!Ü$*×$=Ñ$=ÀÑ$K�MØ!×'Ñ'°¸tÐ'ÔDä"% nÓ"5�KØ%'�NØ%'�NÙ˜^Ð/LÈ[ÈMÐYZÐ-[Ô\ä'0°Ö'@™˜˜8Ø×-Ñ-Ô/ä˜X }°x·}±}Ñ'DÔEà+9¼CÀ!ÀaÁ%È;ÑAVÐZhÑ@hÓ<iÑ+iÐ(Ù Ð!1Ð5PÐQRÐUVÑQVÐPWÐWXÐYdÐXeÐefÐ3gÕhð (Að ×!Ñ!Ô#á�RÐ,Ô-ä�g Ñ.¸%Õ@áØ)3Ô6LÑ)LÐ&ÜÐ-¸DÕAç.�
Ø%¨
Ñ2�Ø'¨:¸Ñ+FÑG�
Ø—?‘?Ô$Ø—O‘OÔ%Ø×$Ñ$Õ&Ø×%Ñ%Õ'ð /ô "(×!:Ñ!:ÐÜÐ0Ô1áÜ& wÔ/Ù Ù˜RÐ!EÔFÜ&Ð'9À{ÕSÜ*Ð+=¸wÔGà(Ÿo™oÔ1IÐ0JÈ%Ð.PÖQ�
Ø×!Ñ!Ô#Ø'¨:¯?©?¸^Ñ+KÑL�
Ø×$Ñ$Õ&Ø×%Ñ%Õ'ð	 Rð "×(Ñ(Ô*¬sÐ3E×3MÑ3MÓ3OÔ/PØ$�
Ø *¬_×-DÑ-DÀVÈRÓ-PÑ P�à"×(Ñ(°ÀÐ(ÔEÜ—~‘~¤cÐ*<Ó&=¼sÀ=Ó?QÐS]Ô^Ü#Ð$AÓBÐBà×!Ñ!Ô#âô ˜gŸo™o¨aÑ0¸Ô>×BÑBÈÐBÔNØ&0Ð3GÑ&GÐ#Ø&×-Ñ-Ô/Ø'×.Ñ.Ô0à*4Ð7JÑ*JÐ'Ø*×1Ñ1Ô3Ø+×2Ñ2Ô4á%Ü—H‘HÐZÕ[á˜RÐ!EÔFä(:¸7¿?¹?È1Ñ;MÓ(NÐ%Ù(Ü#0Ø#ŸO™O¨AÑ.Ø"'Ø.9ô$˜ð
 !Ÿ™¨$˜Ô/ÜœV×/Ñ/Ð2YÑYÐ[eÐh|Ñ[|Ô}à×%Ñ%Ô'á˜Ð-Ô.à#(Ð Ø&×.Ñ.Ö0�DØ—|‘|•~¨$¯+©+¸Ó*?ÀDÇIÁI×DXÑDXÐYgÕDhØ+/Ð(Ùð 1ð
 (2Ð4HÑ'H×&PÑ&PÓ&RÐ#ä!0Ð1AÐCVÐXoÓ!p�à",¬×/FÑ/FÀvÈzÓ/ZÑ"Z�Ø"×)Ñ)Ô+Ü"-¨oÓ">�KØ×,Ñ,Ð-?À×AVÑAVÐW^ÓA_Ô`á�R˜Ô)ä 
Ô+á�SÐ1Ô2ô !Õ"÷E	 ":Ñ!9ûô  $×3Ñ3ò [ÜŸK™KÐ*:¸=¸/Ð(JÐUY˜K×Zð[ú÷@ "9Ñ!8ú÷ "9Ñ!8ûä#×3Ñ3ò }ÜŸK™KÐ*:¸<¸.ÐHkÐ(lÐw{˜K×|ð}ûôf !Õ"úsþ   œB8u' Ãu' Ã&u' Ã<s$ÄA sÅ(s$Å0u' Å1)sÆs$Æ#$u' Çu' Çu' Ç(D$u' Ìt2ÌtÌ0t2Í	t%Í"t2Í*H+u' ÖA u' ×Nu' å2B+u' èG*u' ð	u' ðu' ð5Bu' ós!	ós$ó$-tôu' ôtôu' ôt"	ôt2ô%t/	ô*t2ô2.u$õ u' õ#u$õ$u' õ'u3c                 ó  ‡— dt         dt        fˆfd„}	 t        «        |dz  }|j                  d¬«       t	        |dz  d¬«       |t
        j                  k(  rá| j                  |«       t        |«       t        |«       t        |«       t        |j                  d	   d
¬«      j                  d¬«       |dz  }|j                  «       r|j                  «        |dz  }|j                  «       r|j                  «        |dz  }|j                  «       r|j                  «        |t         z  }	t#        |	d¬«       t$        D ]P  }
||
z  }||
dz   z  }|j                  «       r|j                  «        |j                  «       sŒA|j                  «        ŒR |j'                  t(        › d�«      D ]E  }|j                  «        ||j*                  dz   z  }|j                  «       sŒ6|j                  «        ŒG 	 t        «        y # t        «        w xY w)Nrj   rk   c                 ó   •— ‰r
 ‰| |«       y y rm   rn   ro   s     €r2   rp   z*InstallService.uninstall.<locals>.progress´  rq   r4   rw   Trx   r=   rŽ   r   Fr–   r˜   rš   z_quickprecache.vpk.sound.cacher›   r�   r’   r•   )r£   r¤   r   r°   r   r   r¥   r`   r   r   r   r%   rƒ   rÅ   rQ   rÁ   r	   r(   r   r«   r   rO   )r1   r:   rb   rh   rp   rA   r÷   Úquick_precache_cacherø   rî   rï   rð   rñ   ró   rô   s     `            r2   r�   zInstallService.uninstall²  sÖ  ø€ ð	&œ#ð 	&¤Cõ 	&ð,	#Ü Ô"Ø  8Ñ+ˆJØ×Ñ dÐÔ+ä�g Ñ.¸$Õ?àœJŸN™NÒ*Ø×!Ñ! *Ô-Ü$ WÔ-Ü& wÔ/Ü˜gÔ&ä˜gŸo™o¨aÑ0¸Ô>×BÑBÈÐBÔNØ&0Ð3GÑ&GÐ#Ø&×-Ñ-Ô/Ø'×.Ñ.Ô0à'1Ð4TÑ'TÐ$Ø'×.Ñ.Ô0Ø(×/Ñ/Ô1à*4Ð7JÑ*JÐ'Ø*×1Ñ1Ô3Ø+×2Ñ2Ô4à)3Ô6LÑ)LÐ&ÜÐ-¸DÕAç.�
Ø%¨
Ñ2�Ø'¨:¸Ñ+FÑG�
Ø—?‘?Ô$Ø—O‘OÔ%Ø×$Ñ$Õ&Ø×%Ñ%Õ'ð /ð )Ÿo™oÔ1IÐ0JÈ%Ð.PÖQ�
Ø×!Ñ!Ô#Ø'¨:¯?©?¸^Ñ+KÑL�
Ø×$Ñ$Õ&Ø×%Ñ%Õ'ñ	 Rô !Õ"øÔ Õ"ús   •E+G? ÆAG? Ç!G? Ç?H)Ú__name__Ú
__module__Ú__qualname__r3   r6   r9   Ústaticmethodr   Úboolr@   r`   r   ÚDEFAULTr·   r¤   ÚProgressCallbackr   r   r�   rn   r4   r2   r,   r,   2   s5  „ ò&ò%ò>ð ðT˜T D™[ð T¨Tò Tó ðTð ð ð ¨$ò ó ðð, 04Ø?CØ%*Ø(,Ø"Ø#(Ø *× 2Ñ 2ñX#àðX#ð ˜c™ðX#ð &¨Ñ,ð	X#ð
 $,¨B°¨HÑ#5¸Ñ#<ðX#ð #ðX#ð "&ðX#ð ðX#ð !ðX#ð ðX#ð óX#ðt
 OSÐlv×l~Ñl~ñ 2# ð 2#Ð4DÀtÑ4Kð 2#Ð_iô 2#r4   r,   )ErS   ÚloggingÚcollections.abcr   Úpathlibr   Úvalve_parsersr   r   Úcore.backup_managerr   Úcore.configr   Úcore.constantsr	   r
   r   r   r   r   Úcore.handlers.file_handlerr   r   r   Úcore.handlers.paint_handlerr   r   Úcore.handlers.pcf_handlerr   r   r   Úcore.handlers.skybox_handlerr   r   Úcore.handlers.sound_handlerr   Úcore.operations.file_processorsr   r   r   r   Ú9core.operations.for_the_love_of_god_add_vmts_to_your_modsr   Úcore.operations.mdl_relocater   Úcore.operations.pcf_compressr    Úcore.operations.pcf_rebuildr!   r"   Úcore.operations.vgui_preloadr#   Ú core.quickprecache.precache_listr$   Ú!core.quickprecache.quick_precacher%   Úcore.util.filer&   r'   r(   r)   Úcore.util.vpkr*   Ú	getLoggerrY   r£   r¤   r
  r,   rn   r4   r2   Ú<module>r"     sŸ   ðÛ Û Ý $Ý ç *å 4Ý ÷÷ ÷ WÑ Vß E÷ñ ÷
 RÝ 4÷ó õõ <Ý Bß RÝ ?Ý ?Ý ;ß =Ó =Ý &à€g×ÑÓ€à˜S #˜J¨Ð,Ñ-Ð ÷r#ò r#r4   