§
    ^™¬j(   ã                  ó  — d Z ddlmZ ddl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 	  eej        d¦  «        r6ej                             d¬	¦  «         ej                             d¬	¦  «         n# e$ r Y nw xY wej                             d e ee¦  «                             ¦   «         j        j        ¦  «        ¦  «         dd
lmZ ddlmZmZm Z  ddl!m"Z# ddd„Z$dd„Z%dd„Z&d„ Z'e(dk    r e'¦   «          dS dS ) uª  AutoPOE2 - Execute Full Reconnect Pipeline (Post-Maintenance Phase 2).
=====================================================================
Quy trÃ¬nh khá»Ÿi cháº¡y vÃ  tÃ¡i káº¿t ná»‘i tá»± Ä‘á»™ng cÃ³ giÃ¡m sÃ¡t trÃªn POE2 v0.5.5c:
1. KHÃ”NG dá»�n dáº¹p Shader cache (giá»¯ nguyÃªn cache Ä‘á»ƒ D3D12 náº¡p bytecode trong 4.0s).
2. Khá»Ÿi cháº¡y PathOfExile.exe vá»›i cá»� CREATE_NEW_PROCESS_GROUP = 0x200.
3. Ä�Ã³n báº¯t cá»­a sá»• POEWindowClass vÃ  gÃ¡n cá»� HWND_TOPMOST & Foreground.
4. KÃ­ch hoáº¡t trá»±c tiáº¿p ká»‹ch báº£n Reconnect Ä‘Æ°a Monk CI vÃ o Shoreline Hideout.
5. XÃ¡c thá»±c sá»± kiá»‡n chuyá»ƒn cáº£nh Hideout tá»« Client.txt theo Ä‘Ãºng PID tiáº¿n trÃ¬nh.
6. Ghi nháº­n trung thá»±c Vitals tá»« OCR (RAM PE x64 v0.5.5c pending R&D offset, Rule 5: No Hardcode).
7. Duy trÃ¬ Grace Period 10s & kÃ­ch hoáº¡t F8 Emergency Pause (INV-F8-MUTES-BRAIN).
8. Treo daemon proc.wait() Ä‘á»ƒ duy trÃ¬ phiÃªn game vÄ©nh viá»…n.
é    )ÚannotationsN)Údatetime)ÚPath)ÚAnyÚDictÚOptionalÚreconfigureúutf-8©Úencoding)Ú"emergency_f8_pause_and_release_all)Úattach_to_default_desktopÚensure_window_focusÚfind_poe2_windowÚINFOÚmsgÚstrÚlevelc                ó–   — t          j        ¦   «                              d¦  «        d d…         }t          d|› d|› d| › �d¬¦  «         d S )Nz%H:%M:%S.%féýÿÿÿú[z][z][ReconnectPipeline] T)Úflush)r   ÚnowÚstrftimeÚprint)r   r   Útss      ú*scripts/execute_full_reconnect_pipeline.pyÚlogr   (   sV   € Ý	Œ‰Œ×	 Ò	  Ñ	/Ô	/°°°Ô	4€BÝ	Ð
5ˆbÐ
5Ð
5�EÐ
5Ð
5°Ð
5Ð
5¸TÐBÑBÔBÐBÐBÐBó    ÚhwndÚintÚreturnÚboolc           
     ó\  — | r$t           j        j                             | ¦  «        sdS ddlm}m}  |¦   «          t           j        j        }d}d}d}d}d}|                     | |¦  «         |                     | |dddd||z  |z  ¦  «          || ¦  «         t          j
        d	¦  «         d
S )uJ   Ä�Æ°a cá»­a sá»• POE2 lÃªn Foreground vÃ  thiáº¿t láº­p cá»� HWND_TOPMOST.Fr   )r   r   é	   éÿÿÿÿé   é   é@   g333333Ó?T)ÚctypesÚwindllÚuser32ÚIsWindowÚsrc.common.win32_windowr   r   Ú
ShowWindowÚSetWindowPosÚtimeÚsleep)	r    r   r   r,   Ú
SW_RESTOREÚHWND_TOPMOSTÚ
SWP_NOSIZEÚ
SWP_NOMOVEÚSWP_SHOWWINDOWs	            r   Úbring_window_topmostr8   -   s×   € àð •v”}Ô+×4Ò4°TÑ:Ô:ð ØˆuØVÐVÐVÐVÐVÐVÐVÐVØÐÑÔÐÝŒ]Ô!€FØ€JØ€LØ€JØ€JØ€Nà
×Ò�d˜JÑ'Ô'Ð'Ø
×Ò˜˜l¨A¨q°!°Q¸
ÀZÑ8OÐR`Ñ8`ÑaÔaÐaØÐ˜ÑÔÐÝ„Jˆs�O„O€OØˆ4r   Úexe_pathÚworking_dirúOptional[int]c                óø  — 	 ddl }|j                             d¦  «        }|                     d¦  «        }|                     d¦  «        j                             ¦   «         }d| › d�|_        ||_        | 	                    d|¦  «        }t          |j        ¦  «        dk    rt          |j        ¦  «        S t          d|j        › �d¬	¦  «         n+# t          $ r}t          d
|› �d¬	¦  «         Y d}~nd}~ww xY wdS )u_   Khá»Ÿi cháº¡y POE2 qua WMI Win32_Process.Create Ä‘á»ƒ tÃ¡ch hoÃ n toÃ n khá»�i Task Job Object.r   Nz	winmgmts:ÚWin32_ProcessÚCreateú"u!   WMI Create tráº£ vá»� mÃ£ lá»—i: ÚWARN©r   u!   Lá»—i khá»Ÿi cháº¡y WMI qua COM: )Úwin32com.clientÚclientÚ	GetObjectÚGetÚMethods_ÚInParametersÚSpawnInstance_ÚCommandLineÚCurrentDirectoryÚExecMethod_r!   ÚReturnValueÚ	ProcessIdr   Ú	Exception)r9   r:   Úwin32comÚwmiÚprocÚ	in_paramsÚoutÚes           r   Úlaunch_poe2_via_wmirU   A   s   € ðCØÐÐÐØŒo×'Ò'¨Ñ4Ô4ˆØ�wŠw�Ñ'Ô'ˆØ—M’M (Ñ+Ô+Ô8×GÒGÑIÔIˆ	Ø / H   ˆ	ÔØ%0ˆ	Ô"Ø×Ò˜x¨Ñ3Ô3ˆÝˆsŒÑÔ 1Ò$Ð$Ý�s”}Ñ%Ô%Ð%ÝÐA°´ÐAÐAÈÐPÑPÔPÐPÐPøÝð Cð Cð CÝÐ3°Ð3Ð3¸6ÐBÑBÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøàˆ4s   ‚B2C Â5C Ã
C7ÃC2Ã2C7c                 óp
  — d} t           j                             | ¦  «        }t           j                             | ¦  «        st	          d| › �d¬¦  «         dS t	          d¦  «         t          | |¦  «        }|rt	          d|› �¦  «         n:t	          dd	¬¦  «         t          j        j         	                    d d
| d |d¦  «         |sCddl
m} t          d¦  «        D ]-}t          j        d¦  «          |d¦  «        }|r
|d         } nŒ.t	          d|› �¦  «         t	          d¦  «         t          j        j        }t!          ¦   «          d}t          j        ¦   «         }t          d¦  «        D ]³}	t          j        d¦  «         t!          ¦   «          t#          ¦   «         }
|
s|                     dd ¦  «        }
|
r?t'          |
¦  «        }t          j        ¦   «         |z
  }t	          d|d›d|d›d�¦  «          n)ddl
m}  |¦   «         st	          d|› d�d¬¦  «          dS Œ´|st	          dd¬¦  «         dS t	          d|d›d �¦  «         t+          |¦  «         t          j        d!¦  «         t	          d"¦  «         t-          j        ||¬#¦  «        }|                     d$d¦  «        }t	          d%|› d&|                     d'¦  «        › d(�¦  «         |�rOt	          d)¦  «         t	          d*¦  «         t          j        d+¦  «         t	          d,¦  «         t	          d-¦  «         t3          ¦   «          t	          d.¦  «         d/|t5          |¦  «        |                     d'd0¦  «        d1|                     d2i ¦  «        d3|                     d4g ¦  «        |                     d5i ¦  «        d6d6t7          j        ¦   «                              d7¦  «        d8œ}t=          d9d:d;¬<¦  «        5 }t?          j         ||d=d¬>¦  «         d d d ¦  «         n# 1 swxY w Y   t	          d?¦  «         nÊt	          d@d	¬¦  «         dA|t5          |¦  «        |                     d'dB¦  «        |                     dCdD¦  «        |                     d5i ¦  «        t7          j        ¦   «                              d7¦  «        dEœ}t=          d9d:d;¬<¦  «        5 }t?          j         ||d=d¬>¦  «         d d d ¦  «         n# 1 swxY w Y   t	          dF¦  «         ddl
m}  |¦   «         rt	          dG|› dH�¦  «         nt	          dI|› dJ�d	¬¦  «         |S )KNzJC:\Program Files (x86)\Grinding Gear Games\Path of Exile 2\PathOfExile.exeu*   â�Œ KhÃ´ng tÃ¬m tháº¥y binary game táº¡i: ÚERRORrA   Fu[   --- BÆ¯á»šC 1: KHá»žI CHáº Y POE2 CLIENT QUA WMI BREAKAWAY (GIá»® NGUYÃŠN SHADER CACHE) ---uK   âœ… Ä�Ã£ khá»Ÿi cháº¡y POE2 client Ä‘á»™c láº­p qua WMI thÃ nh cÃ´ng, PID: uI   âš ï¸� Khá»Ÿi cháº¡y WMI COM tháº¥t báº¡i, fallback sang ShellExecuteW...r@   Úopenr'   r   )Úfind_process_by_nameé   g      à?zPathOfExile.exeu/   âœ… Tiáº¿n trÃ¬nh POE2 Ä‘Ã£ phÃ¡t hiá»‡n, PID: uH   --- BÆ¯á»šC 2: Ä�Ã“N Báº®T Cá»¬A Sá»” POEWindowClass (Tá»‘i Ä‘a 45s) ---é-   g      ð?ÚPOEWindowClassu/   ðŸŽ¯ Ä�Ãƒ TÃŒM THáº¤Y Cá»¬A Sá»” POE2! HWND: 0xÚXz sau z.1fÚs)Úis_poe2_runningu   â�Œ Tiáº¿n trÃ¬nh PID u    Ä‘Ã£ thoÃ¡t sá»›m.u/   â�Œ KhÃ´ng tÃ¬m tháº¥y cá»­a sá»• POE2 sau 45s.u'   --- BÆ¯á»šC 3: Ä�Æ¯A Cá»¬A Sá»” HWND 0xu    LÃŠN TOPMOST & FOCUS ---g      @uF   --- BÆ¯á»šC 4: KÃ�CH HOáº T Ká»ŠCH Báº¢N RECONNECT & ENTER HIDEOUT ---)r    ÚpidÚsuccessu   Káº¿t quáº£ Reconnect: z
 | Zone: 'Úzoneú'u=   âœ… Monk CI Ä‘Ã£ bÆ°á»›c vÃ o Shoreline Hideout thÃ nh cÃ´ng!uT   --- BÆ¯á»šC 5: DUY TRÃŒ GRACE PERIOD 10.0s (Báº¢O TOÃ€N Báº¤T KHáº¢ XÃ‚M PHáº M) ---g      $@u   Grace Period káº¿t thÃºc.uU   --- BÆ¯á»šC 6: KÃ�CH HOáº T F8 EMERGENCY PAUSE & RELEASE ALL (INV-F8-MUTES-BRAIN) ---u\   ðŸ�� NhÃ¢n váº­t Monk CI Ä‘Ã£ Ä‘Æ°á»£c park an toÃ n tuyá»‡t Ä‘á»‘i táº¡i Shoreline Hideout!ÚSUCCESSzShoreline HideoutzMonk CIÚvitalszPENDING_OFFSET_RND_v0.5.5cÚclient_log_evidenceÚevidence_imagesTz%Y-%m-%d %H:%M:%S)Ústatusr`   r    rb   Ú	characterre   Ú
ram_statusrf   rg   Úgrace_period_appliedÚf8_pause_appliedÚ	timestampzreconnect_result.jsonÚwr
   r   r(   )ÚindentÚensure_asciiuD   ðŸ“Š Ä�Ã£ xuáº¥t káº¿t quáº£ thÃ nh cÃ´ng vÃ o reconnect_result.jsonuE   âš ï¸� Reconnect chÆ°a Ä‘áº¡t tráº¡ng thÃ¡i thÃ nh cÃ´ng hoÃ n toÃ n.ÚFAILEDÚUnknownÚerrorzFailed to enter hideout)rh   r`   r    rb   rs   rg   rm   u>   --- BÆ¯á»šC 7: KIá»‚M TRA TRáº NG THÃ�I TIáº¾N TRÃŒNH GAME ---u   âœ… Client game POE2 PID u,    Ä‘ang cháº¡y á»•n Ä‘á»‹nh trong background.u   âš ï¸� Client game POE2 PID u    khÃ´ng cÃ²n cháº¡y.)!ÚosÚpathÚdirnameÚexistsr   rU   r*   r+   Úshell32ÚShellExecuteWÚsrc.common.win32_processrY   Úranger1   r2   r,   r   r   ÚFindWindowWr!   r_   r8   Úrc_modÚmainÚgetr   Úhexr   r   r   rX   ÚjsonÚdump)r9   r:   r`   rY   Ú_Úpr,   Ú
found_hwndÚ
start_waitÚiÚhÚelapsedr_   Ú	rc_resultÚreconnect_okÚres_dataÚrfs                    r   r~   r~   S   sY  € Ø\€HÝ”'—/’/ (Ñ+Ô+€KåŒ7�>Š>˜(Ñ#Ô#ð ÝÐC¸ÐCÐCÈ7ÐSÑSÔSÐSØˆuåÐeÑfÔfÐfÝ
˜h¨Ñ
4Ô
4€CØ
ð ZÝÐ_ÐZ]Ð_Ð_Ñ`Ô`Ð`Ð`åÐWÐ_eÐfÑfÔfÐfÝŒÔ×+Ò+¨D°&¸(ÀDÈ+ÐWXÑYÔYÐYàð ØAÐAÐAÐAÐAÐAÝ�r‘”ð 	ð 	ˆAÝŒJ�s‰OŒOˆOØ$Ð$Ð%6Ñ7Ô7ˆAØð Ø˜”d�Ø�ðõ Ð?¸#Ð?Ð?Ñ@Ô@Ð@ÝÐRÑSÔSÐSåŒ]Ô!€FÝÑÔÐØ€JÝ”‘”€Jå�2‰YŒYð ð ˆÝŒ
�3‰ŒˆÝ!Ñ#Ô#Ð#ÝÑÔˆØð 	;Ø×"Ò"Ð#3°TÑ:Ô:ˆAØð 	Ý˜Q™œˆJÝ”i‘k”k JÑ.ˆGÝÐcÀ*ÐcÐcÐcÐU\ÐcÐcÐcÐcÑdÔdÐdØˆEØ<Ð<Ð<Ð<Ð<Ð<ØˆÑ Ô ð 	ÝÐA¨ÐAÐAÐAÈÐQÑQÔQÐQØ�5�5ð	ð ð ÝÐ=ÀWÐMÑMÔMÐMØˆuåÐY°*ÐYÐYÐYÐYÑZÔZÐZÝ˜Ñ$Ô$Ð$Ý„Jˆs�O„O€OåÐPÑQÔQÐQÝ” °Ð5Ñ5Ô5€IØ—=’= ¨EÑ2Ô2€LÝÐR ,ÐRÐR¸)¿-º-ÈÑ:OÔ:OÐRÐRÐRÑSÔSÐSàñ (BÝÐKÑLÔLÐLÝÐbÑcÔcÐcÝŒ
�4ÑÔÐÝÐ'Ñ(Ô(Ð(åÐcÑdÔdÐdÝ*Ñ,Ô,Ð,ÝÐjÑkÔkÐkð  ØÝ˜
‘O”OØ—M’M &Ð*=Ñ>Ô>Ø"Ø—m’m H¨bÑ1Ô1Ø6Ø#,§=¢=Ð1FÈÑ#KÔ#KØ(Ÿ}š}Ð->ÀÑCÔCØ$(Ø $Ý!œ™œ×0Ò0Ð1DÑEÔEð
ð 
ˆõ Ð)¨3¸ÐAÑAÔAð 	BÀRÝŒI�h ¨1¸5ÐAÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	BåÐRÑSÔSÐSÐSåÐSÐ[aÐbÑbÔbÐbàØÝ˜
‘O”OØ—M’M &¨)Ñ4Ô4Ø—]’] 7Ð,EÑFÔFØ(Ÿ}š}Ð->ÀÑCÔCÝ!œ™œ×0Ò0Ð1DÑEÔEð
ð 
ˆõ Ð)¨3¸ÐAÑAÔAð 	BÀRÝŒI�h ¨1¸5ÐAÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bõ ÐHÑIÔIÐIØ8Ð8Ð8Ð8Ð8Ð8Ø€ÑÔð TÝÐY¨ÐYÐYÐYÑZÔZÐZÐZåÐD¨3ÐDÐDÐDÈFÐSÑSÔSÐSàÐs$   Ï$P	Ð	PÐPÒ>S#Ó#S'Ó*S'Ú__main__)r   )r   r   r   r   )r    r!   r"   r#   )r9   r   r:   r   r"   r;   ))Ú__doc__Ú
__future__r   r*   r�   rt   Ú
subprocessÚsysr1   r   Úpathlibr   Útypingr   r   r   ÚhasattrÚstdoutr	   ÚstderrrN   ru   Úinsertr   Ú__file__ÚresolveÚparentÚsrc.common.win32_inputr   r.   r   r   r   Ú#scripts.reconnect_and_enter_hideoutÚreconnect_and_enter_hideoutr}   r   r8   rU   r~   Ú__name__© r   r   ú<module>r¡      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð	Ø€wˆsŒz˜=Ñ)Ô)ð 1ØŒ
×Ò¨ÐÑ0Ô0Ð0ØŒ
×Ò¨ÐÑ0Ô0Ð0øøØð 	ð 	ð 	Ø€Dð	øøøð „‡‚��3�3�t�t˜H‘~”~×-Ò-Ñ/Ô/Ô6Ô=Ñ>Ô>Ñ ?Ô ?Ð ?à EÐ EÐ EÐ EÐ EÐ EØ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ 4Ð 4Ð 4Ð 4Ð 4Ð 4ðCð Cð Cð Cð Cð
ð ð ð ð(ð ð ð ð$nð nð nðb ˆzÒÐØ€D�F„F€F€F€Fð Ðs   ¸AB  Â BÂB