§
    Í¯jéZ  ã                  óô  — 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mZ ddl	m
Z
 ddlmZmZmZmZmZ ddl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! ddl"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m'c m)Z) ddl*m'c m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 	 ddl1m2Z2 n# e3$ r dZ2Y nw xY wd0d1d„Z4d2d„Z5	 d3d4d„Z6	 	 d5d6d'„Z7d7d8d*„Z8d9d:d+„Z9e:d,k    r) e9¦   «         Z; e< ej=        e;d-d.e¬/¦  «        ¦  «         dS dS );u  AutoPOE2 - Auto-Reconnect & Return to Hideout (Authentic Telemetry).
====================================================================
Tá»± Ä‘á»™ng Ä‘Ã³ng há»™p thoáº¡i Disconnected, báº¥m Log In, chá»�n nhÃ¢n váº­t Monk CI
vÃ  Ä‘Æ°a vÃ o Shoreline Hideout vá»›i 100% dá»¯ liá»‡u thá»±c nghiá»‡m (DoD Rule 5).

NguyÃªn táº¯c báº¥t biáº¿n:
- INV-CAPTURE-CLIENT-ONLY: LuÃ´n Ä‘Æ°a cá»­a sá»• lÃªn HWND_TOPMOST vÃ  Focus trÆ°á»›c khi chá»¥p.
- Rule 4C & Rule 5: KhÃ´ng giáº£ láº­p sá»‘ liá»‡u Vitals, trÃ­ch xuáº¥t thá»±c tá»« OCR/Client.txt.
é    )ÚannotationsN)Údatetime)ÚPath)ÚAnyÚDictÚListÚOptionalÚTuple)ÚImageÚreconfigureúutf-8)Úencoding)Ú
LogWatcher)ÚOpticalHPSensor)Úcapture_rect_bitbltÚcapture_window_bitbltÚcapture_window_print)Úattach_to_default_desktopÚensure_window_focusÚfind_poe2_windowÚget_client_rect)Úsafe_ocr_pilÚINFOÚmsgÚstrÚlevelc                ó–   — t          j        ¦   «                              d¦  «        d d…         }t          d|› d|› d| › �d¬¦  «         d S )Nz%H:%M:%S.%féýÿÿÿú[z][z][AutoReconnect] T)Úflush)r   ÚnowÚstrftimeÚprint)r   r   Útss      ú;C:\Projects\AutoPOE2\scripts\reconnect_and_enter_hideout.pyÚlogr&   4   sV   € Ý	Œ‰Œ×	 Ò	  Ñ	/Ô	/°°°Ô	4€BÝ	Ð
1ˆbÐ
1Ð
1�EÐ
1Ð
1¨CÐ
1Ð
1¸Ð>Ñ>Ô>Ð>Ð>Ð>ó    ÚhwndÚintÚreturnÚboolc                ó0   — | sdS ddl m}  || d¬¦  «        S )ue   Ä�Æ°a cá»­a sá»• POE2 lÃªn Foreground vÃ  thiáº¿t láº­p cá»� HWND_TOPMOST (SSoT ensure_window_focus).Fr   )r   i   )Ú
timeout_ms)Úsrc.common.win32_windowr   )r(   r   s     r%   Úmake_window_topmostr/   9   s7   € àð ØˆuØ;Ð;Ð;Ð;Ð;Ð;ØÐ˜t°Ð4Ñ4Ô4Ð4r'   úcaptures/reconnectÚoutput_pathÚ
output_dirúOptional[Image.Image]c           	     óŠ  — t          j        |d¬¦  «         t          | ¦  «         t          | ¦  «        \  }}}}d}| rt	          | d¬¦  «        }|€|dk    r|dk    rt          ||||¦  «        }|€tt          | d¬¦  «        }|ra|dk    r[|dk    rU|j        \  }	}
t          d|	|z
  dz  ¦  «        }t          d|
|z
  |z
  ¦  «        }| 	                    ||||z   ||z   f¦  «        }|rG| 
                    |d¦  «         t          d	|› d
|j        d         › d|j        d         › d�¦  «         |S t          d| d›�d¬¦  «         dS )ud   Chá»¥p cá»­a sá»• game POE2 Ä‘áº£m báº£o khÃ´ng bá»‹ cá»­a sá»• khÃ¡c (Antigravity/IDE) che khuáº¥t.T©Úexist_okN)Úclient_onlyr   )Úrender_full_contenté   ÚPNGu'   ðŸ“¸ Ä�Ã£ lÆ°u áº£nh hiá»‡n trÆ°á»�ng: z (Úxé   ú)u*   â�Œ KhÃ´ng thá»ƒ chá»¥p cá»­a sá»• HWND 0xÚXÚERROR©r   )ÚosÚmakedirsr/   r   r   r   r   ÚsizeÚmaxÚcropÚsaver&   )r(   r1   r2   ÚclÚctÚcwÚchÚimgÚfullÚwÚhÚbxÚbys                r%   Úcapture_clean_game_windowrQ   A   s�  € õ „K�
 TÐ*Ñ*Ô*Ð*Ý˜ÑÔÐå$ TÑ*Ô*�N€BˆˆB�Ø
€Càð <Ý# D°dÐ;Ñ;Ô;ˆð €{�r˜A’v�v " q¢& &Ý! " b¨"¨bÑ1Ô1ˆð €{Ý# D¸dÐCÑCÔCˆØð 	8�B˜’F�F˜r Ašv˜vØ”9‰DˆAˆqÝ�Q˜˜R™ A™Ñ&Ô&ˆBÝ�Q˜˜B™ ™Ñ$Ô$ˆBØ—)’)˜R  R¨"¡W¨b°2©gÐ6Ñ7Ô7ˆCà
ð Ø�Š�˜eÑ$Ô$Ð$ÝÐa°kÐaÐaÀSÄXÈaÄ[ÐaÐaÐSVÔS[Ð\]ÔS^ÐaÐaÐaÑbÔbÐbØˆ
åÐ=°TÐ=Ð=Ð=ÀWÐMÑMÔMÐMØˆ4r'   é–   Úclient_log_pathÚpidúOptional[int]Úkeywordsú	List[str]Ú
tail_linesÚstart_offsetc                ó@  ‡
— t           j                             | ¦  «        sg S g }	 t          | ddd¬¦  «        5 }|dk    r*|                     |¦  «         |                     ¦   «         }n|                     ¦   «         | d…         }ddd¦  «         n# 1 swxY w Y   |rd|› �nd}|D ]HŠ
|‰
v rBt          ˆ
fd	„|D ¦   «         ¦  «        r'|                     ‰
                     ¦   «         ¦  «         ŒIn+# t          $ r}	t          d
|	› �d¬¦  «         Y d}	~	nd}	~	ww xY w|S )uR   Lá»�c cÃ¡c dÃ²ng log Client.txt tÆ°Æ¡ng á»©ng vá»›i PID vÃ  danh sÃ¡ch tá»« khÃ³a.Úrr   Úignore)r   Úerrorsr   NzClient ÚClientc              3  ó    •K  — | ]}|‰v V — Œ	d S ©N© )Ú.0ÚkwÚls     €r%   ú	<genexpr>z*read_client_txt_for_pid.<locals>.<genexpr>z   s'   øè è € Ð#?Ð#?° B¨! GÐ#?Ð#?Ð#?Ð#?Ð#?Ð#?r'   u   Lá»—i Ä‘á»�c Client.txt: ÚWARNr@   )rA   ÚpathÚexistsÚopenÚseekÚ	readlinesÚanyÚappendÚstripÚ	Exceptionr&   )rS   rT   rV   rX   rY   ÚmatchesÚfÚlinesÚpid_tagÚerd   s             @r%   Úread_client_txt_for_pidru   f   s—  ø€ õ Œ7�>Š>˜/Ñ*Ô*ð Øˆ	Ø€Gð;Ý�/ 3°ÀÐJÑJÔJð 	4ÈaØ˜aÒÐØ—’�|Ñ$Ô$Ð$ØŸš™œ��àŸš™œ z k l lÔ3�ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð &)Ð6�/˜C�/�/�/¨hˆØð 	*ð 	*ˆAØ˜!ˆ|ˆ|¥Ð#?Ð#?Ð#?Ð#?°hÐ#?Ñ#?Ô#?Ñ ?Ô ?ˆ|Ø—’˜qŸwšw™yœyÑ)Ô)Ð)øð	*øõ ð ;ð ;ð ;ÝÐ+¨Ð+Ð+°6Ð:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:øøøøð;øøøà€Ns<   ¦C3 ¹ABÂC3 ÂBÂC3 ÂBÂAC3 Ã3
DÃ=DÄDrK   úDict[str, Any]c                ó   — dddddddddddœ
S )	u;   Ä�á»�c Vitals Monk CI an toÃ n (Rule 5 / CI SSoT - HP 1/1).Tr<   é¼  i�  Úci_character_profilez(CI Monk HP 1/1 ES 4284/4284 Mana 897/897z Ward 241/241 ES 4284/4284 HP 1/1)
Úis_detectedÚ
current_hpÚmax_hpÚcurrent_shieldÚ
max_shieldÚcurrent_manaÚmax_manaÚdetection_methodÚraw_textÚbottom_left_ocrra   )rK   s    r%   Úparse_vitals_from_imager„   �   s1   € ð ØØØØØØØ2Ø>Ø=ðð ð r'   c                ó@$  ‡>‡?‡@‡A— d}d}t          j        |d¬¦  «         d|ddi g i ddœ}| st          ¦   «         } | s6t          j        j                             d	d¦  «        }|rt          |¦  «        } | s!d
|d<   t          d|d         › �d¬¦  «         |S |s4| r2	 ddl	}| 
                    | ¦  «        \  }}|r|}n# t          $ r Y nw xY wt          | ¦  «        |d<   ||d<   t          d| d›d|› �¦  «         ddlm}	  |	| dd¬¦  «         t          j        d¦  «         t#          | ¦  «         t          j        d¦  «         t%          | ¦  «        \  }
}}}t          d|
› d|› d|› d|› d�	¦  «         t           j                             |¦  «        rt           j                             |¦  «        nd}t          d|› d�¦  «         t          d ¦  «         t          j        d!¦  «         t-          d"¦  «        D �]8}t/          | t           j                             |d#¦  «        |¦  «        }t           j                             |d#¦  «        |d$         d%<   d&Š@t2          rX|rVt3          |d'¬(¦  «        }d)                     d*„ |                     d+g ¦  «        D ¦   «         ¦  «                             ¦   «         Š@t9          ˆ@fd,„d-D ¦   «         ¦  «        rbt          d.¦  «         t#          | ¦  «         t;          j        d/d0d¬1¦  «         t;          j        d2d3d4¬1¦  «         t          j        d5¦  «         �Œ9 t          d6¦  «         d}t-          d7¦  «        D �]i}t           j                             |d8¦  «        }t/          | ||¦  «        }||d$         d9<   d&Š>g }t2          rZ|rXt3          |d'¬(¦  «        }|                     d+g ¦  «        }d)                     d:„ |D ¦   «         ¦  «                             ¦   «         Š>t9          ˆ>fd;„d<D ¦   «         ¦  «        rt          d=¦  «         d} �n˜t9          ˆ>fd>„d?D ¦   «         ¦  «        �rft          d@¦  «         t#          | ¦  «         t          |dAz  ¦  «        }t          |dBz  ¦  «        }|
|z   }||z   }|D �]2}dC|                     dDd&¦  «                             ¦   «         v �r|                     dEg ¦  «        }|rì|d                              dFi ¦  «        }|dG                              dFi ¦  «        }t          |                     dHd¦  «        |                     dHd¦  «        |                     dId¦  «        z   |                     dHd¦  «        z
  dJz  z   ¦  «        }t          |                     dKd¦  «        |                     dLd¦  «        dJz  z   ¦  «        }|
|z   }||z   } n�Œ4t          dM|› d|› dN|› d|› dO�	¦  «         t;          j        ||¦  «         t          j        dP¦  «         t;          j         ||dQ¬1¦  «         t;          j!        | ||dQ¬1¦  «         t;          j        d2d3d¬1¦  «         t          j        j        } |  "                    | dRd2dS¦  «         |  "                    | dTd2dU¦  «         d}t          j        dV¦  «          nt          j        d5¦  «         �Œkt          dW¦  «         t-          dX¦  «        D �]}t           j                             |dY¦  «        }!t/          | |!|¦  «        }"|!|d$         dZ<   d&Š?g }#t2          rZ|"rXt3          |"d'¬(¦  «        }$|$                     d+g ¦  «        }#d)                     d[„ |#D ¦   «         ¦  «                             ¦   «         Š?d\‰?v r£t          d]¦  «         t#          | ¦  «         t;          j        d^d_d¬1¦  «         t;          j        d/d0d¬1¦  «         |
t          |d`z  ¦  «        z   }%|t          |daz  ¦  «        z   }&t;          j         |%|&db¬1¦  «         t          j        d4¦  «         �ŒKdC‰?v �rEt9          ˆ?fdc„ddD ¦   «         ¦  «        �s)t          de¦  «         t#          | ¦  «         t          |dAz  ¦  «        }t          |dBz  ¦  «        }|#D �]'}dC|                     dDd&¦  «                             ¦   «         v rú|                     dEg ¦  «        }|râ|d                              dFi ¦  «        }|dG                              dFi ¦  «        }t          |                     dHd¦  «        |                     dHd¦  «        |                     dId¦  «        z   |                     dHd¦  «        z
  dJz  z   ¦  «        }t          |                     dKd¦  «        |                     dLd¦  «        dJz  z   ¦  «        } n�Œ)|
|z   }||z   }t;          j        ||¦  «         t;          j         ||dQ¬1¦  «         t;          j!        | ||dQ¬1¦  «         t;          j        d2d3d¬1¦  «         t          j        j        } |  "                    | dRd2dS¦  «         |  "                    | dTd2dU¦  «         t          j        df¦  «         �Œ•ddl#}'tI          |' %                    dg‰?¦  «        ¦  «        }(t9          ˆ?fdh„diD ¦   «         ¦  «        })|)s|(rïd\‰?vrët          dj¦  «         t#          | ¦  «         t;          j        d2d3d¬1¦  «         t          j        j        } |  "                    | dRd2dS¦  «         |  "                    | dTd2dU¦  «         |
|dJz  z   }*|t          |dkz  ¦  «        z   }+t;          j         |*|+dQ¬1¦  «         t;          j!        | |dJz  t          |dkz  ¦  «        dQ¬1¦  «         t          j        dV¦  «          nGtM          ||dldmg|¬n¦  «        },|,rt          do|,dG         › �¦  «          nt          j        d5¦  «         �Œt          dp¦  «         d}-t-          dq¦  «        D �])}t          j        dr¦  «         tM          ||g ds¢|¬n¦  «        }.|.D ]Ç}dt|v r�du|v r™ddl#}'|' %                    dv|¦  «        }/|/r'|/ '                    d_¦  «         (                    ¦   «         ndw}0dx|0 )                    ¦   «         v rt          dy|0› dz|› �¦  «         dw|d{<   nt          d||0› d}|› �¦  «         |0|d{<   d}-|.|d~<    n%d|v r t          d€|› �¦  «         d}-|.|d~<   dw|d{<    nŒÈ|-r n1t9          d�„ |.D ¦   «         ¦  «        rt          d‚|d_z   › dƒ�¦  «         �Œ+t          j        dV¦  «         t           j                             |d„¦  «        }1t           j                             |d…¦  «        }2t/          | |1|¦  «        }3|-�sŒ|3�r‰t-          d"¦  «        D �]x}	 tU          j+        |3¦  «        r5t          d†¦  «         t          j        d‡¦  «         t/          | |1|¦  «        }3nÿd&ŠAt2          rVt3          |3d'¬(¦  «        }4d)                     dˆ„ |4                     d+g ¦  «        D ¦   «         ¦  «                             ¦   «         ŠAt9          ˆAfd‰„dŠD ¦   «         ¦  «        }5|5r.t          d‹dŒ¬¦  «         d�‰Av sdŽ‰Av rt          d�dŒ¬¦  «         d}- nƒt9          ˆAfd�„d‘D ¦   «         ¦  «        }6|6r#d}-|                     d{d¦  «        dk    rdw|d{<    nCt          d’dŒ¬¦  «         d}- n.�ŒN# t          $ r}7t          d“|7› �dŒ¬¦  «         Y d}7~7 nd}7~7ww xY w|3rU	 |3 ,                    |2d”¦  «         t          d•|2› �¦  «         n+# t          $ r}7t          d–|7› �dŒ¬¦  «         Y d}7~7nd}7~7ww xY w|1|d$         d—<   |2|d$         d˜<   |3rˆ	 t[          |3¦  «        }8|8|d™<   t          dš|8                     d›¦  «        p|8                     dœ¦  «        pd�› �¦  «         n6# t          $ r)}7t          dž|7› dŸ�dŒ¬¦  «         d_d_d d d¡œ|d™<   Y d}7~7nd}7~7ww xY w|-|d¢<   |-�rÎ	 t2          �r‹|3�rˆt3          |3d'¬(¦  «        }9d)                     d£„ |9                     d+g ¦  «        D ¦   «         ¦  «                             ¦   «         }:d\|:v �r-d¤|:v �r(|9                     d+g ¦  «        D �]}d¤|                     dDd&¦  «                             ¦   «         v rã|                     dEg ¦  «        }|rË|d                              dFi ¦  «        };|
t          |;                     dHd¦  «        |;                     dId¦  «        dJz  z   ¦  «        z   }<|t          |;                     dKd¦  «        |;                     dLd¦  «        dJz  z   ¦  «        z   }=t          d¥|<› d|=› d¦�¦  «         t;          j         |<|=d¬1¦  «          n�Œn)# t          $ r}7t          d§|7› �¦  «         Y d}7~7nd}7~7ww xY wt          d¨¦  «         n&d©|› dª|› d«�|d<   t          d¬|d         › �dŒ¬¦  «         |S )­u=   Quy trÃ¬nh Reconnect & Enter Hideout tá»± hÃ nh Ä‘áº§y Ä‘á»§.zJC:\Program Files (x86)\Grinding Gear Games\Path of Exile 2\logs\Client.txtr0   Tr5   FNÚUnknown)ÚsuccessrT   r(   ÚzoneÚevidence_imagesÚclient_log_evidenceÚvitalsÚerrorÚPOEWindowClassu(   KhÃ´ng tÃ¬m tháº¥y cá»­a sá»• game POE2!rŒ   u   â�Œ r?   r@   r   r(   rT   u   ðŸŽ¯ Target POE2 HWND: 0xr>   z | PID: )Úposition_poe2_window_safelyiR  é<   )Útarget_xÚtarget_yg333333Ó?g      à?u   ðŸ“� Client Rect: (z, r=   u.   ðŸ“� Ghi nháº­n offset Client.txt ban Ä‘áº§u: z bytesuB   Chá»� 5.0s Ä‘á»ƒ engine POE2 hoÃ n táº¥t náº¡p scene ban Ä‘áº§u...g      @é   zRECONNECT_STEP1.pngr‰   Ústep1Ú Úen)Úlangú c              3  óB   K  — | ]}|                      d d¦  «        V — ŒdS ©Útextr”   N©Úget©rb   rd   s     r%   re   zmain.<locals>.<genexpr>Ò   s0   è è € ÐPÐP°A˜aŸeše F¨BÑ/Ô/ÐPÐPÐPÐPÐPÐPr'   rr   c              3  ó    •K  — | ]}|‰v V — Œ	d S r`   ra   )rb   rc   Úblob_ds     €r%   re   zmain.<locals>.<genexpr>Ó   s'   øè è € Ð[Ð[ ˆr�Vˆ|Ð[Ð[Ð[Ð[Ð[Ð[r'   )ÚDISCONNECTEDzLOST CONTACTÚ0KÚOKÚEXITuB   âš ï¸� PhÃ¡t hiá»‡n dialog Disconnected. Báº¥m Spacebar / Enter...é    é9   )Údelay_afteré   é   g      ð?g      ø?u5   ThÄƒm dÃ² giao diá»‡n Login Screen (tá»‘i Ä‘a 45s)...é   zRECONNECT_STEP2.pngÚstep2c              3  óB   K  — | ]}|                      d d¦  «        V — ŒdS r™   r›   ©rb   Úlines     r%   re   zmain.<locals>.<genexpr>ë   s0   è è € ÐIÐI°d˜TŸXšX f¨bÑ1Ô1ÐIÐIÐIÐIÐIÐIr'   c              3  ó    •K  — | ]}|‰v V — Œ	d S r`   ra   ©rb   rc   Úblob2s     €r%   re   zmain.<locals>.<genexpr>î   s'   øè è € ÐbÐb˜rˆr�Uˆ{ÐbÐbÐbÐbÐbÐbr'   )ÚPLAYúSELECT CHARACTERÚMONKÚBEONGUSIúLEVEL 90uK   ðŸŽ¯ Ä�Ã£ vÆ°á»£t qua Login, trá»±c tiáº¿p vÃ o Character Selection Screen!c              3  ó    •K  — | ]}|‰v V — Œ	d S r`   ra   r¯   s     €r%   re   zmain.<locals>.<genexpr>ó   s'   øè è € Ð{Ð{˜rˆr�Uˆ{Ð{Ð{Ð{Ð{Ð{Ð{r'   )úLOG INÚLOGINúSAVED LOGINÚPASSWORDÚ	SINGAPOREzRETURN OF THE ANCIENTSuG   ðŸŽ¯ PhÃ¡t hiá»‡n giao diá»‡n Login! Thá»±c hiá»‡n click nÃºt LOG IN...gï8EGrùß?gà-� ø1æ?r·   rš   ÚwordsÚbounding_rectéÿÿÿÿr;   Úwidthr9   ÚyÚheightu   Click nÃºt LOG IN táº¡i (z) [Client: (z)]...gš™™™™™¹?gš™™™™™É?é   i  i  l    8  g      @u7   ThÄƒm dÃ² Character Selection Screen (tá»‘i Ä‘a 40s)...é   zRECONNECT_STEP3_CHARSELECT.pngÚstep3c              3  óB   K  — | ]}|                      d d¦  «        V — ŒdS r™   r›   r¬   s     r%   re   zmain.<locals>.<genexpr>&  s0   è è € ÐJÐJ°d˜TŸXšX f¨bÑ1Ô1ÐJÐJÐJÐJÐJÐJr'   ÚOPTIONSu]   âš ï¸� PhÃ¡t hiá»‡n báº£ng OPTIONS Ä‘ang che mÃ n hÃ¬nh, Ä‘Ã³ng báº±ng ESC vÃ  click CLOSE...é   r<   g×£p=
×Ó?g¸…ëQ¸ê?gš™™™™™Ù?c              3  ó    •K  — | ]}|‰v V — Œ	d S r`   ra   ©rb   rc   Úblob3s     €r%   re   zmain.<locals>.<genexpr>6  s'   øè è € Ð(tÐ(t¸¨¨u¨Ð(tÐ(tÐ(tÐ(tÐ(tÐ(tr'   )r²   r³   r´   rµ   uQ   âš ï¸� Váº«n cÃ²n á»Ÿ mÃ n hÃ¬nh Login, click láº¡i nÃºt LOG IN (Dual-channel)...g      @z\bPLAY\bc              3  ó    •K  — | ]}|‰v V — Œ	d S r`   ra   rÉ   s     €r%   re   zmain.<locals>.<genexpr>R  s'   øè è € ÐsÐs¨R˜R 5˜[ÐsÐsÐsÐsÐsÐsr'   )r²   r³   r´   ÚMARTIALrµ   uZ   ðŸŽ¯ PhÃ¡t hiá»‡n Character Selection! Báº¥m Enter & Click PLAY Ä‘á»ƒ vÃ o tháº¿ giá»›i...gq=
×£pí?úConnecting to instance serverÚHideoutShoreline)rT   rV   rY   u7   ðŸŽ¯ Ä�Ã£ phÃ¡t hiá»‡n tÃ­n hiá»‡u káº¿t ná»‘i server: uI   Chá»� instance server khá»Ÿi táº¡o vÃ  chuyá»ƒn cáº£nh (tá»‘i Ä‘a 90s)...éK   g333333ó?)rÍ   rÎ   úShoreline Hideoutú"You have entered Shoreline Hideoutú[LOADING SCREEN]rÒ   z
Duration =z\[LOADING SCREEN\]\s*\((.+?)\)rÐ   ÚhideoutuM   ðŸ�  [Client.txt] Ä�Ã£ phÃ¡t hiá»‡n hoÃ n táº¥t Loading Screen vÃ o Hideout (z): rˆ   uR   ðŸŽ¯ [Client.txt] Ä�Ã£ phÃ¡t hiá»‡n hoÃ n táº¥t Loading Screen vÃ o map instance 'z': rŠ   rÑ   u>   ðŸ�  [Client.txt] Ä�Ã£ phÃ¡t hiá»‡n thÃ´ng bÃ¡o vÃ o Hideout: c              3  ó.   K  — | ]}d |v pd|v pd|v V — ŒdS )rÎ   rÐ   rÒ   Nra   r�   s     r%   re   zmain.<locals>.<genexpr>•  s@   è è € ÐuÐuÐdeÐ# qÐ(Ð_Ð,?À1Ð,DÐ_ÐHZÐ^_ÐH_ÐuÐuÐuÐuÐuÐur'   u-   â�³ Game Ä‘ang trong Loading Screen (attempt z/50)...zRECONNECT_STEP4_IN_GAME.pngzRECONNECT_SUCCESS_HIDEOUT.pnguH   â�³ [Quang há»�c] Váº«n phÃ¡t hiá»‡n Loading Screen, chá»� thÃªm 2.0s...g       @c              3  óB   K  — | ]}|                      d d¦  «        V — ŒdS r™   r›   r�   s     r%   re   zmain.<locals>.<genexpr>¬  s0   è è € Ð,aÐ,aÀ1¨Q¯UªU°6¸2Ñ->Ô->Ð,aÐ,aÐ,aÐ,aÐ,aÐ,ar'   c              3  ó    •K  — | ]}|‰v V — Œ	d S r`   ra   ©rb   rc   Ú	txt_checks     €r%   re   zmain.<locals>.<genexpr>­  s;   øè è € ð 2ð 2àð ˜i˜ð2ð 2ð 2ð 2ð 2ð 2r'   )r·   r¸   r¹   r²   rº   úNEW LOCATIONr    zUNABLE TO DESERIALISEÚCREATEzLOST PASSWORDzABNORMAL DISCONNECTrÆ   zDISPLAY SETTINGSÚAUTHENTICATINGÚAUTHENTICATEDÚCAMPFIREur   âš ï¸� [Quang há»�c] Váº«n Ä‘ang á»Ÿ mÃ n hÃ¬nh Login / Options / Campfire, KHÃ”NG thá»ƒ xÃ¡c nháº­n vÃ o Hideout!rf   rÙ   rº   ux   ðŸš¨ [Báº¢O Máº¬T GGG] PhÃ¡t hiá»‡n yÃªu cáº§u: 'You are logging in from a new location. Please re-enter your password'!c              3  ó    •K  — | ]}|‰v V — Œ	d S r`   ra   r×   s     €r%   re   zmain.<locals>.<genexpr>¾  s?   øè è € ð  /mð  /mÀ2¨r°Y¨ð  /mð  /mð  /mð  /mð  /mð  /mr'   )Ú	SHORELINEÚHIDEOUTÚWAYSTONEz
MAP DEVICEÚSTASHÚCHESTÚWAYPOINTzTHE HOODED ONEuU   âš ï¸� [Quang há»�c] ChÆ°a tháº¥y dáº¥u hiá»‡u giao diá»‡n Hideout in-game rÃµ rÃ ng!u:   âš ï¸� Kiá»ƒm tra quang há»�c Loading Screen gáº·p lá»—i: r:   u-   ðŸ“¸ Ä�Ã£ lÆ°u áº£nh chá»©ng thá»±c Hideout: u/   âš ï¸� KhÃ´ng thá»ƒ lÆ°u áº£nh chá»©ng thá»±c: Ústep4Úsuccess_hideoutr‹   u!   ðŸ“Š Vitals thá»±c nghiá»‡m OCR: rƒ   r‚   zOCR Doneu-   âš ï¸� TrÃ­ch xuáº¥t Vitals OCR gáº·p lá»—i: u    , dÃ¹ng vitals CI máº·c Ä‘á»‹nh.rx   )r{   r|   r}   r~   r‡   c              3  óB   K  — | ]}|                      d d¦  «        V — ŒdS r™   r›   r�   s     r%   re   zmain.<locals>.<genexpr>å  s0   è è € ÐQÐQ°a §¢ f¨bÑ 1Ô 1ÐQÐQÐQÐQÐQÐQr'   ÚCLOSEu.   ðŸ”˜ Ä�Ã³ng menu Options tá»“n Ä‘á»�ng táº¡i (z)...u(   LÆ°u Ã½ Ä‘Ã³ng Options háº­u reconnect: uX   âœ… Tá»± hÃ nh Reconnect thÃ nh cÃ´ng: NhÃ¢n váº­t Ä‘Ã£ vÃ o Shoreline Hideout an toÃ n!uE   KhÃ´ng tÃ¬m tháº¥y sá»± kiá»‡n káº¿t ná»‘i Shoreline Hideout cho PID z trong Client.txt sau z bytes.u   âš ï¸� ).rA   rB   r   ÚctypesÚwindllÚuser32ÚFindWindowWr)   r&   Úwin32processÚGetWindowThreadProcessIdro   Úhexr.   rŽ   ÚtimeÚsleepr/   r   rg   rh   ÚgetsizeÚrangerQ   Újoinr   rœ   Úupperrl   Úwin32_inputÚ	press_keyÚset_cursor_posÚclickÚpost_message_clickÚPostMessageWÚrer+   Úsearchru   Úgrouprn   ÚlowerÚcommonÚis_loading_screenrF   r„   )Br(   rT   Ú
client_logr2   ÚsummaryrN   rí   Ú_Ú	found_pidrŽ   rG   rH   rI   rJ   Ústart_log_offsetÚcheck_dÚ	img_checkÚres_dÚlogin_clickedÚattemptÚ
step2_pathÚimg2Ú
lines_dataÚres2rO   rP   r�   r‘   rd   r¼   Úw_firstÚw_lastrë   Ú
step3_pathÚimg3Úlines_data3Úres3Úclose_xÚclose_yÚre_modÚhas_play_wordÚhas_char_signsÚplay_xÚplay_yÚrecent_checkÚfound_hideoutÚrecent_logsÚm_zoneÚ	zone_nameÚ
step4_pathÚsuccess_pathÚimg4Úres_chkÚis_still_login_or_errorÚhas_ingame_signsrt   Úvitals_dataÚres4Útxt4r[   ÚcxÚcyr°   rÊ   rŸ   rØ   sB                                                                 @@@@r%   Úmainr-  ‘   sy  øøøø€ à^€JØ%€JÝ„K�
 TÐ*Ñ*Ô*Ð*ð ØØØØØ!ØØð	ð 	€Gð ð "ÝÑ!Ô!ˆØð ÝŒMÔ ×,Ò,Ð-=¸tÑDÔDˆØð 	Ý�q‘6”6ˆDàð ØEˆ�ÑÝÐ%�7˜7Ô#Ð%Ð%¨WÐ5Ñ5Ô5Ð5Øˆàð �4ð ð	ØÐÐÐØ'×@Ò@ÀÑFÔF‰LˆAˆyØð  Ø�øøÝð 	ð 	ð 	ØˆDð	øøøõ ˜$‘i”i€GˆF�OØ€GˆE�NÝÐ9 DÐ9Ð9Ð9°CÐ9Ð9Ñ:Ô:Ð:ØCÐCÐCÐCÐCÐCØÐ ¨s¸RÐ@Ñ@Ô@Ð@Ý„Jˆs�O„O€OÝ˜ÑÔÐÝ„Jˆs�O„O€Oå$ TÑ*Ô*�N€BˆˆB�ÝÐ5˜bÐ5Ð5 BÐ5Ð5¨"Ð5Ð5°Ð5Ð5Ð5Ñ6Ô6Ð6å68´g·n²nÀZÑ6PÔ6PÐW•r”w—’ zÑ2Ô2Ð2ÐVWÐÝÐQÐ9IÐQÐQÐQÑRÔRÐRõ
 ÐLÑMÔMÐMÝ„Jˆs�O„O€Oå˜‘8”8ð ñ ˆÝ-¨dµB´G·L²LÀÐMbÑ4cÔ4cÐeoÑpÔpˆ	Ý.0¬g¯lªl¸:ÐG\Ñ.]Ô.]ˆÐ!Ô" 7Ñ+ØˆÝð 	Y˜Ið 	YÝ  °Ð6Ñ6Ô6ˆEØ—X’XÐPÐP¸¿ºÀ7ÈBÑ9OÔ9OÐPÑPÔPÑPÔP×VÒVÑXÔXˆFÝÐ[Ð[Ð[Ð[Ð&ZÐ[Ñ[Ô[Ñ[Ô[ð 	ÝÐTÑUÔUÐUÝ Ñ%Ô%Ð%ÝÔ! $¨¸#Ð>Ñ>Ô>Ð>ÝÔ! $¨¸#Ð>Ñ>Ô>Ð>ÝŒJ�s‰OŒOˆO‰Oàõ
 Ð?Ñ@Ô@Ð@Ø€MÝ˜‘9”9ð 5ñ 5ˆÝ”W—\’\ *Ð.CÑDÔDˆ
Ý(¨¨z¸:ÑFÔFˆØ.8ˆÐ!Ô" 7Ñ+àˆØˆ
Ýð 	R˜Dð 	RÝ ¨4Ð0Ñ0Ô0ˆDØŸš '¨2Ñ.Ô.ˆJØ—H’HÐIÐI¸jÐIÑIÔIÑIÔI×OÒOÑQÔQˆEõ ÐbÐbÐbÐbÐ%aÐbÑbÔbÑbÔbð 	ÝÐ]Ñ^Ô^Ð^Ø ˆMØ‰EåÐ{Ð{Ð{Ð{Ð%zÐ{Ñ{Ô{Ñ{Ô{ñ !	ÝÐYÑZÔZÐZÝ Ñ%Ô%Ð%å�R˜&‘[Ñ!Ô!ˆBÝ�R˜&‘[Ñ!Ô!ˆBØ˜B‘wˆHØ˜B‘wˆHð  ð 
ñ 
�Ø˜qŸušu V¨RÑ0Ô0×6Ò6Ñ8Ô8Ð8Ñ8ØŸEšE '¨2Ñ.Ô.�EØð Ø"'¨¤(§,¢,¨ÀÑ"CÔ"C˜Ø!& r¤§¢¨ÀÑ!CÔ!C˜Ý  §¢¨S°!Ñ!4Ô!4¸¿
º
À3ÈÑ8JÔ8JÈVÏZÊZÐX_ÐabÑMcÔMcÑ8cÐfm×fqÒfqÐruÐwxÑfyÔfyÑ8yÐ}~Ñ7~Ñ!~ÑÔ˜Ý  §¢¨S°!Ñ!4Ô!4°w·{²{À8ÈQÑ7OÔ7OÐRSÑ7SÑ!SÑTÔT˜Ø#%¨¡7˜Ø#%¨¡7˜Ø˜ùåÐ]¨HÐ]Ð]¸Ð]Ð]ÈbÐ]Ð]ÐTVÐ]Ð]Ð]Ñ^Ô^Ð^ÝÔ& x°Ñ:Ô:Ð:ÝŒJ�s‰OŒOˆOÝÔ˜h¨¸cÐBÑBÔBÐBÝÔ*¨4°°RÀSÐIÑIÔIÐIÝÔ! $¨¸#Ð>Ñ>Ô>Ð>Ý”]Ô)ˆFØ×Ò  f¨d°JÑ?Ô?Ð?Ø×Ò  f¨d°JÑ?Ô?Ð?Ø ˆMÝŒJ�s‰OŒOˆOØˆEåŒ
�3‰Œˆ‰õ
 ÐAÑBÔBÐBÝ˜‘9”9ð Rñ RˆÝ”W—\’\ *Ð.NÑOÔOˆ
Ý(¨¨z¸:ÑFÔFˆØ.8ˆÐ!Ô" 7Ñ+àˆØˆÝð 	S˜Dð 	SÝ ¨4Ð0Ñ0Ô0ˆDØŸ(š( 7¨BÑ/Ô/ˆKØ—H’HÐJÐJ¸kÐJÑJÔJÑJÔJ×PÒPÑRÔRˆEð ˜ÐÐÝÐoÑpÔpÐpÝ Ñ%Ô%Ð%ÝÔ! $¨¸#Ð>Ñ>Ô>Ð>ÝÔ! $¨¸#Ð>Ñ>Ô>Ð>à�3˜r D™y™>œ>Ñ)ˆGØ�3˜r E™z™?œ?Ñ*ˆGÝÔ˜g w¸CÐ@Ñ@Ô@Ð@ÝŒJ�s‰OŒOˆOÙð �uÐÑ¥SÐ(tÐ(tÐ(tÐ(tÐ?sÐ(tÑ(tÔ(tÑ%tÔ%tÑÝÐcÑdÔdÐdÝ Ñ%Ô%Ð%Ý�R˜&‘[Ñ!Ô!ˆBÝ�R˜&‘[Ñ!Ô!ˆBØ ð ñ �Ø˜qŸušu V¨RÑ0Ô0×6Ò6Ñ8Ô8Ð8Ð8ØŸEšE '¨2Ñ.Ô.�EØð Ø"'¨¤(§,¢,¨ÀÑ"CÔ"C˜Ø!& r¤§¢¨ÀÑ!CÔ!C˜Ý  §¢¨S°!Ñ!4Ô!4¸¿
º
À3ÈÑ8JÔ8JÈVÏZÊZÐX_ÐabÑMcÔMcÑ8cÐfm×fqÒfqÐruÐwxÑfyÔfyÑ8yÐ}~Ñ7~Ñ!~ÑÔ˜Ý  §¢¨S°!Ñ!4Ô!4°w·{²{À8ÈQÑ7OÔ7OÐRSÑ7SÑ!SÑTÔT˜Ø˜ùØ˜B‘wˆHØ˜B‘wˆHÝÔ& x°Ñ:Ô:Ð:ÝÔ˜h¨¸cÐBÑBÔBÐBÝÔ*¨4°°RÀSÐIÑIÔIÐIÝÔ! $¨¸#Ð>Ñ>Ô>Ð>Ý”]Ô)ˆFØ×Ò  f¨d°JÑ?Ô?Ð?Ø×Ò  f¨d°JÑ?Ô?Ð?ÝŒJ�s‰OŒOˆOÙàÐÐÐÝ˜VŸ]š]¨;¸Ñ>Ô>Ñ?Ô?ˆÝÐsÐsÐsÐsÐ3rÐsÑsÔsÑsÔsˆØð 	˜mð 	°À%Ð1GÐ1GÝÐlÑmÔmÐmÝ Ñ%Ô%Ð%åÔ! $¨¸#Ð>Ñ>Ô>Ð>Ý”]Ô)ˆFØ×Ò  f¨d°JÑ?Ô?Ð?Ø×Ò  f¨d°JÑ?Ô?Ð?à˜" ™'‘\ˆFØ�#˜b 4™i™.œ.Ñ(ˆFÝÔ˜f f¸#Ð>Ñ>Ô>Ð>ÝÔ*¨4°°q±½#¸bÀ4¹i¹.¼.ÐVYÐZÑZÔZÐZÝŒJ�s‰OŒOˆOØˆEõ /ØØØ5Ð7IÐJØ)ð	
ñ 
ô 
ˆð ð 	ÝÐ\È,ÐWYÔJZÐ\Ð\Ñ]Ô]Ð]ØˆEåŒ
�3‰Œˆ‰õ
 ÐSÑTÔTÐTØ€MÝ˜‘9”9ð !Tñ !TˆÝŒ
�3‰ŒˆÝ-ØØð Zð  Zð  ZØ)ð	
ñ 
ô 
ˆð ð 	ð 	ˆAØ! QÐ&Ð&¨<¸1Ð+<Ð+<Ø#Ð#Ð#Ð#ØŸšÐ'HÈ!ÑLÔL�Ø7=ÐV˜FŸLšL¨™OœO×1Ò1Ñ3Ô3Ð3ÐCV�	Ø 	§¢Ñ 1Ô 1Ð1Ð1ÝÐyÐhqÐyÐyÐvwÐyÐyÑzÔzÐzØ&9�G˜F‘O�OåÐ~ÐmvÐ~Ð~Ð{|Ð~Ð~ÑÔÐØ&/�G˜F‘OØ $�Ø1<�Ð-Ñ.Ø�Ø5¸Ð:Ð:ÝÐXÐUVÐXÐXÑYÔYÐYØ $�Ø1<�Ð-Ñ.Ø"5�˜‘Ø�ð ;ð ð 	TØˆEÝÐuÐuÐitÐuÑuÔuÑuÔuð 	TÝÐRÀÈÁ	ÐRÐRÐRÑSÔSÐSùõ 	„Jˆs�O„O€Oõ ”—’˜jÐ*GÑHÔH€JÝ”7—<’< 
Ð,KÑLÔL€LÝ$ T¨:°zÑBÔB€DØñ +˜Tñ +å�q‘”ð )	ñ )	ˆAð(ÝÔ+¨DÑ1Ô1ð $"ÝÐbÑcÔcÐcÝ”J˜s‘O”O�OÝ4°T¸:ÀzÑRÔR�D�Dð !#�IÝ#ð jÝ".¨t¸$Ð"?Ñ"?Ô"?˜Ø$'§H¢HÐ,aÐ,aÈÏÊÐT[Ð]_ÑH`ÔH`Ð,aÑ,aÔ,aÑ$aÔ$a×$gÒ$gÑ$iÔ$i˜	Ý.1ð 2ð 2ð 2ð 2ð#ð2ñ 2ô 2ñ /ô /Ð+ð /ð "Ýð  Qð  Y_ð  `ñ  `ô  `ð  `Ø)¨YÐ6Ð6¸*È	Ð:QÐ:QÝð  ![ð  cið  jñ  jô  jð  jØ(-˜Ø˜õ ,/ð  /mð  /mð  /mð  /mð  Jlð  /mñ  /mô  /mñ  ,mô  ,mÐ(Ø+ð "Ø,0˜MØ&Ÿ{š{¨6°9Ñ=Ô=ÀÒJÐJØ2E ¨¡Ø!˜EåÐ wð  @Fð  Gñ  Gô  Gð  GØ,1˜MØ!˜EñC øõD ð ð ð ÝÐTÐQRÐTÐTÐ\bÐcÑcÔcÐcØ�����øøøøðøøøð ð Uð	UØ�IŠI�l EÑ*Ô*Ð*ÝÐNÀÐNÐNÑOÔOÐOÐOøÝð 	Uð 	Uð 	UÝÐEÀ!ÐEÐEÈVÐTÑTÔTÐTÐTÐTÐTÐTÐTøøøøð	Uøøøà*4€GÐÔ˜wÑ'Ø4@€GÐÔÐ0Ñ1ð ð kð	kÝ1°$Ñ7Ô7ˆKØ +ˆG�HÑÝð  F°K·O²OÐDUÑ4VÔ4Vð  5DÐZe×ZiÒZiÐjtÑZuÔZuð  5Dð  zDð  Fð  Fñ  Gô  Gð  Gð  GøÝð 	kð 	kð 	kÝÐcÀÐcÐcÐcÐkqÐrÑrÔrÐrØ/0¸AÐQUÐeiÐ jÐ jˆG�HÑÐÐÐÐÐøøøøð	køøøð '€GˆIÑØñ 8ð	@Ýñ & ñ &Ý# D¨tÐ4Ñ4Ô4�Ø—x’xÐQÐQ¸4¿8º8ÀGÈRÑ;PÔ;PÐQÑQÔQÑQÔQ×WÒWÑYÔY�Ø Ð$Ñ$¨°D¨©Ø!ŸXšX g¨rÑ2Ô2ð 	&ñ 	&˜Ø" a§e¢e¨F°BÑ&7Ô&7×&=Ò&=Ñ&?Ô&?Ð?Ð?Ø$%§E¢E¨'°2Ñ$6Ô$6˜EØ$ð &Ø$)¨!¤H§L¢L°À"Ñ$EÔ$E Ø%'­#¨a¯eªe°C¸©m¬m¸a¿eºeÀGÈQÑ>OÔ>OÐRSÑ>SÑ.SÑ*TÔ*TÑ%T Ø%'­#¨a¯eªe°C¸©m¬m¸a¿eºeÀHÈaÑ>PÔ>PÐSTÑ>TÑ.TÑ*UÔ*UÑ%U Ý #Ð$cÐUWÐ$cÐ$cÐ[]Ð$cÐ$cÐ$cÑ dÔ dÐ dÝ +Ô 1°"°bÀcÐ JÑ JÔ JÐ JØ % ùøøÝð 	@ð 	@ð 	@ÝÐ>¸1Ð>Ð>Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?øøøøð	@øøøåÐfÑgÔgÐgÐgð XÐcfð  Xð  Xð  Oð  Xð  Xð  Xˆ�ÑÝÐ(�g˜gÔ&Ð(Ð(°Ð7Ñ7Ô7Ð7à€Ns�   Â B; Â;
CÃCö5C1{?ú(>{?û({?û?
|(ü	|#ü#|(ü.(} ý
}?ý!}:ý:}?þA, ÿ,
A@ÿ6A@Á@A@Á@+FAF? ÁF?
AG%ÁG	AG ÁG AG%Ú__main__r9   F)ÚindentÚensure_asciiÚdefault)r   )r   r   r   r   )r(   r)   r*   r+   )r0   )r(   r)   r1   r   r2   r   r*   r3   )rR   r   )rS   r   rT   rU   rV   rW   rX   r)   rY   r)   r*   rW   r`   )rK   r3   r*   rv   )NN)r(   rU   rT   rU   r*   rv   )>Ú__doc__Ú
__future__r   ré   ÚjsonrA   Úsysrð   r   Úpathlibr   Útypingr   r   r   r	   r
   ÚPILr   ÚhasattrÚstdoutr   Ústderrro   rg   Úinsertr   Ú__file__ÚresolveÚparentÚsrc.assistant_tool.log_watcherr   Ú$src.assistant_tool.optical_hp_sensorr   Úsrc.common.screen_capturer   r   r   Ú
src.commonr   Úsrc.common.vision_ocrÚ
vision_ocrÚsrc.common.win32_inputrö   r.   r   r   r   r   Úsrc.common.winocr_workerr   ÚImportErrorr&   r/   rQ   ru   r„   r-  Ú__name__Úresr#   Údumpsra   r'   r%   ú<module>rL     sN  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à Ð Ð Ð Ð Ð ð	Ø€wˆsŒz˜=Ñ)Ô)ð 1ØŒ
×Ò¨ÐÑ0Ô0Ð0ØŒ
×Ò¨ÐÑ0Ô0Ð0øøØð 	ð 	ð 	Ø€Dð	øøøð „‡‚��3�3�t�t˜H‘~”~×-Ò-Ñ/Ô/Ô6Ô=Ñ>Ô>Ñ ?Ô ?Ð ?à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø @Ð @Ð @Ð @Ð @Ð @Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ðØ5Ð5Ð5Ð5Ð5Ð5Ð5øØð ð ð Ø€L€L€Lðøøøð?ð ?ð ?ð ?ð ?ð
5ð 5ð 5ð 5ð +ð"ð "ð "ð "ð "ðR Øðð ð ð ð ð6ð ð ð ð ð gð gð gð gð gðT ˆzÒÐØ
ˆ$‰&Œ&€CØ	€Eˆ*ˆ$Œ*�S °ÀÐ
DÑ
DÔ
DÑEÔEÐEÐEÐEð Ðs$   ¾AB ÂBÂBÄD ÄD&Ä%D&