§
    0à¯j»N  ã                   ó¶  — U d Z ddlZddlZddlZ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mZmZmZ 	  eej        d¦  «        rej                             dd¬	¦  «          eej        d¦  «        rej                             dd¬	¦  «         n# e$ r Y nw xY w	 dd
lmZ n# e$ r dZY nw xY w ej        d¦  «        Zej        si ej        ej        ¦  «        Ze                      ej        dd¬¦  «        ¦  «         e                     e¦  «         e                     ej         ¦  «         i dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d“d"d#“d$d“d%d“d&d'“d(d“ddd)dd*ddd+d,d-d-d-d.œ¥dd/ddd0œd1did2œi dd3“dd4“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d“d"d#“d$d“d%d“d&d'“d(d“ddd)dd*ddd+d,d-d-d-d.œ¥dd/ddd0œd1did2œi dd3“dd4“dd“dd“dd“dd“dd“dd“dd5“dd5“d d5“d!d5“d"d#“d$d“d%d“d&d6“d(d“ddd+dd)ddd+d,d7d-d7d.œ¥dd8dd9œd1did2œd:œZ!e
e"e
e"e
e"e"f         f         f         e#d;<    G d<„ d=¦  «        Z$d>„ Z%e&d?k    r e%¦   «          dS dS )@u—  
AutoPOE2 - Graphics & Performance Optimizer for Path of Exile 2
================================================================
Cung cáº¥p cÃ´ng cá»¥ tá»‘i Æ°u hÃ³a tÃ i nguyÃªn Ä‘á»“ há»�a vÃ  Ã¢m thanh cho client game Path of Exile 2:
- Háº¡ Ä‘á»™ phÃ¢n giáº£i vÃ  cÃ¡c hiá»‡u á»©ng náº·ng (Shaders, Water, GI, Bloom, Screenspace) xuá»‘ng má»©c tháº¥p nháº¥t (Potato Mode).
- KhÃ³a FPS (30fps active / 15fps background) vÃ  tá»± Ä‘á»™ng cÃ¢m tiáº¿ng khi á»Ÿ cháº¿ Ä‘á»™ ná»�n (mute_in_background).
- Giáº£m táº£i 60-75% GPU/CPU/VRAM/RAM khi ngÆ°á»�i dÃ¹ng cháº¡y Ä‘a nhiá»‡m hoáº·c chÆ¡i game khÃ¡c trÃªn cÃ¹ng mÃ¡y tÃ­nh.
- Báº£o Ä‘áº£m an toÃ n 100%: Sao lÆ°u .bak tá»± Ä‘á»™ng, báº£o tá»“n DirectX 12, tÃ i khoáº£n vÃ  toÃ n bá»™ phÃ­m báº¥m.

TuÃ¢n thá»§:
- Quy táº¯c 4 (Rule 4): Ä�á»™c láº­p, SRP, < 500 dÃ²ng.
- Quy táº¯c 5 (Rule 5): Kiá»ƒm thá»­ thá»±c nghiá»‡m vá»›i dá»¯ liá»‡u tháº­t, zero-hallucination.
é    N)ÚPath)Údatetime)ÚDictÚAnyÚOptionalÚTupleÚListÚreconfigureúutf-8Úreplace©ÚencodingÚerrors)ÚConfigÚGraphicsOptimizerz=[%(asctime)s] [%(levelname)s] [GraphicsOptimizer] %(message)sz%H:%M:%S)ÚdatefmtÚresolution_widthÚ1280Úresolution_heightÚ720Ú
fullscreenÚfalseÚmaximize_windowÚborderless_windowed_fullscreenÚshadow_typeÚLowÚ
vsync_modeÚOffÚuse_dynamic_particle_culling2ÚtrueÚscreenspace_effectsÚ0Úscreenspace_effects_resolutionÚlight_qualityÚtexture_filteringÚtexture_qualityÚTextureQualityLowÚwater_detailÚglobal_illumination_detailÚbloom_strengthz0.0Útime_manipulation_effectsÚ30Ú15Ú60ÚNISÚPerformance)Úscreen_shake_v2Útriple_bufferingÚframerate_limitÚframerate_limit_enabledÚbackground_framerate_limitÚ"background_framerate_limit_enabledÚuse_dynamic_resolutionÚdynamic_resolution_fpsÚupscaleÚupscale_qualityÚupscale_quality_xessÚupscale_resolutionÚlow)Úmute_in_backgroundÚchannel_countÚreverb_enabled2Úcinematic_sound_volumeÚ reduce_user_interface_animations)ÚDISPLAYÚSOUNDÚUIÚ1920Ú1080Ú1z0.15ÚQualityÚmedium)r>   r?   r@   )Ú	ultra_lowÚ	low_1080pÚbalanced_1080pÚPROFILESc                   ó–  — e Zd ZdZeddeeez           dee         fd„¦   «         Zeddeeez           de	ee         ee         f         fd„¦   «         Z
eddeeez           defd„¦   «         Zeddeeez           deeeeef         f         fd	„¦   «         Ze	 	 ddedeeez           dedeee	eef         f         fd„¦   «         ZdS )ÚPoe2GraphicsOptimizeru§   
    TrÃ¬nh tá»‘i Æ°u hÃ³a cáº¥u hÃ¬nh Ä‘á»“ há»�a Path of Exile 2.
    Ä�á»�c, sao lÆ°u, chá»‰nh sá»­a vÃ  phá»¥c há»“i file poe2_production_Config.ini an toÃ n.
    NÚoverride_pathÚreturnc                 ó‚  — |r%t          |¦  «        }|                     ¦   «         r|S t          �Ct          j        ¦   «         }|r.t          j                             |¦  «        rt          |¦  «        S t          j                             d¦  «        t          j                             d¦  «        t          j                             d¦  «        t          j                             d¦  «        t          j                             d¦  «        g}|D ]2}t          j                             |¦  «        rt          |¦  «        c S Œ3dS )uE   
        XÃ¡c Ä‘á»‹nh vá»‹ trÃ­ tá»‡p cáº¥u hÃ¬nh game POE2.
        NzH~\OneDrive\Documents\My Games\Path of Exile 2\poe2_production_Config.iniz?~\Documents\My Games\Path of Exile 2\poe2_production_Config.inizC~\OneDrive\Documents\My Games\Path of Exile 2\production_Config.iniz:~\Documents\My Games\Path of Exile 2\production_Config.iniz<~\AppData\Roaming\Path of Exile 2\poe2_production_Config.ini)r   Úis_filer   Úfind_poe2_config_pathÚosÚpathÚisfileÚ
expanduser)ÚclsrQ   ÚpÚfoundÚ
candidatesÚcs         ú=C:\Projects\AutoPOE2\src\assistant_tool\graphics_optimizer.pyÚfind_config_pathz&Poe2GraphicsOptimizer.find_config_pathº   s  € ð
 ð 	Ý�]Ñ#Ô#ˆAØ�yŠy‰{Œ{ð Ø�åÐÝÔ0Ñ2Ô2ˆEØð #�œŸš¨Ñ.Ô.ð #Ý˜E‘{”{Ð"õ ŒG×ÒÐjÑkÔkÝŒG×ÒÐaÑbÔbÝŒG×ÒÐeÑfÔfÝŒG×ÒÐ\Ñ]Ô]ÝŒG×ÒÐ^Ñ_Ô_ð
ˆ
ð ð 	ð 	ˆAÝŒw�~Š~˜aÑ Ô ð Ý˜A‘w”w���ðàˆtó    Úconfig_pathc                 óR  — |                       |¬¦  «        }|r|                     ¦   «         st                               d¦  «         dS |                     d¦  «        }t          j        ¦   «                              d¦  «        }|                     |j	        › d|› �¦  «        }|                     ¦   «         s7t          j        ||¦  «         t                               d|j	        › �¦  «         t          j        ||¦  «         t                               d|j	        › �¦  «         ||fS )	uG  
        Táº¡o báº£n sao lÆ°u 2 lá»›p trÆ°á»›c khi thay Ä‘á»•i tá»‡p cáº¥u hÃ¬nh:
        1. Base backup (.bak): Chá»‰ táº¡o náº¿u chÆ°a tá»“n táº¡i, lÆ°u giá»¯ vÄ©nh viá»…n cáº¥u hÃ¬nh ban Ä‘áº§u.
        2. Timestamped backup (.bak_YYYYMMDD_HHMMSS): LÆ°u tráº¡ng thÃ¡i tá»©c thá»�i trÆ°á»›c láº§n sá»­a gáº§n nháº¥t.
        ©rQ   u8   KhÃ´ng tÃ¬m tháº¥y file cáº¥u hÃ¬nh POE2 Ä‘á»ƒ sao lÆ°u.)NNú.ini.bakz%Y%m%d_%H%M%Sz.bak_u/   Ä�Ã£ táº¡o báº£n sao lÆ°u gá»‘c (Base Backup): u=   Ä�Ã£ táº¡o báº£n sao lÆ°u tá»©c thá»�i (Timestamped Backup): )r`   ÚexistsÚloggerÚerrorÚwith_suffixr   ÚnowÚstrftimeÚ	with_nameÚnameÚshutilÚcopy2Úinfo)rZ   rb   Úcfg_fileÚbase_bakÚtimestamp_strÚts_baks         r_   Úbackup_configz#Poe2GraphicsOptimizer.backup_configÖ   s  € ð ×'Ò'°kÐ'ÑBÔBˆØð 	˜xŸšÑ0Ô0ð 	Ý�LŠLÐSÑTÔTÐTØ�:à×'Ò'¨
Ñ3Ô3ˆÝ œ™œ×/Ò/°Ñ@Ô@ˆØ×#Ò# x¤}Ð$JÐ$J¸=Ð$JÐ$JÑKÔKˆð �ŠÑ Ô ð 	[ÝŒL˜ 8Ñ,Ô,Ð,Ý�KŠKÐYÈ(Ì-ÐYÐYÑZÔZÐZõ 	Œ�X˜vÑ&Ô&Ð&Ý�ŠÐaÐTZÔT_ÐaÐaÑbÔbÐbà˜ÐÐra   c                 óè  — |                       |¬¦  «        }|st                               d¦  «         dS |                     d¦  «        }|                     ¦   «         st                               d|› �¦  «         dS 	 t          j        ||¦  «         t                               d|j        › d|j        › �¦  «         dS # t          $ r(}t                               d	|› �¦  «         Y d
}~dS d
}~ww xY w)uR   
        Phá»¥c há»“i tá»‡p cáº¥u hÃ¬nh tá»« báº£n sao lÆ°u gá»‘c (.bak).
        rd   uC   KhÃ´ng xÃ¡c Ä‘á»‹nh Ä‘Æ°á»£c Ä‘Æ°á»�ng dáº«n file cáº¥u hÃ¬nh POE2.Fre   u)   KhÃ´ng tÃ¬m tháº¥y báº£n sao lÆ°u gá»‘c: u7   Ä�Ã£ phá»¥c há»“i thÃ nh cÃ´ng cáº¥u hÃ¬nh gá»‘c tá»«: ú -> Tu'   Lá»—i khi phá»¥c há»“i báº£n sao lÆ°u: N)
r`   rg   rh   ri   rf   rn   ro   rp   rm   Ú	Exception)rZ   rb   rq   rr   Úes        r_   Úrestore_backupz$Poe2GraphicsOptimizer.restore_backupñ   s  € ð
 ×'Ò'°kÐ'ÑBÔBˆØð 	Ý�LŠLÐ^Ñ_Ô_Ð_Ø�5à×'Ò'¨
Ñ3Ô3ˆØ�ŠÑ Ô ð 	Ý�LŠLÐOÀXÐOÐOÑPÔPÐPØ�5ð	ÝŒL˜ 8Ñ,Ô,Ð,Ý�KŠKÐtÐRZÔR_ÐtÐtÐemÔerÐtÐtÑuÔuÐuØ�4øÝð 	ð 	ð 	Ý�LŠLÐFÀ1ÐFÐFÑGÔGÐGØ�5�5�5�5�5øøøøð	øøøs   Á>?B? Â?
C1Ã	C,Ã,C1c                 ó   — |                       |¬¦  «        }|r|                     ¦   «         si S i }d}t          |ddd¬¦  «        5 }|D ]ì}|                     ¦   «         }|r*|                     d¦  «        s|                     d¦  «        rŒC|                     d	¦  «        r;|                     d
¦  «        r&|dd…                              ¦   «         }||vri ||<   Œ“d|v rU|                     dd¦  «        \  }}	|                     ¦   «         }|	                     ¦   «         }	||vri ||<   |	||         |<   Œí	 ddd¦  «         n# 1 swxY w Y   |S )uU   
        Ä�á»�c nhanh cÃ¡c khÃ³a vÃ  giÃ¡ trá»‹ tá»« tá»‡p cáº¥u hÃ¬nh POE2.
        rd   ÚDEFAULTÚrú	utf-8-sigÚignorer   ú#ú;ú[ú]é   éÿÿÿÿú=N)r`   rT   ÚopenÚstripÚ
startswithÚendswithÚsplit)
rZ   rb   rq   ÚresultÚcurr_secÚfÚlineÚline_sÚkÚvs
             r_   Úget_current_settingsz*Poe2GraphicsOptimizer.get_current_settings  sÃ  € ð
 ×'Ò'°kÐ'ÑBÔBˆØð 	˜x×/Ò/Ñ1Ô1ð 	ØˆIà,.ˆØˆÝ�(˜C¨+¸hÐGÑGÔGð 	,È1Øð ,ð ,�ØŸš™œ�Øð  ×!2Ò!2°3Ñ!7Ô!7ð ¸6×;LÒ;LÈSÑ;QÔ;Qð ØØ×$Ò$ SÑ)Ô)ð ¨f¯oªo¸cÑ.BÔ.Bð Ø% a¨ dœ|×1Ò1Ñ3Ô3�HØ vÐ-Ð-Ø+-˜˜xÑ(ØØ˜&�=�=Ø!Ÿ<š<¨¨QÑ/Ô/‘D�A�qØŸš™	œ	�AØŸš™	œ	�AØ vÐ-Ð-Ø+-˜˜xÑ(Ø*+�F˜8Ô$ QÑ'øð,ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð" ˆs   ÁC0EÅEÅ
ETÚprofile_nameÚcreate_backupc           
      óÊ  ‡‡‡‡— |t           vr9t          d|› dt          t                                ¦   «         ¦  «        › �¦  «        ‚|                      |¬¦  «        }|r|                     ¦   «         st          d|pd› �¦  «        ‚|r|                      |¦  «         t           |         Št          |ddd¬	¦  «        5 }| 	                    ¦   «         }d
d
d
¦  «         n# 1 swxY w Y   i Šg Šd
}t          ¦   «         Šdt          t                   fˆˆˆˆfd„}|D �]Å}	|	                     ¦   «         }
|
                     d¦  «        r`|
                     d¦  «        rK ||¦  «         |
dd…                              ¦   «         }t          ¦   «         Š‰                     |	¦  «         ŒŒ|�r!|‰v �rd|
v �r|
                     d¦  «        �s|
                     dd¦  «        \  }}|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }‰                     |¦  «         d
}‰|         D ]}|                     ¦   «         |k    r|} nŒ|rU‰|         |         }||k    r*||f‰d|› d|› �<   ‰                     |› d|› d�¦  «         �Œ‚‰                     |	¦  «         �Œ™‰                     |	¦  «         �Œ°‰                     |	¦  «         �ŒÇ ||¦  «         t          |ddd¬¦  «        5 }|                     ‰¦  «         d
d
d
¦  «         n# 1 swxY w Y   t*                               d|› d|j        › dt1          ‰¦  «        › d�¦  «         ‰S )u¸  
        Ã�p dá»¥ng profile cáº¥u hÃ¬nh Ä‘á»“ há»�a / Ã¢m thanh vÃ o poe2_production_Config.ini.
        Sá»­ dá»¥ng thuáº­t toÃ¡n in-place section scanner Ä‘á»ƒ:
        - Báº£o toÃ n 100% cáº¥u trÃºc file, thá»© tá»± section, comment, khoáº£ng tráº¯ng.
        - Báº£o toÃ n cÃ¡c key Ä‘áº·c biá»‡t cÃ³ dáº¥u cháº¥m (vd: always_highlight.gamepad).
        - Tráº£ vá»� danh sÃ¡ch thay Ä‘á»•i { "SECTION.key": (old_val, new_val) }.
        u   Profile khÃ´ng há»£p lá»‡: 'u   '. Há»£p lá»‡: rd   u0   KhÃ´ng tÃ¬m tháº¥y file cáº¥u hÃ¬nh POE2 táº¡i: zdefault candidatesr}   r~   r   r   NÚsectionc                 óÔ   •— | r| ‰vrdS ‰|                                ¦   «         D ]C\  }}|                     ¦   «         ‰vr(‰                     |› d|› d�¦  «         d|f‰d| › d|› �<   ŒDdS )uH   ChÃ¨n cÃ¡c khÃ³a trong profile chÆ°a cÃ³ trong file vÃ o cuá»‘i section.Nr†   ú
z<NEW>r‚   ú] )ÚitemsÚlowerÚappend)r—   ÚkeyÚ
target_valÚchangesÚ	new_linesÚprofile_dataÚseen_keys_in_sections      €€€€r_   Úflush_missing_keysz?Poe2GraphicsOptimizer.apply_profile.<locals>.flush_missing_keysG  s¦   ø€ àð ˜g¨\Ð9Ð9Ø�Ø#/°Ô#8×#>Ò#>Ñ#@Ô#@ð Jð J‘��ZØ—9’9‘;”;Ð&:Ð:Ð:Ø×$Ò$¨Ð%<Ð%<¨jÐ%<Ð%<Ð%<Ñ=Ô=Ð=Ø5<¸jÐ4I�GÐ0 Ð0Ð0¨3Ð0Ð0Ñ1øðJð Jra   r‚   rƒ   r„   r…   r†   )r€   r�   rš   r™   Úwr   z
)r   Únewlineu   Ä�Ã£ Ã¡p dá»¥ng profile 'z' cho u   . Tá»•ng cá»™ng u    thay Ä‘á»•i.)rN   Ú
ValueErrorÚlistÚkeysr`   rT   ÚFileNotFoundErrorru   r‡   Ú	readlinesÚsetr   Ústrrˆ   r‰   rŠ   r�   r‹   rœ   ÚaddÚ
writelinesrg   rp   rm   Úlen)rZ   r”   rb   r•   rq   rŽ   ÚlinesÚcurrent_sectionr¤   r�   Úline_strÚraw_kÚraw_vÚk_cleanÚv_cleanÚk_lowerÚmatched_profile_keyÚpkrŸ   r    r¡   r¢   r£   s                      @@@@r_   Úapply_profilez#Poe2GraphicsOptimizer.apply_profile&  sj  øøøø€ ð �xÐ'Ð'ÝÐp¸LÐpÐpÕY]Õ^f×^kÒ^kÑ^mÔ^mÑYnÔYnÐpÐpÑqÔqÐqà×'Ò'°kÐ'ÑBÔBˆØð 	~˜x×/Ò/Ñ1Ô1ð 	~Ý#Ð$|ÐWbÐWzÐfzÐ$|Ð$|Ñ}Ô}Ð}àð 	(Ø×Ò˜hÑ'Ô'Ð'å Ô-ˆÝ�(˜C¨+¸hÐGÑGÔGð 	"È1Ø—K’K‘M”MˆEð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð /1ˆØ!ˆ	ØˆÝ$'¡E¤EÐð	J­µ¬ð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð ð $	'ñ $	'ˆDØ—z’z‘|”|ˆHà×"Ò" 3Ñ'Ô'ð ¨H×,=Ò,=¸cÑ,BÔ,Bð à"Ð" ?Ñ3Ô3Ð3Ø"*¨1¨R¨4¤.×"6Ò"6Ñ"8Ô"8�Ý'*¡u¤uÐ$Ø× Ò  Ñ&Ô&Ð&Øð ñ ' ?°lÐ#BÑ#BÀsÈhÀÁÐ_g×_rÒ_rÐs}Ñ_~Ô_~ÁØ'Ÿ~š~¨c°1Ñ5Ô5‘��uØŸ+š+™-œ-�ØŸ+š+™-œ-�Ø!Ÿ-š-™/œ/�Ø$×(Ò(¨Ñ1Ô1Ð1ð '+Ð#Ø& Ô7ð ð �BØ—x’x‘z”z WÒ,Ð,Ø.0Ð+Ø˜ð -ð 'ð +Ø!-¨oÔ!>Ð?RÔ!S�JØ *Ò,Ð,ØELÈjÐDY˜Ð @ OÐ @Ð @°wÐ @Ð @ÑAØ!×(Ò(¨GÐ)DÐ)D°jÐ)DÐ)DÐ)DÑEÔEÐEÑEà!×(Ò(¨Ñ.Ô.Ð.Ñ.à×$Ò$ TÑ*Ô*Ð*Ñ*à× Ò  Ñ&Ô&Ð&Ñ&ð 	Ð˜?Ñ+Ô+Ð+õ �(˜C¨'¸6ÐBÑBÔBð 	$ÀaØ�LŠL˜Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$õ 	�ŠÐ~°Ð~Ð~ÀHÄMÐ~Ð~ÕcfÐgnÑcoÔcoÐ~Ð~Ð~ÑÔÐØˆs$   Â>CÃC#Ã&C#Ì L"Ì"L&Ì)L&)N)NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr   r­   r   r`   r   ru   Úboolrz   r   r“   r»   © ra   r_   rP   rP   ´   sº  € € € € € ðð ð
 ðð ¨X°c¸D±jÔ-Að ÈXÐVZÌ^ð ð ð ñ „[ðð6 ð ð  ¨°°t±Ô(<ð  ÈÈhÐW[ÌnÐ^fÐgkÔ^lÐNlÔHmð  ð  ð  ñ „[ð ð4 ðð ¨°#¸±*Ô)=ð Èð ð ð ñ „[ðð, ðð ¨x¸¸d¹
Ô/Cð ÈtÐTWÐY]Ð^aÐcfÐ^fÔYgÐTgÔOhð ð ð ñ „[ðð: ð -1Ø"ð	Wð WàðWð ˜c D™jÔ)ðWð ð	Wð
 
ˆc�5˜˜c˜”?Ð"Ô	#ðWð Wð Wñ „[ðWð Wð Wra   rP   c            	      óL  — t          j        d¬¦  «        } |                      dt          t	          t
                               ¦   «         ¦  «        d¬¦  «         |                      ddd¬	¦  «         |                      d
dd¬	¦  «         |                      ddd¬	¦  «         |                      dt          d d¬¦  «         |                      ¦   «         }t           	                    |j
        ¦  «        }|s/t          dt          j        ¬¦  «         t          j        d¦  «         t          d|› �¦  «         |j        r±t          d¦  «         t
                               ¦   «         D ]t\  }}t          d|› d�¦  «         |                     ¦   «         D ]G\  }}t          d|› d�¦  «         |                     ¦   «         D ]\  }}t          d|› d|› �¦  «         ŒŒHŒut          j        d¦  «         |j        rot                               |¦  «        }	|	r$t          d¦  «         t          j        d¦  «         n/t          dt          j        ¬¦  «         t          j        d¦  «         |j        �rþt                               |¦  «        }
|
                     di ¦  «        }|
                     di ¦  «        }t          d ¦  «         t          d!|                     d"¦  «        › d#|                     d$¦  «        › �¦  «         t          d%|                     d&¦  «        › d'|                     d(¦  «        › �¦  «         t          d)|                     d*¦  «        › �¦  «         t          d+|                     d,¦  «        › d-|                     d.¦  «        › d/�¦  «         t          d0|                     d1¦  «        › d-|                     d2¦  «        › d/�¦  «         t          d3|                     d4¦  «        › �¦  «         t          d5|                     d6¦  «        › d7|                     d8¦  «        › d9�¦  «         t          d:|                     d;¦  «        › d<|                     d=¦  «        › d/�¦  «         t          d>|                     d?¦  «        › d@|                     dA¦  «        › �¦  «         t          dB|                     dC¦  «        › dD|                     dE¦  «        › �¦  «         t          dF|                     dG¦  «        › �¦  «         t          dH|                     dI¦  «        › �¦  «         t          dJ|                     dK¦  «        › �¦  «         t          j        d¦  «         |j        r¡t          dL|j        › dM�¦  «         t                               |j        |¦  «        }t          dNt1          |¦  «        › dO�¦  «         |                     ¦   «         D ] \  }\  }}t          dP|› dQ|› dR|› �¦  «         Œ!t          j        d¦  «         |                      ¦   «          d S )SNz<AutoPOE2 - Graphics & Resource Optimizer for Path of Exile 2)Údescriptionz	--profileuL   Profile Ä‘á»“ há»�a muá»‘n Ã¡p dá»¥ng (ultra_low, low_1080p, balanced_1080p))ÚtypeÚchoicesÚhelpz--statusÚ
store_trueuP   Hiá»ƒn thá»‹ tÃ³m táº¯t cÃ¡c cÃ i Ä‘áº·t Ä‘á»“ há»�a vÃ  Ã¢m thanh hiá»‡n thá»�i)ÚactionrÇ   z	--restoreu>   KhÃ´i phá»¥c file cáº¥u hÃ¬nh tá»« báº£n sao lÆ°u gá»‘c (.bak)z--list-profilesu,   Liá»‡t kÃª chi tiáº¿t cÃ¡c profile cÃ³ sáºµnz--config-fileu=   Ä�Æ°á»�ng dáº«n tÃ¹y chá»‰nh tá»›i poe2_production_Config.ini)rÅ   ÚdefaultrÇ   uJ   â�Œ Lá»–I: KhÃ´ng tÃ¬m tháº¥y file cáº¥u hÃ¬nh poe2_production_Config.ini!)Úfiler„   u   ðŸ“� Tá»‡p cáº¥u hÃ¬nh: u   
=== DANH SÃ�CH PROFILES ===z
[Profile: rƒ   z  [z    z = r   u5   âœ… Ä�Ã£ khÃ´i phá»¥c cáº¥u hÃ¬nh gá»‘c thÃ nh cÃ´ng.u*   â�Œ KhÃ´i phá»¥c cáº¥u hÃ¬nh tháº¥t báº¡i.rC   rD   u#   
=== THIáº¾T Láº¬P HIá»†N Táº I ===u   â€¢ Resolution           : r   Úxr   u&   â€¢ Fullscreen/Windowed  : Fullscreen=r   z, Borderless=r   u   â€¢ Renderer             : Úrenderer_typeu   â€¢ FPS Limit Active     : r3   z
 (Enabled=r4   ú)u   â€¢ FPS Limit Background : r5   r6   u   â€¢ Dynamic Particle Cull: r   u   â€¢ Dynamic Resolution   : r7   z	 (Target=r8   zfps)u   â€¢ Upscaling            : r9   z (r:   u"   â€¢ Shadow / Bloom       : Shadow=r   z, Bloom=r*   u'   â€¢ Screenspace / Light  : Screenspace=r!   z, Light=r$   u   â€¢ Mute in Background   : r>   u   â€¢ Sound Channels       : r?   u   â€¢ Reverb               : r@   u    
ðŸš€ Ä�ang Ã¡p dá»¥ng profile 'z'...u#   âœ… HoÃ n táº¥t! Ä�Ã£ cáº­p nháº­t u    thÃ´ng sá»‘:z   z: rw   )ÚargparseÚArgumentParserÚadd_argumentr­   r¨   rN   r©   Ú
parse_argsrP   r`   Úconfig_fileÚprintÚsysÚstderrÚexitÚlist_profilesr›   Úrestorerz   Ústatusr“   ÚgetÚprofiler»   r°   Ú
print_help)ÚparserÚargsÚcfg_pathÚp_nameÚp_secsÚsecr©   r‘   r’   ÚokÚsettingsÚdispÚsndr    Úold_vÚnew_vs                   r_   Úmainrê   „  s·  € ÝÔ$Ð1oÐpÑpÔp€FØ
×Ò˜­#µt½H¿MºM¹O¼OÑ7LÔ7Lð  TbÐñ  cô  cð  cØ
×Ò˜
¨<ð  ?QÐñ  Rô  Rð  RØ
×Ò˜¨LÐ?Ðñ  Aô  Að  AØ
×ÒÐ)°,ÐEsÐÑtÔtÐtØ
×Ò˜­c¸4ð  GFÐñ  Gô  Gð  GØ×ÒÑÔ€Då$×5Ò5°dÔ6FÑGÔG€HØð ÝÐZÕadÔakÐlÑlÔlÐlÝŒ�‰Œˆå	Ð
/ XÐ
/Ð
/Ñ0Ô0Ð0àÔð ÝÐ-Ñ.Ô.Ð.Ý&ŸnšnÑ.Ô.ð 	,ð 	,‰NˆF�FÝÐ* Ð*Ð*Ð*Ñ+Ô+Ð+Ø#Ÿ\š\™^œ^ð ,ð ,‘	��TÝ�l˜C�l�l�lÑ#Ô#Ð#Ø ŸJšJ™LœLð ,ð ,‘D�A�qÝÐ* Ð*Ð* qÐ*Ð*Ñ+Ô+Ð+Ð+ð,ð,õ 	Œ�‰Œˆà„|ð Ý"×1Ò1°(Ñ;Ô;ˆØð 	ÝÐIÑJÔJÐJÝŒH�Q‰KŒKˆKˆKåÐ>ÅSÄZÐPÑPÔPÐPÝŒH�Q‰KŒKˆKà„{ñ Ý(×=Ò=¸hÑGÔGˆØ�|Š|˜I rÑ*Ô*ˆØ�lŠl˜7 BÑ'Ô'ˆÝÐ4Ñ5Ô5Ð5ÝÐj¨D¯HªHÐ5GÑ,HÔ,HÐjÐjÈ4Ï8Ê8ÐTgÑKhÔKhÐjÐjÑkÔkÐkÝð  I°t·x²xÀÑ7MÔ7Mð  Ið  IÐ\`×\dÒ\dð  fFñ  ]Gô  ]Gð  Ið  Iñ  	Jô  	Jð  	JÝÐG¨D¯HªH°_Ñ,EÔ,EÐGÐGÑHÔHÐHÝÐy¨D¯HªHÐ5FÑ,GÔ,GÐyÐyÐSW×S[ÒS[Ð\uÑSvÔSvÐyÐyÐyÑzÔzÐzÝð  P¨D¯HªHÐ5QÑ,RÔ,Rð  Pð  PÐ^b×^fÒ^fð  hLñ  _Mô  _Mð  Pð  Pð  Pñ  	Qô  	Qð  	QÝÐW¨D¯HªHÐ5TÑ,UÔ,UÐWÐWÑXÔXÐXÝð  B¨D¯HªHÐ5MÑ,NÔ,Nð  Bð  BÐY]×YaÒYaÐbzÑY{ÔY{ð  Bð  Bð  Bñ  	Cô  	Cð  	CÝÐa¨D¯HªH°YÑ,?Ô,?ÐaÐaÀ4Ç8Â8ÐL]ÑC^ÔC^ÐaÐaÐaÑbÔbÐbÝÐp°4·8²8¸MÑ3JÔ3JÐpÐpÐTX×T\ÒT\Ð]mÑTnÔTnÐpÐpÑqÔqÐqÝÐ|¸¿ºÐAVÑ8WÔ8WÐ|Ð|Ðae×aiÒaiÐjyÑazÔazÐ|Ð|Ñ}Ô}Ð}ÝÐK¨C¯GªGÐ4HÑ,IÔ,IÐKÐKÑLÔLÐLÝÐF¨C¯GªG°OÑ,DÔ,DÐFÐFÑGÔGÐGÝÐH¨C¯GªGÐ4EÑ,FÔ,FÐHÐHÑIÔIÐIÝŒ�‰Œˆà„|ð ÝÐD°$´,ÐDÐDÐDÑEÔEÐEÝ'×5Ò5°d´lÀHÑMÔMˆÝÐOµC¸±L´LÐOÐOÐOÑPÔPÐPØ!(§¢¡¤ð 	1ð 	1ÑˆA‰~��uÝÐ/˜Ð/Ð/˜UÐ/Ð/¨Ð/Ð/Ñ0Ô0Ð0Ð0ÝŒ�‰Œˆð ×ÒÑÔÐÐÐra   Ú__main__)'r¿   rV   rÕ   rn   ÚloggingrÏ   Úpathlibr   r   Útypingr   r   r   r   r	   ÚhasattrÚstdoutr
   rÖ   rx   Úsrc.assistant_tool.configr   ÚImportErrorÚ	getLoggerrg   ÚhandlersÚStreamHandlerÚhandlerÚsetFormatterÚ	FormatterÚ
addHandlerÚsetLevelÚINFOrN   r­   Ú__annotations__rP   rê   r¼   rÂ   ra   r_   ú<module>rý      s&  ððð ð ð 
€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ð	Ø€wˆsŒz˜=Ñ)Ô)ð CØŒ
×Ò¨¸	ÐÑBÔBÐBØ€wˆsŒz˜=Ñ)Ô)ð CØŒ
×Ò¨¸	ÐÑBÔBÐBøøØð 	ð 	ð 	Ø€Dð	øøøðØ0Ð0Ð0Ð0Ð0Ð0Ð0øØð ð ð Ø€F€F€Fðøøøð 
ˆÔ	Ð.Ñ	/Ô	/€Ø„ð "Ø#ˆgÔ# C¤JÑ/Ô/€GØ×ÒÐ*˜Ô*Ð+jÐt~ÐÑÔñ  Aô  Að  AØ
×Ò�gÑÔÐØ
‡O‚O�G”LÑ!Ô!Ð!ð
Ø ð
à ð
ð ˜'ð
ð ˜wð	
ð
 -¨gð
ð ˜5ð
ð ˜%ð
ð ,¨Vð
ð " 3ð
ð -¨cð
ð ˜Sð
ð   ð
ð Ð2ð
ð ˜Cð
ð )¨#ð
ð  ˜eð!
ð" (¨ð#
ð$  'Ø 'Ø#Ø'-Ø*.Ø28Ø&,Ø&*ØØ,Ø$1Ø"/ð;
ð 
ð 
ð@ #)Ø"Ø&Ø&)ð	
ð 
ð /°ð
ðQ+ð +ð^
Ø ð
à ð
ð ˜'ð
ð ˜wð	
ð
 -¨gð
ð ˜5ð
ð ˜%ð
ð ,¨Vð
ð " 3ð
ð -¨cð
ð ˜Sð
ð   ð
ð Ð2ð
ð ˜Cð
ð )¨#ð
ð  ˜eð!
ð" (¨ð#
ð$  'Ø 'Ø#Ø'-Ø*.Ø28Ø&,Ø&*ØØ,Ø$1Ø"/ð;
ð 
ð 
ð@ #)Ø"Ø&Ø&)ð	
ð 
ð /°ð
ðQ+ð +ð\
Ø ð
à ð
ð ˜'ð
ð ˜wð	
ð
 -¨gð
ð ˜5ð
ð ˜%ð
ð ,¨Vð
ð " 3ð
ð -¨cð
ð ˜Sð
ð   ð
ð Ð2ð
ð ˜Cð
ð )¨#ð
ð  ˜fð!
ð" (¨ð#
ð$  'Ø 'Ø#Ø'-Ø*.Ø28Ø&,Ø&*ØØ(Ø$1Ø"+ð;
ð 
ð 
ð@ #)Ø%Ø&ð
ð 
ð /°ð
ðM)ð )ðsC2ð C2€ˆ$ˆs�D˜˜d 3¨ 8œnÐ,Ô-Ð-Ô
.ð Cð Cñ CðLJð Jð Jð Jð Jñ Jô Jð Jð`@ð @ð @ðF ˆzÒÐØ€D�F„F€F€F€Fð Ðs$   ³AB ÂBÂBÂB! Â!B+Â*B+