§
    PÈ®jq˜  ã                   ó`  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
mZ ddlmZmZ ddlmZ d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d „ Z+d!„ Z,d"„ Z-d#„ Z.d$„ Z/d%„ Z0d&„ Z1d'„ Z2d(„ Z3d)„ Z4d*„ Z5d+„ Z6d,„ Z7d-„ Z8d.„ Z9d/„ Z:dS )0u  
Unit Tests for AutonomousMappingCoordinator (Doc 48 / Doc 56 / Doc 43)
======================================================================
Kiá»ƒm thá»­ cÃ¡c báº¥t biáº¿n kiáº¿n trÃºc:
- INV-FARM-CLOSED-LOOP: Kiá»ƒm tra chuá»—i 6 giai Ä‘oáº¡n Ä‘iá»�u phá»‘i.
- INV-TOWN-PORTAL-KEY: Báº£o Ä‘áº£m phÃ­m '.' (VK 0xBE) Ä‘Æ°á»£c sá»­ dá»¥ng.
- INV-ATLAS-01: An toÃ n táº¡i Hideout.
- INV-ATLAS-02: Fail-closed khi khÃ´ng cÃ³ Waystone hoáº·c lá»—i tá»�a Ä‘á»™.
- INV-CI-01: Cáº¥u hÃ¬nh Vitals CI (4284 ES, 897 Mana, 241 Ward).
é    N)ÚPath)Ú	MagicMockÚpatch)ÚAutonomousMappingCoordinatorc                  ó®  — t          dddd¬¦  «        } | j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j
        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j        }d }||u}|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j        }d }||u}|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Né 
  é   zcaptures/test_pipelineé
   )Úscreen_wÚscreen_hÚcapture_dirÚmap_duration_sec©ú==)z0%(py2)s
{%(py2)s = %(py0)s.screen_w
} == %(py5)sÚcoordinator©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7)z0%(py2)s
{%(py2)s = %(py0)s.screen_h
} == %(py5)s)z8%(py2)s
{%(py2)s = %(py0)s.map_duration_sec
} == %(py5)s©úis not)z3%(py2)s
{%(py2)s = %(py0)s.scanner
} is not %(py5)s)z4%(py2)s
{%(py2)s = %(py0)s.selector
} is not %(py5)s)r   r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   r   ÚscannerÚselector)r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s         úAC:\Projects\AutoPOE2\tests\test_autonomous_mapping_coordinator.pyÚtest_coordinator_initializationr*      s�  € Ý.ØØØ,Øð	ñ ô €Kð ÔÐ' 4Ð'Ð 4Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ;Ñ'Ô'Ð'Õ'Ô'ˆ;Ñ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔÐ' 4Ð'Ð 4Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ;Ñ'Ô'Ð'Õ'Ô'ˆ;Ñ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ'Ð-¨2Ð-Ð'¨2Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð'¨2Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ;Ñ-Ô-Ð-Õ-Ô-ˆ;Ñ-Ô-Ð-Ð-Õ-Ô-Ð'Ñ-Ô-Õ-Ô-¨2Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔÐ* dÐ*Ð dÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆ;Ñ*Ô*Ð*Õ*Ô*ˆ;Ñ*Ô*Ð*Ð*Õ*Ô*ÐÑ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔÐ+ tÐ+Ð tÐ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð tÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ;Ñ+Ô+Ð+Õ+Ô+ˆ;Ñ+Ô+Ð+Ð+Õ+Ô+ÐÑ+Ô+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ó    c                  óø  — t          dd¬¦  «        } | j                             dd¦  «        \  }}d}||k    }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d}||k    }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d S )Nr   r	   ©r   r   r   éÃ  r   ©z%(py0)s == %(py3)sÚcx©r   Úpy3úassert %(py5)sr   é6  Úcy)r   r"   Úget_slot_centerr   r   r   r   r   r   r    r!   )r   r0   r5   Ú@py_assert2r$   Ú@py_format4r'   s          r)   Ú$test_coordinator_scanner_integrationr9   "   s¸  € Ý.¸ÀtÐLÑLÔL€KàÔ ×0Ò0°°AÑ6Ô6�F€BˆØÐˆ2�Š:ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ2�Š9ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr+   c                  ó0  — g d¢} t          | ¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )
N©ÚSTAGE1_PRECHECKÚSTAGE2_MAP_DEVICEÚSTAGE3_ATLAS_ACTIVATIONÚSTAGE4_MAP_ENTRANCEÚSTAGE5_MAP_CLEARÚSTAGE6_PORTAL_RETURNé   r   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚexpected_stages©r   Úpy1r2   Úpy6úassert %(py8)sÚpy8)	rD   r   r   r   r   r   r   r    r!   )rE   r7   Ú@py_assert5r%   Ú@py_format7Ú@py_format9s         r)   Ú"test_coordinator_stage_definitionsrN   *   s;  € ðð ð €Oõ ˆÑÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�3Ñ$Ô$Ð$Õ$Ô$�3Ñ$Ô$Ð$Ð$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆÑ$Ô$Ð$Õ$Ô$ˆÑ$Ô$Ð$Ð$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r+   c                  óØ  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          dd¬¦  «        5  t          dddœ¬¦  «        | j        _        t          dd	g¬¦  «        | j        _	        |  
                    ¦   «         }|d
         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }| }|s:ddt          j        |¦  «        iz  }t          t          j        |¦  «        ¦  «        ‚d x}}|d         }| }|s:ddt          j        |¦  «        iz  }t          t          j        |¦  «        ¦  «        ‚d x}}|d         }t!          |¦  «        }d}	||	k    }
|
sÇt          j        d|
fd||	f¦  «        dt#          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}
}	|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )NT©Úreturn_valueúcaptures/fake_inv.pngúos.path.existsé   F©Úoccupied_countÚis_full©r   r   r.   r4   ç     `P@)é   r   i	  r4   gš™™™™M@ÚstatusÚSUCCESSr   ©z%(py1)s == %(py4)s©rG   Úpy4úassert %(py6)srH   Úoccupied_slotsrW   zassert not %(py1)srG   Úhooded_one_triggeredÚwaystones_foundé   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)srD   ©r   r   r_   r   úassert %(py9)sÚpy9Úselected_slot)r   r   Úensure_focusÚ	press_keyÚcapture_stepÚis_inventory_openr   r"   Úscan_full_inventoryÚscan_all_waystonesÚexecute_stage1_precheckr   r   r   r    r!   rD   r   r   r   )r   ÚresÚ@py_assert0r&   r7   Ú@py_format5rL   Ú@py_format3r$   Ú@py_assert6rK   r(   Ú@py_format10s                r)   Útest_stage1_precheck_successrw   6   sñ  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ(Ð6MÐNÑNÔN€KÔÝ$-¸4Ð$@Ñ$@Ô$@€KÔ!å	Ð¨dÐ	3Ñ	3Ô	3ð ?ð ?Ý2;Ø ØðJ
ð J
ð 3ñ 3ô 3ˆÔÔ/õ 2;Ø#Ø#ðI
ð 2ñ 2ô 2ˆÔÔ.ð
 ×1Ò1Ñ3Ô3ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ#Ô$Ð*¨Ð*Ð$¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð$¨Ð*Ñ*Ô*Õ*Ô*Ð$Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�y”>Ð!�>Ð!Ð!Ð!Ð!Ð!Ð!Õ!Ô!�>Ñ!Ô!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ-Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ñ.Ô.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.ØÐ(Ô)Ð/�sÐ)Ñ*Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�sÑ/Ô/Ð/Õ/Ô/�sÑ/Ô/Ð/Ð/Õ/Ô/Ð)Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø�?Ô#Ð>Ð'>Ð>Ð#Ð'>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð#Ð'>Ð>Ñ>Ô>Õ>Ô>Ð#Ñ>Ô>Õ>Ô>Ð'>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð!?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s   Á2M OÏO#Ï&O#c                  ó8  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          dd¬¦  «        5  t          dddœ¬¦  «        | j        _        t          dddœ¬¦  «        | j        _	        t          d	g¬¦  «        | j        _
        |                      ¦   «         }|d
         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j        j	                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   rR   rS   é4   rU   ÚIDENTIFY_REQUESTED)Ú	triggeredr[   rX   r[   r\   r   r]   r^   r`   rH   rW   ©Úis©z%(py1)s is %(py4)srb   )r   r   rj   rk   rl   rm   r   r"   rn   Ú%check_and_trigger_hooded_one_identifyro   rp   r   r   r   r    r!   Úassert_called_once©r   rq   rr   r&   r7   rs   rL   s          r)   Ú7test_stage1_precheck_full_inventory_triggers_hooded_oner‚   P   s‚  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ(Ð6MÐNÑNÔN€KÔÝ$-¸4Ð$@Ñ$@Ô$@€KÔ!å	Ð¨dÐ	3Ñ	3Ô	3ð Wð WÝ2;Ø ØðJ
ð J
ð 3ñ 3ô 3ˆÔÔ/õ ENØØ*ð\
ð \
ð Eñ Eô EˆÔÔAõ 2;Ø#ðI
ð 2ñ 2ô 2ˆÔÔ.ð ×1Ò1Ñ3Ô3ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�9Œ~Ð% Ð%ˆ~ Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ~ Ð%Ñ%Ô%Õ%Ô%ˆ~Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØÐ)Ô*Ð2¨dÐ2Ð*¨dÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð*¨dÐ2Ñ2Ô2Õ2Ô2Ð*Ñ2Ô2Õ2Ô2¨dÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÔÔA×TÒTÑVÔVÐVð#Wð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð Wð Wð Ws   Á2HJÊJÊJc                  óÀ  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          dd¬¦  «        5  t          dddœ¬¦  «        | j        _        t          g ¬¦  «        | j        _	        |  
                    ¦   «         }|d         }d	}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d }||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   rR   rS   r
   FrU   r[   ÚFAILEDr   r]   r^   r`   rH   úFail-closedÚerror©Úin©z%(py1)s in %(py4)sri   r|   r~   )r   r   rj   rk   rl   rm   r   r"   rn   ro   rp   r   r   r   r    r!   r�   s          r)   Ú.test_stage1_precheck_no_waystones_fails_closedrŠ   k   s  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ(Ð6MÐNÑNÔN€KÔÝ$-¸4Ð$@Ñ$@Ô$@€KÔ!å	Ð¨dÐ	3Ñ	3Ô	3ð 
,ð 
,Ý2;Ø ØðJ
ð J
ð 3ñ 3ô 3ˆÔÔ/õ 2;ÈÐ1KÑ1KÔ1KˆÔÔ.à×1Ò1Ñ3Ô3ˆØ�8Œ}Ð( Ð(ˆ} Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Õ(Ô(ˆ}Ñ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ,  G¤Ð,ˆ} Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ} Ð,Ñ,Ô,Õ,Ô,ˆ}Ñ,Ô,Õ,Ô, Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø�?Ô#Ð+ tÐ+Ð# tÐ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð# tÐ+Ñ+Ô+Õ+Ô+Ð#Ñ+Ô+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð
,ð 
,ð 
,ñ 
,ô 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,øøøð 
,ð 
,ð 
,ð 
,ð 
,ð 
,s   Á2GIÉIÉIc                  óR  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          dd¬¦  «        5  |                      ¦   «         }|d         }d}||k    }|slt          j	        d|fd	||f¦  «        t          j
        |¦  «        t          j
        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j	        d|fd	||f¦  «        t          j
        |¦  «        t          j
        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   rR   FrS   r[   r„   r   r]   r^   r`   rH   r†   ÚINVENTORY_NOT_OPEN)r   r   rj   rk   rl   rm   r   rp   r   r   r   r    r!   r�   s          r)   Ú4test_stage1_precheck_inventory_not_open_fails_closedr�      s*  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ(Ð6MÐNÑNÔN€KÔÝ$-¸5Ð$AÑ$AÔ$A€KÔ!å	Ð¨dÐ	3Ñ	3Ô	3ð 4ð 4Ø×1Ò1Ñ3Ô3ˆØ�8Œ}Ð( Ð(ˆ} Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Õ(Ô(ˆ}Ñ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø�7Œ|Ð3Ð3Ð3ˆ|Ð3Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3ˆ|Ð3Ð3Ñ3Ô3Õ3Ô3ˆ|Ñ3Ô3Õ3Ô3Ð3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4s   Á2DFÆF Æ#F c            	      ód  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          ¦   «         | _        t          d¬¦  «        | _	        t          d¦  «        5 }t          d¦  «        5  |                      ¦   «         }|d         }d	}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d„ | j        j        D ¦   «         }d}||v}|s¬t          j        d|fd||f¦  «        t          j        |¦  «        dt%          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }	t          j        d¦  «        dz   d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}}d}||v}|s¬t          j        d|fd||f¦  «        t          j        |¦  «        dt%          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }	t          j        d¦  «        dz   d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}}d}||v}|s¬t          j        d|fd||f¦  «        t          j        |¦  «        dt%          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }	t          j        d¦  «        dz   d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}}| j        }|j        }d}||k    }|s½t          j        d |fd!||f¦  «        d"t%          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd"t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d#œz  }d$d%|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}| j                             d&d'd(¬)¦  «         | j                             d*d+d,¬)¦  «         |j        }d-}||k    }|sªt          j        d |fd.||f¦  «        d/t%          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/t          j        |¦  «        t          j        |¦  «        d0œz  }
d1d2|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )3NTrP   úcaptures/fake_device.pngF©é~  éX  ú ctypes.windll.user32.mouse_eventú
time.sleepr[   r\   r   r]   r^   r`   rH   Úzoom_appliedr|   r~   c                 ó*   — g | ]}|d          d          ‘ŒS ©r   © ©Ú.0Úcalls     r)   ú
<listcomp>z*test_stage2_map_device.<locals>.<listcomp>œ   ó    € ÐSÐSÐS d�t˜A”w˜q”zÐSÐSÐSr+   éU   ©únot in©z%(py1)s not in %(py3)sÚcalled_keys©rG   r2   uA   Cáº¤M TUYá»†T Ä�á»�I gá»­i phÃ­m VK_U (0x55) khi má»Ÿ Map Device!ú
>assert %(py5)sr   éF   u[   Cáº¤M TUYá»†T Ä�á»�I gá»­i phÃ­m VK_F (0x46) Ä‘á»ƒ tÆ°Æ¡ng tÃ¡c Map Device (F lÃ  Skill 8)!é   uD   Cáº¤M TUYá»†T Ä�á»�I gá»­i phÃ­m ESC (0x1B) mÃ¹ khi má»Ÿ Map Device!é   ©ú>=)zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.click
}.call_count
} >= %(py7)sr   rf   rg   rh   r‘   r’   ç      @©Údelay_afterio  é^   g       @é   )z2%(py2)s
{%(py2)s = %(py0)s.call_count
} >= %(py5)sÚmock_mouse_eventr   r   r   )r   r   rj   rk   Úclickrl   Ú_core_owns_map_device_loopÚfind_map_device_screen_posÚsend_wasd_directionÚis_atlas_ui_openr   Úexecute_stage2_map_devicer   r   r   r    r!   Úcall_args_listr   r   r   Ú_format_assertmsgÚ
call_countÚassert_any_call)r   r¯   rq   rr   r&   r7   rs   rL   r¢   r8   r'   r$   ru   rK   r(   rv   r%   s                    r)   Útest_stage2_map_devicerº   Œ   s6  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ!™œ€KÔÝ(Ð6PÐQÑQÔQ€KÔÝ-6ÀEÐ-JÑ-JÔ-J€KÔ*Ý-6ÀKÐ-PÑ-PÔ-P€KÔ*Ý&/¡k¤k€KÔ#Ý#,¸$Ð#?Ñ#?Ô#?€KÔ å	Ð1Ñ	2Ô	2ð 0Ð6FÍÈlÑH[ÔH[ð 0ð 0Ø×3Ò3Ñ5Ô5ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�>Ô"Ð* dÐ*Ð" dÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*àSÐS¨kÔ.CÔ.RÐSÑSÔSˆØÐkˆt˜;Ð&ÐkÐkÐkÕkÔkÐkÐkÐkÐkˆt˜;ÐkÑkÔkÕkÔkˆtÑkÔkÐkÕkÔkÑkÔkÐkÐkÕkÔk˜;ÑkÔkÐkÕkÔk˜;ÑkÔkÐkÐkÐkÐkÑkÐkÕkÔkÐ(kÑkÔkÐkÑkÐkÐkÐkÑkÐkÕkÕkÔkÐkÑkÔkÑkÔkÐkÐkÐkÐkÐkØð  	Fˆt˜;Ð&ð  	Fð  	Fð  	Fõ  	Fô  	Fð  	Fð  	Fð  	Fð  	Fˆt˜;ð  	Fñ  	Fô  	Fõ  	Fô  	Fˆtñ  	Fô  	Fð  	Fõ  	Fô  	Fñ  	Fô  	Fð  	Fð  	Fõ  	Fô  	F˜;ñ  	Fô  	Fð  	Fõ  	Fô  	F˜;ñ  	Fô  	Fð  	Fð  	Fð  	Fð  	Fñ  	Fð  	Fõ  	Fô  	Fð  )Fñ  	Fô  	Fð  	Fñ  	Fð  	Fð  	Fð  	Fñ  	Fð  	Fõ  	Fõ  	Fô  	Fð  	Fñ  	Fô  	Fñ  	Fô  	Fð  	Fð  	Fð  	Fð  	Fð  	FØÐnˆt˜;Ð&ÐnÐnÐnÕnÔnÐnÐnÐnÐnˆt˜;ÐnÑnÔnÕnÔnˆtÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔn˜;ÑnÔnÐnÕnÔn˜;ÑnÔnÐnÐnÐnÐnÑnÐnÕnÔnÐ(nÑnÔnÐnÑnÐnÐnÐnÑnÐnÕnÕnÔnÐnÑnÔnÑnÔnÐnÐnÐnÐnÐnØÔ Ð0Ð Ô+Ð0¨qÐ0Ð+¨qÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð+¨qÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ{Ñ0Ô0Ð0Õ0Ô0ˆ{Ñ0Ô0Ð0Ð0Õ0Ô0Ð Ñ0Ô0Õ0Ô0Ð+Ñ0Ô0Õ0Ô0¨qÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÔ×)Ò)¨$°ÀÐ)ÑEÔEÐEØÔ×)Ò)¨$°ÀÐ)ÑDÔDÐDàÔ*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ÐÑ/Ô/Ð/Õ/Ô/ÐÑ/Ô/Ð/Ð/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s7   Ã X%ÃT1XØX%ØX	ØX%ØX	ØX%Ø%X)Ø,X)c                  óf  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _	        t          d¦  «        5  t          d¦  «        5  |                      ¦   «         }| j                             dd	d
¬¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   r�   F)é  é  r“   r”   r¼   r½   rª   r«   )r   r   rj   rk   r°   r³   rl   r±   r²   r´   r   rµ   r¹   )r   rq   s     r)   Ú(test_stage2_map_device_fallback_pedestalr¾   §   sº  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ!™œ€KÔÝ&/¡k¤k€KÔ#Ý(Ð6PÐQÑQÔQ€KÔÝ-6ÀEÐ-JÑ-JÔ-J€KÔ*Ý-6ÀJÐ-OÑ-OÔ-O€KÔ*Ý#,¸$Ð#?Ñ#?Ô#?€KÔ å	Ð1Ñ	2Ô	2ð Eð EµE¸,Ñ4GÔ4Gð Eð EØ×3Ò3Ñ5Ô5ˆàÔ×)Ò)¨#¨sÀÐ)ÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Es6   Ã D&Ã2DÄD&ÄD	ÄD&ÄD	ÄD&Ä&D*Ä-D*c                  óZ  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        |                      ¦   «         }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d
         }d}||u }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          | j                             ¦   «          d S )NTrP   r[   r\   r   r]   r^   r`   rH   Úskipped_core_ownerr|   r~   )r   r   rj   rk   r°   r±   rµ   r   r   r   r    r!   Úassert_not_calledr�   s          r)   Ú+test_stage2_skips_when_core_owns_map_devicerÂ   ¸   sÛ  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ!™œ€KÔÝ-6ÀDÐ-IÑ-IÔ-I€KÔ*à
×
/Ò
/Ñ
1Ô
1€CØˆxŒ=Ð%˜IÐ%ˆ=˜IÒ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ=˜IÐ%Ñ%Ô%Õ%Ô%ˆ=Ñ%Ô%Õ%Ô%˜IÑ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØÐ#Ô$Ð,¨Ð,Ð$¨Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔ×+Ò+Ñ-Ô-Ð-ØÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)r+   c            
      ó   — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          ¦   «         | _        t          d¬¦  «        | _	        t          dg d¢¬¦  «        5  t          d	¦  «        5  t          d
¦  «        5  |                      ¦   «         }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}t#          | j        dz  ¦  «        }t#          | j        dz  ¦  «        }| j                             ||d¬¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )ul   INV-GAME-MENU-GUARD: Khi Game Menu bá»‹ má»Ÿ á»Ÿ Stage 2, tá»± Ä‘á»™ng click RESUME GAME giáº£i phÃ³ng menu.TrP   r�   Fr�   zsrc.common.is_game_menu_visible)TFFF©Úside_effectr“   r”   r[   r\   r   r]   r^   r`   rH   Nç      à?gq=
×£pÍ?gš™™™™™Ù?r«   )r   r   rj   rk   r°   rl   r±   r²   r³   r´   r   rµ   r   r   r   r    r!   Úintr   r   r¹   )	r   rq   rr   r&   r7   rs   rL   Úexpected_resume_xÚexpected_resume_ys	            r)   Ú)test_stage2_game_menu_guard_clicks_resumerÊ   Æ   s  € å.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ!™œ€KÔÝ(Ð6PÐQÑQÔQ€KÔÝ-6ÀEÐ-JÑ-JÔ-J€KÔ*Ý-6ÀKÐ-PÑ-PÔ-P€KÔ*Ý&/¡k¤k€KÔ#Ý#,¸$Ð#?Ñ#?Ô#?€KÔ å	Ð0Ð>YÐ>YÐ>YÐ	ZÑ	ZÔ	Zð að aÝ	Ð1Ñ	2Ô	2ðað aÝ49¸,Ñ4GÔ4Gðað aà×3Ò3Ñ5Ô5ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)å Ô 4°tÑ ;Ñ<Ô<ÐÝ Ô 4°tÑ ;Ñ<Ô<ÐØÔ×)Ò)Ð*;Ð=NÐ\_Ð)Ñ`Ô`Ð`ðað að añ aô að að að að að að aøøøð að að að að að að añ aô að að að að að að aøøøð að að að að að að añ aô að að að að að að að aøøøð að að að að að as[   ÃHÃG+Ã$C$GÇG+ÇGÇG+ÇGÇG+ÇHÇ+G/	Ç/HÇ2G/	Ç3HÈHÈ
Hc                  óŒ  — t          ¦   «         } t          d¬¦  «        | _        t          d¦  «        5 }|                      ddd¬¦  «         |j        }d}||k    }|sªt          j        d|fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     ddddd¦  «         |                     ¦   «          |                      ddd¬¦  «         |j        }d}||k    }|sªt          j        d|fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     ddddd¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   r“   é   gü©ñÒMbP?)Úzoom_inÚstepsÚ
step_delayr   )z2%(py2)s
{%(py2)s = %(py0)s.call_count
} == %(py5)sr¯   r   r   r   i   r   éx   Fiˆÿÿÿ)r   r   rj   r   Údynamic_camera_zoomr¸   r   r   r   r   r   r   r    r!   Úassert_called_withÚ
reset_mock)r   r¯   r$   r%   r&   r'   r(   s          r)   Útest_dynamic_camera_zoomrÔ   Ü   sê  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ	Ð1Ñ	2Ô	2ð CÐ6FØ×'Ò'°¸AÈ%Ð'ÑPÔPÐPØÔ*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ÐÑ/Ô/Ð/Õ/Ô/ÐÑ/Ô/Ð/Ð/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø×+Ò+¨F°A°q¸#¸qÑAÔAÐAà×#Ò#Ñ%Ô%Ð%Ø×'Ò'°¸QÈ5Ð'ÑQÔQÐQØÔ*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ÐÑ/Ô/Ð/Õ/Ô/ÐÑ/Ô/Ð/Ð/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø×+Ò+¨F°A°q¸$ÀÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cs   ³G9H9È9H=É H=c            	      ó¦	  — t          ¦   «         } |                      dddddd¦  «        \  }}}|||f}d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                      ddddddd	¬
¦  «        \  }}}d}||k    }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}d}||k    }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}d}||k    }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}|                      ddddddd¬
¦  «        \  }}}d}| }||k    }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}}d}||k     }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}d}||k    }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}d S )Nç        g      $@)rÖ   rÖ   r   r   r]   r^   r`   rH   r   )Úpreferred_handrZ   r/   Úhandr1   r3   r   ©ú>)z%(py0)s > %(py3)sÚbyÚbxéÿÿÿÿ)z%(py0)s == -%(py3)sÚhand_r)ú<)z%(py0)s < %(py3)sÚby_rÚbx_r)
r   Úcompute_tangent_slider   r   r   r    r!   r   r   r   )r   rÜ   rÛ   rØ   rr   r&   r7   rs   rL   r$   r8   r'   rá   rà   rÞ   r%   s                   r)   Ú#test_compute_tangent_slide_geometryrã   ê   sX  € Ý.Ñ0Ô0€Kà×4Ò4°S¸#¸sÀCÈÈtÑTÔT�L€BˆˆDØ��Dˆ>Ð*˜]Ð*ˆ>˜]Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ>˜]Ð*Ñ*Ô*Õ*Ô*ˆ>Ñ*Ô*Õ*Ô*˜]Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð ×4Ò4°S¸#¸tÀSÈ$ÐPTÐefÐ4ÑgÔg�L€BˆˆDð
 Ðˆ4�1Š9ÐÐÐÕÔÐÐÐÐˆ4�1ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐà€Oˆ2�Š8€O€O€O…O„O€O€O€O€Oˆ2�€O�O„O€O…O„O�O„O€O€O…O„Oˆ2�O„O€O…O„Oˆ2�O„O€O€O…O„O��O„O€O€O�O€O€O€O€O€O�O€O…O…O„O€O�O„O�O„O€O€O€O€O€OØ€Oˆ2�Š8€O€O€O…O„O€O€O€O€Oˆ2�€O�O„O€O…O„O�O„O€O€O…O„Oˆ2�O„O€O…O„Oˆ2�O„O€O€O…O„O��O„O€O€O�O€O€O€O€O€O�O€O…O…O„O€O�O„O�O„O€O€O€O€O€Oð %×:Ò:¸3ÀÀTÈ3ÐPTÐVZÐkmÐ:ÑnÔnÑ€Dˆ$�ØÐ�a�RÐˆ6�RŠ<ÐÐÐÕÔÐÐÐÐˆ6�RÐÑÔÐÕÔÑÔÐÐÕÔˆ6ÑÔÐÕÔˆ6ÑÔÐÐÕÔ�aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÐˆ4�#Š:ÐÐÐÕÔÐÐÐÐˆ4�#ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�#ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�#Š:ÐÐÐÕÔÐÐÐÐˆ4�#ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�#ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr+   c            	      ó
  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¦  «        5  |  
                    dd¬¦  «        }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             dddddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   r�   Fr“   )ç      Y@ç      i@©rå   rå   )Údevice_world_posÚplayer_world_posr[   r\   r   r]   r^   r`   rH   Ú
approachedr|   r~   rå   ræ   ç      2@g       @)Úinteract_radiusÚmax_duration_sec)r   r   rj   rk   r°   rl   Ú%navigate_towards_with_tangent_slidingr±   r´   r   rµ   r   r   r   r    r!   Úassert_called_once_withr�   s          r)   Ú.test_stage2_map_device_approaches_when_distantrð     s–  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ!™œ€KÔÝ(Ð6PÐQÑQÔQ€KÔÝ8AÈtÐ8TÑ8TÔ8T€KÔ5Ý-6ÀEÐ-JÑ-JÔ-J€KÔ*Ý#,¸$Ð#?Ñ#?Ô#?€KÔ å	Ð1Ñ	2Ô	2ð 

ð 

à×3Ò3Ø+Ø+ð 4ñ 
ô 
ˆð �8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�<Ô Ð( DÐ(Ð  DÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ9×QÒQØ�5˜% ¸Èsð 	Rñ 	
ô 	
ð 	
ð

ð 

ð 

ñ 

ô 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

øøøð 

ð 

ð 

ð 

ð 

ð 

s   Â-D>G8Ç8G<Ç?G<c                  ód  — t          ¦   «         } |                      dddd¦  «        \  }}d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d	}||k    }|s—t          j        d|fd||f¦  «        d
t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}|                      ddddd¬¦  «        \  }}|                      ddddd¬¦  «        \  }	}
t          j        |dz
  |d	z
  ¦  «        }t          j        |	dz
  |
d	z
  ¦  «        }||k    }|sÂt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d }d S )Nrå   é   r   r/   r0   r1   r3   r   iÐ  r5   g      ^@T)Úis_zoomed_inFrÙ   )z%(py0)s > %(py2)sÚ	dist_zoomÚ	dist_norm)r   r   zassert %(py4)sr_   )r   Ú"project_map_device_world_to_screenr   r   r   r   r   r   r    r!   ÚmathÚhypot)r   r0   r5   r7   r$   r8   r'   Úpx_zoomÚpy_zoomÚpx_normÚpy_normrô   rõ   rt   rs   s                  r)   Ú'test_project_map_device_world_to_screenrý     s  € Ý.Ñ0Ô0€Kà×;Ò;¸EÀ5È%ÐQVÑWÔW�F€BˆØÐˆ2�Š:ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ2�Š9ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐð #×EÒEÀeÈUÐTYÐ[`ÐosÐEÑtÔtÑ€GˆWØ"×EÒEÀeÈUÐTYÐ[`ÐotÐEÑuÔuÑ€GˆWå”
˜7 T™>¨7°S©=Ñ9Ô9€IÝ”
˜7 T™>¨7°S©=Ñ9Ô9€IØ�yÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ9�yÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ9Ñ Ô Ð Õ Ô ˆ9Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô �yÑ Ô Ð Õ Ô �yÑ Ô Ð Ð Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð r+   c                  ó¦  — t          ¦   «         } t          ¦   «         | _        t          d ¬¦  «        | _        |                      ddddd¬¦  «        }d}||u }|s—t          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}| j        }|j        }d}||k    }|s½t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        | ¦  «        rt          j
        | ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}}d S )NrP   rå   ç     @Z@rë   )rì   Tr|   ©z%(py0)s is %(py3)sÚreachedr1   r3   r   r   r   ©z[%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.send_wasd_direction
}.call_count
} == %(py7)sr   rf   rg   rh   )r   r   r³   Úget_player_world_posrî   r   r   r   r   r   r   r    r!   r¸   )r   r  r7   r$   r8   r'   r&   ru   rK   r(   rv   s              r)   Ú*test_navigate_towards_with_tangent_slidingr  )  s  € Ý.Ñ0Ô0€KÝ&/¡k¤k€KÔ#Ý'0¸dÐ'CÑ'CÔ'C€KÔ$à×?Ò?ÀÀuÈeÐUZÐlpÐ?ÑqÔq€GØÐˆ7�dˆ?ÐÐÐÕÔÐÐÐÐˆ7�dÐÑÔÐÕÔÑÔÐÐÕÔˆ7ÑÔÐÕÔˆ7ÑÔÐÐÕÔ�dÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔ*Ð:Ð*Ô5Ð:¸Ð:Ð5¸Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð5¸Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ;Ñ:Ô:Ð:Õ:Ô:ˆ;Ñ:Ô:Ð:Ð:Õ:Ô:Ð*Ñ:Ô:Õ:Ô:Ð5Ñ:Ô:Õ:Ô:¸Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r+   c                  ót  — t          ¦   «         } t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | j        _        t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _	        t          d¬¦  «        | _
        t          d¬¦  «        | _        t          d¦  «        5  |                      d¬	¦  «        }|d
         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          | j        j                             ¦   «          | j                             ddd¬¦  «         | j                             ddd¬¦  «         | j	                             ddd¬¦  «         | j	                             ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   ©éÕ  éÉ  Fúcaptures/fake_activated.png©é3  éî  r”   ©r   r.   r4   rY   ©Úwaystone_slotr[   r\   r   r]   r^   r`   rH   éI   é   rÆ   r«   r.   r4   r  r  gš™™™™™é?r  r  )r   r   rj   Úfind_reachable_atlas_noder#   Úselect_noderm   rk   Ú
ctrl_clickr°   rl   Úfind_traverse_buttonr   Úexecute_stage3_atlas_activationr   r   r   r    r!   r€   rï   r¹   r�   s          r)   Útest_stage3_atlas_activationr  3  sŽ  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ,5À:Ð,NÑ,NÔ,N€KÔ)Ý'0¸dÐ'CÑ'CÔ'C€KÔÔ$Ý$-¸5Ð$AÑ$AÔ$A€KÔ!Ý%™KœK€KÔÝ&™[œ[€KÔÝ!™œ€KÔÝ(Ð6SÐTÑTÔT€KÔÝ'0¸kÐ'JÑ'JÔ'J€KÔ$å	ˆ|Ñ	Ô	ð Fð FØ×9Ò9ÐH\Ð9Ñ]Ô]ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔ-×@Ò@ÑBÔBÐBØÔÔ(×;Ò;Ñ=Ô=Ð=ØÔ×5Ò5°d¸DÈcÐ5ÑRÔRÐRØÔ×6Ò6°t¸SÈcÐ6ÑRÔRÐRØÔ×)Ò)¨#¨sÀÐ)ÑDÔDÐDØÔ×)Ò)¨$°ÀÐ)ÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fs   ÃEH-È-H1È4H1c                  óŠ  — t          ¦   «         } t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | j        _        t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _	        t          d¬¦  «        | _
        t          d¬¦  «        | _        t          d¦  «        5  |                      d¬¦  «        }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          | j                             ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   r  r	  r
  r”   r  r  r[   r\   r   r]   r^   r`   rH   r.   r4   rÆ   r«   )r   r   rj   r  r#   r  rm   rk   r  r°   rl   r  r   r  r   r   r   r    r!   rÁ   rï   r�   s          r)   Ú2test_stage3_inventory_not_reclosed_if_already_openr  J  s  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ,5À:Ð,NÑ,NÔ,N€KÔ)Ý'0¸dÐ'CÑ'CÔ'C€KÔÔ$Ý$-¸4Ð$@Ñ$@Ô$@€KÔ!Ý%™KœK€KÔÝ&™[œ[€KÔÝ!™œ€KÔÝ(Ð6SÐTÑTÔT€KÔÝ'0¸kÐ'JÑ'JÔ'J€KÔ$å	ˆ|Ñ	Ô	ð Sð SØ×9Ò9ÐH\Ð9Ñ]Ô]ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔ×/Ò/Ñ1Ô1Ð1ØÔ×6Ò6°t¸SÈcÐ6ÑRÔRÐRð	Sð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Ss   ÃCF8Æ8F<Æ?F<c                  ó¬  — t          ¦   «         } t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | j        _        t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _	        t          d¬¦  «        | _
        t          d ¬¦  «        | _        t          d¦  «        5  |                      d¬¦  «        }|d         }d	}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}}d„ | j	        j        D ¦   «         }t)          |¦  «        }| }|s•ddt+          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }	t#          t          j        |	¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   r  r	  r”   r  r  r[   r„   r   r]   r^   r`   rH   ÚTRAVERSEr†   r‡   r‰   c              3   ó<   K  — | ]}|j         d d…         dk    V — Œd S )Nrd   r
  )Úargs)rš   Úcs     r)   ú	<genexpr>z7test_stage3_traverse_ocr_fail_closed.<locals>.<genexpr>m  s1   è è € Ð[Ð[°Q�q”v˜b˜q˜b”z [Ò0Ð[Ð[Ð[Ð[Ð[Ð[r+   z0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany)r   r   r_   )r   r   rj   r  r#   r  rm   rk   r  r°   rl   r  r   r  r   r   r   r    r!   r¶   r   r   r   r   )
r   rq   rr   r&   r7   rs   rL   r$   rK   r'   s
             r)   Ú$test_stage3_traverse_ocr_fail_closedr!  ]  sY  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ,5À:Ð,NÑ,NÔ,N€KÔ)Ý'0¸dÐ'CÑ'CÔ'C€KÔÔ$Ý$-¸4Ð$@Ñ$@Ô$@€KÔ!Ý%™KœK€KÔÝ&™[œ[€KÔÝ!™œ€KÔÝ(Ð6SÐTÑTÔT€KÔÝ'0¸dÐ'CÑ'CÔ'C€KÔ$å	ˆ|Ñ	Ô	ð \ð \Ø×9Ò9ÐH\Ð9Ñ]Ô]ˆØ�8Œ}Ð( Ð(ˆ} Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Õ(Ô(ˆ}Ñ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ)˜S œ\Ð)ˆz˜\Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆz˜\Ð)Ñ)Ô)Õ)Ô)ˆzÑ)Ô)Õ)Ô)˜\Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø[Ð[¸+Ô:KÔ:ZÐ[Ñ[Ô[Ð[•3Ð[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[•3Ñ[Ô[Ð[Õ[Ô[•3Ñ[Ô[Ð[Ð[Õ[Ô[Ð[Ñ[Ô[Õ[Ô[Ð[Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[ð	\ð \ð \ñ \ô \ð \ð \ð \ð \ð \ð \ð \øøøð \ð \ð \ð \ð \ð \s   ÃG"K	Ë	KËKc            	      ór  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _	        t          d¦  «        5  t          d¦  «        5  |                      ¦   «         }|d         }d	}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ddd¬¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   r�   Fr�   r“   r”   r[   r„   r   r]   r^   r`   rH   zINV-MAPDEVICE-VERIFY-UIr†   r‡   r‰   r‘   r’   rª   r«   )r   r   rj   rk   r°   r³   rl   r±   r²   r´   r   rµ   r   r   r   r    r!   r¹   r�   s          r)   Ú+test_stage2_atlas_ui_unverified_fail_closedr#  p  s  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ!™œ€KÔÝ&/¡k¤k€KÔ#Ý(Ð6PÐQÑQÔQ€KÔÝ-6ÀEÐ-JÑ-JÔ-J€KÔ*Ý-6ÀKÐ-PÑ-PÔ-P€KÔ*Ý#,¸%Ð#@Ñ#@Ô#@€KÔ å	Ð1Ñ	2Ô	2ð Fð FµE¸,Ñ4GÔ4Gð Fð FØ×3Ò3Ñ5Ô5ˆØ�8Œ}Ð( Ð(ˆ} Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Õ(Ô(ˆ}Ñ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø(Ð8¨C°¬LÐ8Ð(¨LÐ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð(¨LÐ8Ñ8Ô8Õ8Ô8Ð(Ñ8Ô8Õ8Ô8¨LÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8àÔ×)Ò)¨$°ÀÐ)ÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fs7   Ã H,ÃD8HÈH,ÈH	ÈH,ÈH	ÈH,È,H0È3H0c                  óN  — t          dd¬¦  «        } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _	        d | _
        t          d¦  «        5  |                      ¦   «         }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          | j                             ddd¬¦  «         | j                             ¦   «          | j        }|j        }d}||k    }	|	s½t          j        d|	fd||f¦  «        dt-          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}x}	}d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r	   r-   TrP   úcaptures/fake_entered.png©éÁ  éÂ  r”   r[   r\   r   r]   r^   r`   rH   Úzone_transitionedr|   r~   r'  r(  g333333Ó?r«   rd   r  r   rf   rg   rh   )r   r   rj   Údismiss_modalsr°   Úhoverrk   r³   rl   Úfind_portal_screen_posÚlog_watcherr   Úexecute_stage4_map_entrancer   r   r   r    r!   r€   rï   rÁ   r¸   r   r   r   )r   rq   rr   r&   r7   rs   rL   r$   ru   rK   r(   rv   s               r)   Útest_stage4_map_entrancer/  ƒ  s«  € Ý.¸ÀtÐLÑLÔL€KÝ(°dÐ;Ñ;Ô;€KÔÝ!*¡¤€KÔÝ!™œ€KÔÝ!™œ€KÔÝ%™KœK€KÔÝ&/¡k¤k€KÔ#Ý(Ð6QÐRÑRÔR€KÔÝ)2À
Ð)KÑ)KÔ)K€KÔ&Ø"€KÔå	ˆ|Ñ	Ô	ð ?ð ?Ø×5Ò5Ñ7Ô7ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ&Ô'Ð/¨4Ð/Ð'¨4Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð'¨4Ð/Ñ/Ô/Õ/Ô/Ð'Ñ/Ô/Õ/Ô/¨4Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÔ"×5Ò5Ñ7Ô7Ð7ØÔ×1Ò1°#°sÈÐ1ÑLÔLÐLØÔ×/Ò/Ñ1Ô1Ð1ØÔ.Ð>Ð.Ô9Ð>¸QÐ>Ð9¸QÒ>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð9¸QÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ{Ñ>Ô>Ð>Õ>Ô>ˆ{Ñ>Ô>Ð>Ð>Õ>Ô>Ð.Ñ>Ô>Õ>Ô>Ð9Ñ>Ô>Õ>Ô>¸QÑ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s   ÃILÌLÌ!Lc                  óX  — t          dd¬¦  «        } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _	        t          ¦   «         }t          ¦   «         }d|_
        ||j        _        || _        t          d	¦  «        5  |                      ¦   «         }|d
         }d}||k    }|slt!          j        d|fd||f¦  «        t!          j        |¦  «        t!          j        |¦  «        dœz  }dd|iz  }t'          t!          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt!          j        d|fd||f¦  «        t!          j        |¦  «        t!          j        |¦  «        dœz  }dd|iz  }t'          t!          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt!          j        d|fd||f¦  «        t!          j        |¦  «        t!          j        |¦  «        dœz  }dd|iz  }t'          t!          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r	   r-   TrP   r%  r&  zShoreline Hideoutr”   r[   r„   r   r]   r^   r`   rH   r)  Fr|   r~   r…   r†   r‡   r‰   )r   r   rj   r*  r°   r+  rk   r³   rl   r,  Ú	area_nameÚseed_latest_playable_zonerQ   r-  r   r.  r   r   r   r    r!   ©	r   Úmock_watcherÚ	mock_zonerq   rr   r&   r7   rs   rL   s	            r)   Ú-test_stage4_map_entrance_timeout_fails_closedr6  ™  s.  € Ý.¸ÀtÐLÑLÔL€KÝ(°dÐ;Ñ;Ô;€KÔÝ!*¡¤€KÔÝ!™œ€KÔÝ!™œ€KÔÝ%™KœK€KÔÝ&/¡k¤k€KÔ#Ý(Ð6QÐRÑRÔR€KÔÝ)2À
Ð)KÑ)KÔ)K€KÔ&å‘;”;€LÝ‘”€IØ-€IÔØ:C€LÔ*Ô7Ø*€KÔå	ˆ|Ñ	Ô	ð -ð -Ø×5Ò5Ñ7Ô7ˆØ�8Œ}Ð( Ð(ˆ} Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Õ(Ô(ˆ}Ñ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ&Ô'Ð0¨5Ð0Ð'¨5Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð'¨5Ð0Ñ0Ô0Õ0Ô0Ð'Ñ0Ô0Õ0Ô0¨5Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÐ,  G¤Ð,ˆ} Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ} Ð,Ñ,Ô,Õ,Ô,ˆ}Ñ,Ô,Õ,Ô, Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð	-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   Ã5FJÊJ#Ê&J#c                  ó”  — t          d¬¦  «        } t          d¬¦  «        | _        t          d¦  «        5 }|j        }dddd	œ|j        _        |                      ¦   «         }|d
         }d}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||u }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     t          t          d¦  «        ¦  «        ddddddd| j        | j        ¬¦
  «
         d d d ¦  «         d S # 1 swxY w Y   d S )Né   )r   TrP   z8tools.autonomous_mapping_coordinator.AutonomousMapRunnerÚ	COMPLETEDFé   )r[   Údeath_detectedÚcaptured_framesr[   r\   r   r]   r^   r`   rH   Úrunner_resultr;  r|   r~   zbin/AutoPOE2_Core.exeg     €V@rª   i¼  i�  éñ   )
Úcore_exerí   Úmin_duration_secÚcapture_interval_secÚportal_exitÚmax_esÚmax_manaÚmax_wardÚminimap_adapterÚwasd_sender)r   r   rj   r   rQ   ÚstartÚexecute_stage5_map_clearr   r   r   r    r!   rï   Ústrr   Úminimap_nav_adapterr³   )	r   Ú
MockRunnerÚmock_instancerq   rr   r&   r7   rs   rL   s	            r)   Útest_stage5_map_clearrN  ±  sq  € Ý.ÀÐCÑCÔC€KÝ(°dÐ;Ñ;Ô;€KÔå	ÐIÑ	JÔ	Jð 
ÈjØ"Ô/ˆà!Ø#Ø ð,
ð ,
ˆÔÔ(ð ×2Ò2Ñ4Ô4ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�?Ô#Ð$4Ô5Ð>¸Ð>Ð5¸Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð5¸Ð>Ñ>Ô>Õ>Ô>Ð5Ñ>Ô>Õ>Ô>¸Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø×*Ò*Ý�Ð5Ñ6Ô6Ñ7Ô7ØØ!Ø!$ØØØØØ'Ô;Ø#Ô7ð 	+ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   µE;F=Æ=GÇGc                  ó\  — t          ¦   «         } t          d¬¦  «        | _        t          d¬¦  «        | _        d | _        t          ¦   «         }t          d¦  «        5  |                      |d¬¦  «        }|d         }d}||k    }|slt          j        d	|fd
||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   úcaptures/fake_returned.pngr”   úDeserted Map©ÚrunnerÚmap_zoner[   r\   r   r]   r^   r`   rH   Úreturned_to_hideoutr|   r~   )r   r   rj   rl   r-  r   Úexecute_stage6_portal_returnr   r   r   r    r!   Úexecute_portal_exitr€   )r   Úmock_runnerrq   rr   r&   r7   rs   rL   s           r)   Ú%test_stage6_portal_return_with_runnerrY  Ï  s4  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ(Ð6RÐSÑSÔS€KÔØ"€KÔå‘+”+€KÝ	ˆ|Ñ	Ô	ð =ð =Ø×6Ò6¸kÐTbÐ6ÑcÔcˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ(Ô)Ð1¨TÐ1Ð)¨TÐ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð)¨TÐ1Ñ1Ô1Õ1Ô1Ð)Ñ1Ô1Õ1Ô1¨TÑ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ'×:Ò:Ñ<Ô<Ð<ð	=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s   ÁD7F!Æ!F%Æ(F%c                  óp  — t          ¦   «         } t          d¬¦  «        | _        t          d¬¦  «        | _        t          ¦   «         }t          ¦   «         }d|_        ||j        _        || _        t          d¦  «        5  |  	                    d d¬¦  «        }|d         }d}||k    }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   rP  rQ  r”   rR  r[   r„   r   r]   r^   r`   rH   rU  Fr|   r~   r…   r†   r‡   r‰   )r   r   rj   rl   r1  r2  rQ   r-  r   rV  r   r   r   r    r!   r3  s	            r)   Ú.test_stage6_portal_return_timeout_fails_closedr[  Ý  sß  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ(Ð6RÐSÑSÔS€KÔå‘;”;€LÝ‘”€IØ(€IÔØ:C€LÔ*Ô7Ø*€KÔå	ˆ|Ñ	Ô	ð -ð -Ø×6Ò6¸dÈ^Ð6Ñ\Ô\ˆØ�8Œ}Ð( Ð(ˆ} Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Õ(Ô(ˆ}Ñ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ(Ô)Ð2¨UÐ2Ð)¨UÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð)¨UÐ2Ñ2Ô2Õ2Ô2Ð)Ñ2Ô2Õ2Ô2¨UÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÐ,  G¤Ð,ˆ} Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ} Ð,Ñ,Ô,Õ,Ô,ˆ}Ñ,Ô,Õ,Ô, Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð	-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   Á>F H+È+H/È2H/c                  ój  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        d | _        t          d¦  «        5  |                      d d¬¦  «        }|d         }d}||k    }|slt          j
        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ddd¬¦  «         d„ | j        j        D ¦   «         }d}||v}|s¬t          j
        d|fd||f¦  «        t          j        |¦  «        dt!          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }t          j        d¦  «        dz   d|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}}| j                             ddd ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )!NTrP   rP  r”   rQ  rR  r[   r\   r   r]   r^   r`   rH   rU  r|   r~   é¾   ry   g      ø?r«   c                 ó*   — g | ]}|d          d          ‘ŒS r—   r˜   r™   s     r)   rœ   z8test_stage6_portal_return_standalone.<locals>.<listcomp>ý  r�   r+   r¥   rŸ   r¡   r¢   r£   u?   Cáº¤M TUYá»†T Ä�á»�I gá»­i phÃ­m VK_F (0x46) Ä‘á»ƒ vÃ o portal!r¤   r   rò   iø  rª   )r   r   rj   rk   r°   rl   r-  r   rV  r   r   r   r    r!   rï   r¶   r   r   r   r·   )
r   rq   rr   r&   r7   rs   rL   r¢   r8   r'   s
             r)   Ú$test_stage6_portal_return_standaloner_  ï  sj  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ%™KœK€KÔÝ!™œ€KÔÝ(Ð6RÐSÑSÔS€KÔØ"€KÔå	ˆ|Ñ	Ô	ð Nð NØ×6Ò6¸dÈ^Ð6Ñ\Ô\ˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ(Ô)Ð1¨TÐ1Ð)¨TÐ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð)¨TÐ1Ñ1Ô1Õ1Ô1Ð)Ñ1Ô1Õ1Ô1¨TÑ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1àÔ×5Ò5°d¸DÈcÐ5ÑRÔRÐRØSÐS¨kÔ.CÔ.RÐSÑSÔSˆØÐiˆt˜;Ð&ÐiÐiÐiÕiÔiÐiÐiÐiÐiˆt˜;ÐiÑiÔiÕiÔiˆtÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi˜;ÑiÔiÐiÕiÔi˜;ÑiÔiÐiÐiÐiÐiÑiÐiÕiÔiÐ(iÑiÔiÐiÑiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiØÔ×1Ò1°$¸ÈÐ1ÑMÔMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nð Nð Ns   Á5H&J(Ê(J,Ê/J,c                  óÎ  — t          d¬¦  «        } t          d ¬¦  «        | _        t          dddœ¬¦  «        | _        t          ddi¬¦  «        | _        t          ddi¬¦  «        | _        t          ddi¬¦  «        | _        t          ddd	it          ¦   «         d
œ¬¦  «        | _        t          ddi¬¦  «        | _        |  	                    ¦   «         }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }t          |¦  «        }d}||k    }	|	sÇt          j        d|	fd||f¦  «        dt!          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}	}|d         }g d¢}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          d S )NT©Úis_simulatedrP   r\   r  ©r[   ri   r[   r;  F©r[   r=  Úrunner_instancer   r]   r^   r`   rH   Ústages_completedrB   re   rD   rf   rg   rh   r;   )r   r   Úcheck_active_portal_in_hideoutrp   rµ   r  r.  rI  rV  Úexecute_pipeliner   r   r   r    r!   rD   r   r   r   r€   )r   Úreportrr   r&   r7   rs   rL   r$   ru   rK   r(   rv   s               r)   Útest_execute_pipeline_successrj    sG  € Ý.¸DÐAÑAÔA€KÝ1:ÈÐ1MÑ1MÔ1M€KÔ.Ý*3ØØ-ðBð Bð +ñ +ô +€KÔ'õ -6ÀHÈiÐCXÐ,YÑ,YÔ,Y€KÔ)Ý2;È(ÐT]ÐI^Ð2_Ñ2_Ô2_€KÔ/Ý.7ÀhÐPYÐEZÐ.[Ñ.[Ô.[€KÔ+Ý+4ØØ*¨EÐ2Ý$™;œ;ðCð Cð ,ñ ,ô ,€KÔ(õ
 09ÀxÐQZÐF[Ð/\Ñ/\Ô/\€KÔ,à×)Ò)Ñ+Ô+€FØ�(ÔÐ(˜yÐ(Ð˜yÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð˜yÐ(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô(˜yÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ(Ô)Ð/�3Ð)Ñ*Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�3Ñ/Ô/Ð/Õ/Ô/�3Ñ/Ô/Ð/Ð/Õ/Ô/Ð)Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ$Ô%ð ð *ð *ð *ð Ð%ð *ò ð ð ð õ ìðð ð ð Ð%ð *ð ñ ô õ ìð &ñ ô õ ìð*ñ ô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð Ô'×:Ò:Ñ<Ô<Ð<ØÔ)×<Ò<Ñ>Ô>Ð>ØÔ/×BÒBÑDÔDÐDØÔ+×>Ò>Ñ@Ô@Ð@ØÔ(×;Ò;Ñ=Ô=Ð=ØÔ,×?Ò?ÑAÔAÐAÐAÐAr+   c                  ó  — t          d¬¦  «        } t          d ¬¦  «        | _        t          dddœ¬¦  «        | _        t          ¦   «         | _        |                      ¦   «         }|d         }d}||k    }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|d         }g }||k    }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          d S )NTra  rP   r„   u   Stage 1 tháº¥t báº¡i)r[   r†   r[   r   r]   r^   r`   rH   r†   r‡   r‰   rf  )r   r   rg  rp   rµ   rh  r   r   r   r    r!   rÁ   ©r   ri  rr   r&   r7   rs   rL   s          r)   Ú'test_execute_pipeline_stage1_fail_haltsrm  &  sƒ  € Ý.¸DÐAÑAÔA€KÝ1:ÈÐ1MÑ1MÔ1M€KÔ.Ý*3ØØ'ðBð Bð +ñ +ô +€KÔ'õ -6©K¬K€KÔ)à×)Ò)Ñ+Ô+€FØ�(ÔÐ'˜xÐ'Ð˜xÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð˜xÐ'Ñ'Ô'Õ'Ô'ÐÑ'Ô'Õ'Ô'˜xÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø!Ð4 V¨G¤_Ð4Ð! _Ð4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð! _Ð4Ñ4Ô4Õ4Ô4Ð!Ñ4Ô4Õ4Ô4 _Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÐ$Ô%Ð+¨Ð+Ð%¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð%¨Ð+Ñ+Ô+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ)×;Ò;Ñ=Ô=Ð=Ð=Ð=r+   c                  ór  — t          d¬¦  «        } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          dddœ¬¦  «        | _        t          ddd	it          ¦   «         d
œ¬¦  «        | _        t          ddi¬¦  «        | _        |  	                    ¦   «         }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }g d¢}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          d S )NTra  )r’   é,  úBURNING MONOLITHrP   r\   zBurning Monolith©r[   Úentered_zoner;  Frd  r[   r   r]   r^   r`   rH   rf  )r?   r@   rA   )r   r   rg  rp   rµ   r  r.  rI  rV  rh  r   r   r   r    r!   rÁ   r€   rl  s          r)   Ú#test_execute_pipeline_portal_bypassrs  6  s  € Ý.¸DÐAÑAÔA€KÝ1:ÐHfÐ1gÑ1gÔ1g€KÔ.Ý*3©+¬+€KÔ'Ý,5©K¬K€KÔ)Ý2;±+´+€KÔ/Ý.7ÐPYÐk}ÐE~ÐE~Ð.Ñ.Ô.€KÔ+Ý+4ØØ*¨EÐ2Ý$™;œ;ðCð Cð ,ñ ,ô ,€KÔ(õ
 09ÀxÐQZÐF[Ð/\Ñ/\Ô/\€KÔ,à×)Ò)Ñ+Ô+€FØ�(ÔÐ(˜yÐ(Ð˜yÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð˜yÐ(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô(˜yÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ$Ô%ÐlÐ)lÐ)lÐ)lÐlÐ%Ð)lÒlÐlÐlÐlÕlÔlÐlÐlÐlÐlÐ%Ð)lÐlÑlÔlÕlÔlÐ%ÑlÔlÕlÔlÐ)lÑlÔlÐlÐlÑlÐlÐlÐlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlØÔ'×9Ò9Ñ;Ô;Ð;ØÔ)×;Ò;Ñ=Ô=Ð=ØÔ/×AÒAÑCÔCÐCØÔ+×>Ò>Ñ@Ô@Ð@Ð@Ð@r+   c                  óL
  — t          dd¬¦  «        } d}t          j                             |¦  «        �r’|                      |¦  «        \  }}g }g }d}||k    }d}||k    }	|o|	}
|r|	rd}||k    }d}||k    }|o|}
|
}|
sg }d	}||v }|}|rd
}||v }|}|}|�st          j        d||	fd|||f¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r¢|	r t          j        d||fd|||f¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }|                     |¦  «         |
�sLt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r‹t          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }d d!|iz  }|                     |¦  «         t          j        |d¦  «        i z  } d"d#| iz  }!|                     |!¦  «         t          j        |d$¦  «        i z  }"d%d&|"iz  }#t          t          j        |#¦  «        ¦  «        ‚d x}x}x}
x}x}x}x}	x}x}x}x}x}x}x}x}x}x}}d S |                      d ¦  «        \  }}d'}
||
v }|s—t          j        d|fd(||
f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        d)œz  }$d*d+|$iz  }%t          t          j        |%¦  «        ¦  «        ‚d x}}
d,}
||
v }|s—t          j        d|fd(||
f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        d)œz  }$d*d+|$iz  }%t          t          j        |%¦  «        ¦  «        ‚d x}}
d S )-Nr   r	   r-   ú2captures/20260913_215022_379_LIVE_VERIFICATION.pngi  ib  i�  i&  )r¼   é`  é—  )éæ   r½   é…  ©ú<=r{  )z%(py5)s <= %(py8)sz%(py8)s <= %(py10)sÚmx)r   rJ   Úpy10z%(py12)sÚpy12)z%(py15)s <= %(py18)sz%(py18)s <= %(py20)sÚmy)Úpy15Úpy18Úpy20z%(py22)sÚpy22r   z%(py25)sÚpy25r‡   )z%(py29)s in %(py32)s)Úpy29Úpy32z%(py34)sÚpy34)z%(py36)s in %(py39)s)Úpy36Úpy39z%(py41)sÚpy41z%(py44)sÚpy44rZ   zassert %(py47)sÚpy47)r¼   rv  rw  iJ  ©z%(py0)s in %(py3)sr1   r3   r   )rx  r½   ry  i×  )r   ÚosÚpathÚexistsr²   r   r   r   r   r   r   ÚappendÚ_format_boolopr    r!   )&r   Úimg_pathr|  r  r$   r&   r%   ru   Ú@py_assert9Ú@py_assert7r7   Ú@py_assert14Ú@py_assert16Ú@py_assert19Ú@py_assert17rr   Ú@py_assert28Ú@py_assert31Ú@py_assert30Ú@py_assert27Ú@py_assert38Ú@py_assert37Ú@py_format11Ú@py_format13Ú@py_format21Ú@py_format23Ú@py_format24Ú@py_format26Ú@py_format33Ú@py_format35Ú@py_format40Ú@py_format42Ú@py_format43Ú@py_format45Ú@py_format46Ú@py_format48r8   r'   s&                                         r)   Ú1test_optical_map_device_locator_authentic_capturer®  N  s™  € Ý.¸ÀtÐLÑLÔL€KØC€HÝ	„w‡~‚~�hÑÔñ *Ø×7Ò7¸ÑAÔA‰ˆˆBØoÐoÐoÐo�Ðo�˜Ò"Ðo˜dÐo˜˜dÒ"ÐoÐoÐoÐoÐoÐoÐoÐoÐo sÐo s¨bÒ'7Ðo°CÐo¨b°CÒ'7ÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐCTÐo¸RÐCTÐ=TÐoÐoÐoÐoÐoÐ_nÐoÐY[Ð_nÐYnÐoÐoÐoÐoÐoÐoÑoÕoÔoÐoÐoÐoÐoÐo�˜˜dÐoÑoÔoÕoÔo�ÑoÔoÐoÕoÔoÑoÔoÐoÐoÕoÔo˜ÑoÔoÐoÕoÔo˜ÑoÔoÐoÐoÕoÔo˜dÑoÔoÐoÐoÑoÐoÐoÐoÐoÐoÑoÐoÐo×oÒoÐoÑoÔoÐoÐoÐoÐoÐoÕoÔoÐoÐoÐoÐoÐo s¨b°CÐoÑoÔoÕoÔo sÑoÔoÐoÕoÔoÑoÔoÐoÐoÕoÔo¨bÑoÔoÐoÕoÔo¨bÑoÔoÐoÐoÕoÔo°CÑoÔoÐoÐoÑoÐoÐoÐoÐoÐoÑoÐoÐo×oÒoÐoÑoÔoÐoÕoÔoÐoÐoÑoÔoÐoÑoÐoÐoÐoÐoÐoÑoÐoÐo×oÒoÐoÑoÔoÐoÐoÑoÕoÔoÐoÐoÐoÐo¸RÐCTÐoÑoÔoÐoÕoÔoÑoÔoÐoÐoÕoÔo¸RÑoÔoÐoÕoÔo¸RÑoÔoÐoÐoÕoÔoÐCTÑoÔoÐoÐoÑoÐoÐoÐoÐoÐoÑoÐoÐo×oÒoÐoÑoÔoÐoÐoÐoÕoÔoÐoÐoÐoÐoÐY[Ð_nÐoÑoÔoÐoÕoÔoÑoÔoÐoÐoÕoÔoÐY[ÑoÔoÐoÕoÔoÐY[ÑoÔoÐoÐoÕoÔoÐ_nÑoÔoÐoÐoÑoÐoÐoÐoÐoÐoÑoÐoÐo×oÒoÐoÑoÔoÐoÕoÔoÐoÐoÑoÔoÐoÑoÐoÐoÐoÐoÐoÑoÐoÐo×oÒoÐoÑoÔoÐoÕoÔoÐoÐoÑoÔoÐoÑoÐoÐoÐoÐoÐoÑoÐoÕoÕoÔoÐoÑoÔoÑoÔoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoð ×7Ò7¸Ñ=Ô=‰ˆˆBØ,Ð,ˆrÐ,Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆrÐ,Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆrÑ,Ô,Ð,Õ,Ô,ˆrÑ,Ô,Ð,Ð,Õ,Ô,Ð,Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ø)Ð)ˆrÐ)Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆrÐ)Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆrÑ)Ô)Ð)Õ)Ô)ˆrÑ)Ô)Ð)Ð)Õ)Ô)Ð)Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r+   c                  ó|  — t          dd¬¦  «        } d}t          j                             |¦  «        �rª|                      |¦  «        \  }}d}||k    }d}||k    }|r|s¬t          j        d||fd|||f¦  «        t          j        |¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        d
œz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d}||k    }d}||k    }|r|s¬t          j        d||fd|||f¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d
œz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d S |                      d ¦  «        \  }}d}||v }
|
s—t          j        d|
fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
}d}||v }
|
s—t          j        d|
fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
}d S )Nr   r	   r-   ru  é°  i¤  rz  ©z%(py1)s <= %(py4)sz%(py4)s <= %(py6)sÚpx©rG   r_   rH   rI   rJ   r½   r’   Úpy)iú  r'  r‡   r�  r1   r3   r   )éð   r(  )r   rŽ  r�  r�  r,  r   r   r   r   r   r   r    r!   )r   r“  r²  r´  rr   r7   rK   r&   rL   rM   r$   r8   r'   s                r)   Ú-test_optical_portal_locator_authentic_capturer¶  [  sÛ  € Ý.¸ÀtÐLÑLÔL€KØC€HÝ	„w‡~‚~�hÑÔñ  Ø×3Ò3°HÑ=Ô=‰ˆˆBØÐ!ˆt�rÒ!Ð!˜TÐ!�r˜TÒ!Ð!Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!Ð!ˆt�r˜TÐ!Ñ!Ô!Õ!Ô!ˆtÑ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�rÑ!Ô!Ð!Õ!Ô!�rÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÐˆs�bÒÐ˜CÐ�b˜CÒÐÐÐÐÐÕÔÐÐÐÐÐˆs�b˜CÐÑÔÕÔˆsÑÔÐÕÔÑÔÐÐÕÔ�bÑÔÐÕÔ�bÑÔÐÐÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐÐÐð ×3Ò3°DÑ9Ô9‰ˆˆBØÐˆr�ZÐÐÐÐÕÔÐÐÐÐˆr�ZÐÑÔÐÕÔÑÔÐÐÕÔˆrÑÔÐÕÔˆrÑÔÐÐÕÔ�ZÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆr�ZÐÐÐÐÕÔÐÐÐÐˆr�ZÐÑÔÐÕÔÑÔÐÐÕÔˆrÑÔÐÕÔˆrÑÔÐÐÕÔ�ZÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr+   c                  ó„  — t          dd¬¦  «        } d}t          j                             |¦  «        �rª|                      |¦  «        \  }}d}||k    }d}||k    }|r|s¬t          j        d||fd|||f¦  «        t          j        |¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        d
œz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d}||k    }d}||k    }|r|s¬t          j        d||fd|||f¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d
œz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d S |                      d ¦  «        \  }}d}||k    }
|
s—t          j        d|
fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
}d}||k    }
|
s—t          j        d|
fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
}d S )Nr   r	   r-   zBcaptures/20260914_055336_887_LIVE_CLEAR_SEARCH_TEST_CORRELATED.pngéd   iÐ  rz  r±  Únxr³  rI   rJ   ro  r°  Únyi  r   r/   r1   r3   r   i*  )r   rŽ  r�  r�  r  r   r   r   r   r   r   r    r!   )r   r“  r¹  rº  rr   r7   rK   r&   rL   rM   r$   r8   r'   s                r)   Ú)test_optical_reachable_atlas_node_locatorr»  i  sÙ  € Ý.¸ÀtÐLÑLÔL€KàS€HÝ	„w‡~‚~�hÑÔñ Ø×6Ò6°xÑ@Ô@‰ˆˆBØÐ ˆs�bÒ Ð ˜DÐ �b˜DÒ Ð Ð Ð Ð Ð Õ Ô Ð Ð Ð Ð Ð ˆs�b˜DÐ Ñ Ô Õ Ô ˆsÑ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �bÑ Ô Ð Õ Ô �bÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð ØÐ ˆs�bÒ Ð ˜DÐ �b˜DÒ Ð Ð Ð Ð Ð Õ Ô Ð Ð Ð Ð Ð ˆs�b˜DÐ Ñ Ô Õ Ô ˆsÑ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �bÑ Ô Ð Õ Ô �bÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð ð ×6Ò6°tÑ<Ô<‰ˆˆBØÐˆr�TŠzÐÐÐÕÔÐÐÐÐˆr�TÐÑÔÐÕÔÑÔÐÐÕÔˆrÑÔÐÕÔˆrÑÔÐÐÕÔ�TÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆr�SŠyÐÐÐÕÔÐÐÐÐˆr�SÐÑÔÐÕÔÑÔÐÐÕÔˆrÑÔÐÕÔˆrÑÔÐÐÕÔ�SÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr+   c                  ó  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        |                      ¦   «          | j        }|j        }d}||k    }|s½t          j	        d|fd||f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}| j        }|j        }d}||k    }|s½t          j	        d|fd||f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}| j                             ddd¬¦  «         | j                             ddd¬¦  «         | j                             ddd¬¦  «         d S )NTrP   Ú rZ   r¨   )zT%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.ensure_focus
}.call_count
} >= %(py7)sr   rf   rg   rh   rd   r   )zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.click
}.call_count
} == %(py7)siZ  é,   g333333Ã?r«   iâ	  é    é9   gš™™™™™É?)r   r   rj   r°   rk   rl   r*  r¸   r   r   r   r   r   r   r    r!   r¹   rï   )r   r$   r&   ru   rK   r(   rv   s          r)   Útest_dismiss_modals_precheckrÁ  x  s»  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ!™œ€KÔÝ%™KœK€KÔå(°bÐ9Ñ9Ô9€KÔØ×ÒÑ Ô Ð àÔ#Ð3Ð#Ô.Ð3°!Ð3Ð.°!Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð.°!Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ;Ñ3Ô3Ð3Õ3Ô3ˆ;Ñ3Ô3Ð3Ð3Õ3Ô3Ð#Ñ3Ô3Õ3Ô3Ð.Ñ3Ô3Õ3Ô3°!Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØÔÐ,ÐÔ'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆ;Ñ,Ô,Ð,Õ,Ô,ˆ;Ñ,Ô,Ð,Ð,Õ,Ô,ÐÑ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔ×%Ò% d¨B¸DÐ%ÑAÔAÐAØÔ×%Ò% d¨B¸DÐ%ÑAÔAÐAØÔ×1Ò1°$¸È#Ð1ÑNÔNÐNÐNÐNr+   c                  óô  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          dd¬¦  «        5  t          dddœ¬¦  «        | j        _	        t          dg¬¦  «        | j        _
        |                      d	¬
¦  «        }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )NTrP   rR   rS   é   FrU   )r   r   r.   r4   çÍÌÌÌÌZ@r   )Útarget_slot_idxr[   r\   r   r]   r^   r`   rH   Úcraft_actionÚ
SKIP_CRAFTri   )r   r   rj   r*  rk   rl   rm   r   r"   rn   ro   rp   r   r   r   r    r!   r�   s          r)   Ú0test_waystone_auto_crafter_integration_rare_skiprÈ  ˆ  sO  € Ý.Ñ0Ô0€KÝ(°dÐ;Ñ;Ô;€KÔÝ!*¡¤€KÔÝ%™KœK€KÔÝ(Ð6MÐNÑNÔN€KÔÝ$-¸4Ð$@Ñ$@Ô$@€KÔ!å	Ð¨dÐ	3Ñ	3Ô	3ð @ð @Ý2;Ø ØðJ
ð J
ð 3ñ 3ô 3ˆÔÔ/õ 2;Ø$ðI
ð 2ñ 2ô 2ˆÔÔ.ð ×1Ò1À!Ð1ÑDÔDˆØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�>Ô"Ð2 lÐ2Ð" lÒ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð" lÐ2Ñ2Ô2Õ2Ô2Ð"Ñ2Ô2Õ2Ô2 lÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø�?Ô#Ð?Ð'?Ð?Ð#Ð'?Ò?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð#Ð'?Ð?Ñ?Ô?Õ?Ô?Ð#Ñ?Ô?Õ?Ô?Ð'?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s   ÂGI-É-I1É4I1c                  ó	  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        dg d¢ddgiddid	œ}t          |¬¦  «        | _        t          d
¦  «        5  |                      d¬¦  «        }|d         }d}||k    }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }t          |¦  «        }d}	||	k    }
|
sÇt          j	        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}
}	| j        }|j        }d}	||	k    }
|
s½t          j	        d|
fd||	f¦  «        d t          j        ¦   «         v st          j        | ¦  «        rt          j
        | ¦  «        nd t          j
        |¦  «        t          j
        |¦  «        t          j
        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}
}	d d d ¦  «         d S # 1 swxY w Y   d S )!NTrP   r\   r;   rc   ©r   r.   r4   rÄ  r;  F©r[   rf  Ústage1_datar=  r”   rd   ©Úmax_mapsr[   r9  r   r]   r^   r`   rH   Útotal_maps_requestedÚmaps_completedÚ	exhaustedr|   r~   Úrunsre   rD   rf   rg   rh   ©zX%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.execute_pipeline
}.call_count
} == %(py7)sr   ©r   r   Ú#recover_from_client_crash_if_neededÚstart_3s_sentinelÚstop_3s_sentinelrh  r   Úrun_multi_map_loopr   r   r   r    r!   rD   r   r   r   r¸   )r   Úsuccess_reportrq   rr   r&   r7   rs   rL   r$   ru   rK   r(   rv   s                r)   Útest_run_multi_map_loop_successrÚ  Ÿ  s®  € Ý.Ñ0Ô0€KÝ6?ÈTÐ6RÑ6RÔ6R€KÔ3Ý$-¡K¤K€KÔ!Ý#,¡;¤;€KÔ àð cð  cð  cØ)Ð,AÐ+BÐCØ*¨EÐ2ð	ð €Nõ $-¸.Ð#IÑ#IÔ#I€KÔ å	ˆ|Ñ	Ô	ð <ð <Ø×,Ò,°aÐ,Ñ8Ô8ˆØ�8Œ}Ð+ Ð+ˆ} Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ} Ð+Ñ+Ô+Õ+Ô+ˆ}Ñ+Ô+Õ+Ô+ Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÐ)Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ#Ô$Ð)¨Ð)Ð$¨Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð$¨Ð)Ñ)Ô)Õ)Ô)Ð$Ñ)Ô)Õ)Ô)¨Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�;ÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø�v”;Ð$�s�;ÑÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�sÑ$Ô$Ð$Õ$Ô$�sÑ$Ô$Ð$Ð$Õ$Ô$�;Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÔ+Ð;Ð+Ô6Ð;¸!Ð;Ð6¸!Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð6¸!Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ{Ñ;Ô;Ð;Õ;Ô;ˆ{Ñ;Ô;Ð;Ð;Õ;Ô;Ð+Ñ;Ô;Õ;Ô;Ð6Ñ;Ô;Õ;Ô;¸!Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   Á<O2Q;Ñ;Q?ÒQ?c                  ó&	  — t          ¦   «         } t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        dg d¢ddgiddid	œ}d
g dg iddœ}t          ||g¬¦  «        | _        t          d¦  «        5  |                      d¬¦  «        }|d         }d}||k    }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }	t          |	¦  «        }d}
||
k    }|sÇt          j	        d|fd ||
f¦  «        d!t          j        ¦   «         v st          j        t          ¦  «        rt          j
        t          ¦  «        nd!t          j
        |	¦  «        t          j
        |¦  «        t          j
        |
¦  «        d"œz  }d#d$|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}x}}
| j        }	|	j        }d}
||
k    }|s½t          j	        d|fd%||
f¦  «        d&t          j        ¦   «         v st          j        | ¦  «        rt          j
        | ¦  «        nd&t          j
        |	¦  «        t          j
        |¦  «        t          j
        |
¦  «        d"œz  }d#d$|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}x}}
d d d ¦  «         d S # 1 swxY w Y   d S )'NTrP   r\   r;   rc   rÊ  r;  FrË  r„   uT   Stage 1 tháº¥t báº¡i: Khong tim thay Waystone nao trong Hang 1 (Row 0)! Fail-closed.)r[   rf  rÌ  r†   rÄ   r”   r§   rÍ  r[   Ú	EXHAUSTEDr   r]   r^   r`   rH   rÏ  rÐ  rZ   rÑ  r|   r~   rÒ  rd   re   rD   rf   rg   rh   rÓ  r   rÔ  )r   rÙ  Úexhausted_reportrq   rr   r&   r7   rs   rL   r$   ru   rK   r(   rv   s                 r)   Ú+test_run_multi_map_loop_stops_on_exhaustionrÞ  ¶  sÔ  € Ý.Ñ0Ô0€KÝ6?ÈTÐ6RÑ6RÔ6R€KÔ3Ý$-¡K¤K€KÔ!Ý#,¡;¤;€KÔ àð cð  cð  cØ)Ð,AÐ+BÐCØ*¨EÐ2ð	ð €Nð ØØ)¨2Ð.Øgð	ð Ðõ $-¸.ÐJZÐ9[Ð#\Ñ#\Ô#\€KÔ å	ˆ|Ñ	Ô	ð <ð <Ø×,Ò,°aÐ,Ñ8Ô8ˆØ�8Œ}Ð+ Ð+ˆ} Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ} Ð+Ñ+Ô+Õ+Ô+ˆ}Ñ+Ô+Õ+Ô+ Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÐ)Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ#Ô$Ð)¨Ð)Ð$¨Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð$¨Ð)Ñ)Ô)Õ)Ô)Ð$Ñ)Ô)Õ)Ô)¨Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�;ÔÐ' 4Ð'Ð 4Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø�v”;Ð$�s�;ÑÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�sÑ$Ô$Ð$Õ$Ô$�sÑ$Ô$Ð$Ð$Õ$Ô$�;Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÔ+Ð;Ð+Ô6Ð;¸!Ð;Ð6¸!Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð6¸!Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ{Ñ;Ô;Ð;Õ;Ô;ˆ{Ñ;Ô;Ð;Ð;Õ;Ô;Ð+Ñ;Ô;Õ;Ô;Ð6Ñ;Ô;Õ;Ô;¸!Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   ÂO2RÒR
ÒR
c            
      ó  — t          d¬¦  «        } t          d¬¦  «        | _        t          ddddddddœ¬¦  «        | j        _        |                      ¦   «         }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}| j        j                             ¦   «          d S )NTra  rP   rÌ   r:  Fr½  )ÚsuccessÚstash_openedÚtabs_detectedÚitems_depositedÚwaystone_withdrawnÚstash_closedr†   r[   r\   r   r]   r^   r`   rH   rã  râ  )r   r   rj   Ústash_orchestratorÚrun_full_stash_cycleÚexecute_stage0_stash_routiner   r   r   r    r!   r€   r�   s          r)   Ú!test_stage0_stash_routine_successré  Ô  s‰  € Ý.¸DÐAÑAÔA€KÝ(°dÐ;Ñ;Ô;€KÔÝ:CØØØØØ#ØØðRð Rð ;ñ ;ô ;€KÔ"Ô7ð ×
2Ò
2Ñ
4Ô
4€CØˆxŒ=Ð%˜IÐ%ˆ=˜IÒ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ=˜IÐ%Ñ%Ô%Õ%Ô%ˆ=Ñ%Ô%Õ%Ô%˜IÑ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØÐ Ô!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØˆÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÔ"Ô7×JÒJÑLÔLÐLÐLÐLr+   c                  ó^  — t          d¬¦  «        } t          d¬¦  «        | _        t          ¦   «         | _        t          d ¬¦  «        | _        t          dddœ¬¦  «        | _        t          dddœ¬¦  «        | _        t          d	di¬¦  «        | _        t          d	di¬¦  «        | _        t          dd
dœ¬¦  «        | _	        t          dd i dœ¬¦  «        | _
        t          d	di¬¦  «        | _        |                      ddd¬¦  «        }|d	         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          d S )NTra  rP   r\   r§   )r[   rã  rX   rc  r[   zThe Western Enigmarq  )r[   re  r=  r   F)rÅ  Úenable_stashingÚenable_post_stashingr   r]   r^   r`   rH   ÚSTAGE0_STASHrf  r‡   r‰   r<   )r   r   rj   r*  rg  rè  rp   rµ   r  r.  rI  rV  rh  r   r   r   r    r!   r€   rl  s          r)   Ú#test_execute_pipeline_with_stashingrî  è  s|  € Ý.¸DÐAÑAÔA€KÝ(°dÐ;Ñ;Ô;€KÔÝ!*¡¤€KÔÝ1:ÈÐ1MÑ1MÔ1M€KÔ.Ý/8ØØðGð Gð 0ñ 0ô 0€KÔ,õ +4ØØ0ðBð Bð +ñ +ô +€KÔ'õ -6ÀHÈiÐCXÐ,YÑ,YÔ,Y€KÔ)Ý2;È(ÐT]ÐI^Ð2_Ñ2_Ô2_€KÔ/Ý.7ÐPYÐkð  FAð  FAð  /Bñ  /Bô  /B€KÔ+Ý+4ÈYÐkoð  CEð  CFð  CFð  ,Gñ  ,Gô  ,G€KÔ(Ý/8ÀxÐQZÐF[Ð/\Ñ/\Ô/\€KÔ,à×)Ò)¸!ÈTÐhmÐ)ÑnÔn€FØ�(ÔÐ(˜yÐ(Ð˜yÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð˜yÐ(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô(˜yÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ7˜VÐ$6Ô7Ð7ˆ>Ð7Ð7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7ˆ>Ð7Ð7Ñ7Ô7Õ7Ô7ˆ>Ñ7Ô7Õ7Ô7Ð7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÐ: Ð'9Ô :Ð:ÐÐ :Ð:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:ÐÐ :Ð:Ñ:Ô:Õ:Ô:ÐÑ:Ô:Õ:Ô:Ð :Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ,×?Ò?ÑAÔAÐAÐAÐAr+   c            	      ó’  — t          d¬¦  «        } t          d¬¦  «        | _        t          dd¬¦  «        5  t          ddd	g¬¦  «        5  |                      ¦   «         }d
}||u }|s¬t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }t          j        d¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d
d
d
¦  «         n# 1 swxY w Y   d
d
d
¦  «         d
S # 1 swxY w Y   d
S )ux   INV-ATLAS-FARM-NODE: Cá»•ng portal cÅ© cá»§a The Burning Monolith hoáº·c The Well of Souls pháº£i bá»‹ tá»« chá»‘i 100%.Fra  úcaptures/fake_hideout.pngrP   rS   Tú#src.common.find_portal_label_by_ocr©é¼  r(  úTHE BURNING MONOLITH)é   éô  zTHE WELL OF SOULSNr|   r   rq   r1   uU   Pháº£i tá»« chá»‘i toÃ n bá»™ portal thuá»™c Special Arenas (Monolith/Well of Souls)!r¤   r   )r   r   rl   r   rg  r   r   r   r   r   r   r·   r    r!   )r   rq   r7   r$   r8   r'   s         r)   ÚEtest_check_active_portal_rejects_burning_monolith_and_forbidden_nodesr÷    s"  € å.¸EÐBÑBÔB€KÝ(Ð6QÐRÑRÔR€KÔå	Ð¨dÐ	3Ñ	3Ô	3ð tð tÝ	Ð4Ø/Ø,ðDð 
ñ 
ô 
ðtð tð
 ×8Ò8Ñ:Ô:ˆØÐsˆs�dˆ{ÐsÐsÐsÕsÔsÐsÐsÐsÐsˆs�dÐsÑsÔsÐsÕsÔsÑsÔsÐsÐsÕsÔsˆsÑsÔsÐsÕsÔsˆsÑsÔsÐsÐsÕsÔs�dÑsÔsÐsÐsÑsÐsÕsÔsÐsÑsÔsÐsÑsÐsÐsÐsÑsÐsÕsÕsÔsÐsÑsÔsÑsÔsÐsÐsÐsÐsÐsðtð tð tñ tô tð tð tð tð tð tð tøøøð tð tð tð tð tð tð tñ tô tð tð tð tð tð tð tð tøøøð tð tð tð tð tð ts6   ·D<ÁCD$ÄD<Ä$D(	Ä(D<Ä+D(	Ä,D<Ä<E ÅE c            	      óp  — t          d¬¦  «        } t          d¬¦  «        | _        t          dd¬¦  «        5  t          ddd	g¬¦  «        5  |                      ¦   «         }d
}||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d
x}x}}d
d
d
¦  «         n# 1 swxY w Y   d
d
d
¦  «         d
S # 1 swxY w Y   d
S )u\   Portal cá»§a báº£n Ä‘á»“ cÃ y thÃ´ng thÆ°á»�ng há»£p lá»‡ (Deserted) Ä‘Æ°á»£c cháº¥p nháº­n.Fra  rð  rP   rS   Trñ  rò  )rõ  rö  ÚDESERTEDNr   )z%(py0)s is not %(py3)srq   r1   r3   r   rd   rù  r   r]   r^   r`   rH   )r   r   rl   r   rg  r   r   r   r   r   r   r    r!   )
r   rq   r7   r$   r8   r'   rr   r&   rs   rL   s
             r)   Ú4test_check_active_portal_accepts_regular_farming_maprú    s�  € å.¸EÐBÑBÔB€KÝ(Ð6QÐRÑRÔR€KÔå	Ð¨dÐ	3Ñ	3Ô	3ð $ð $Ý	Ð4Ø/Ø#ðDð 
ñ 
ô 
ð$ð $ð
 ×8Ò8Ñ:Ô:ˆØÐˆs˜$ˆÐÐÐÕÔÐÐÐÐˆs˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ�1ŒvÐ#˜Ð#ˆv˜Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆv˜Ð#Ñ#Ô#Õ#Ô#ˆvÑ#Ô#Õ#Ô#˜Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s6   ·F+ÁD<FÆF+ÆF	ÆF+ÆF	ÆF+Æ+F/Æ2F/c                  ó¾  — t          d¬¦  «        } t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          d¬¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        t          d¬¦  «        | _	        t          d¬¦  «        | _
        t          d	d
g¬¦  «        5  |                      ¦   «         }|j        }d} ||¦  «        }| }|s³t          j        d¦  «        dz   dt!          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t)          t          j        |¦  «        ¦  «        ‚dx}x}x}}ddd¦  «         dS # 1 swxY w Y   dS )um   Stage 2: Náº¿u portal táº¡i Map Device lÃ  The Burning Monolith, khÃ´ng Ä‘Æ°á»£c coi lÃ  portal_already_open.Fra  TrP   rç   )rÿ   rÿ   )rw  ry  r�   rñ  )ró  r(  rp  Úportal_already_openuH   KhÃ´ng Ä‘Æ°á»£c cháº¥p thuáº­n portal_already_open cho Burning Monolith!zK
>assert not %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
}rq   )r   r   r_   rH   N)r   r   rj   r±   r  Úfind_map_device_world_posr²   r°   r*  rl   r´   r   rµ   Úgetr   r·   r   r   r   r   r    r!   )r   rq   r$   r&   rK   r•  r(   s          r)   Ú2test_stage2_rejects_forbidden_portal_at_map_devicerÿ    s8  € å.¸EÐBÑBÔB€KÝ(°dÐ;Ñ;Ô;€KÔÝ-6ÀEÐ-JÑ-JÔ-J€KÔ*Ý'0¸nÐ'MÑ'MÔ'M€KÔ$Ý,5À>Ð,RÑ,RÔ,R€KÔ)Ý-6ÀKÐ-PÑ-PÔ-P€KÔ*Ý!™œ€KÔÝ!*¡¤€KÔÝ(Ð6PÐQÑQÔQ€KÔÝ#,¸%Ð#@Ñ#@Ô#@€KÔ å	Ð4ÐDbÐCcÐ	dÑ	dÔ	dð ~ð ~Ø×3Ò3Ñ5Ô5ˆØ”7Ð}Ð0Ð}�7�7Ð0Ñ1Ô1Ð}Ð1Ð1Ð}Ð1Ð}Õ}Ô}Ð3}Ñ}Ô}Ð}Ñ}Ð}Õ}Ô}Ñ}Ô}Ð}Ð}Õ}Ô}�3Ñ}Ô}Ð}Õ}Ô}�3Ñ}Ô}Ð}Ð}Õ}Ô}�7Ñ}Ô}Õ}Ô}Ð0Ñ}Ô}Õ}Ô}Ð1Ñ}Ô}Ð}Ð}Ñ}Ð}Õ}Õ}Ô}Ð}Ñ}Ô}Ñ}Ô}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}Ð}ð~ð ~ð ~ñ ~ô ~ð ~ð ~ð ~ð ~ð ~ð ~ð ~øøøð ~ð ~ð ~ð ~ð ~ð ~s   ÃC)GÇGÇGc            
      óÀ  ‡— t          d¬¦  «        Št          d¬¦  «        ‰_        t          ¦   «         ‰_        t          d¬¦  «        ‰_        t          d¬¦  «        ‰_        t          d¬¦  «        ‰_        t          ¦   «         ‰_        t          ¦   «         ‰_        t          ¦   «         ‰_	        t          d¬¦  «        ‰_
        t          d¬¦  «        ‰_        d	d
g dœgi} t          dd¬¦  «        5  t          dt          ¦   «         ¬¦  «        5  t          d| ¬¦  «        5  ‰                     d¬¦  «        }ˆfd„‰j        j        D ¦   «         }t          |¦  «        }d}||k    }|�st!          j        d|fd||f¦  «        dt%          j        ¦   «         v st!          j        t          ¦  «        rt!          j        t          ¦  «        nddt%          j        ¦   «         v st!          j        |¦  «        rt!          j        |¦  «        ndt!          j        |¦  «        t!          j        |¦  «        dœz  }t!          j        d¦  «        dz   d|iz  }t/          t!          j        |¦  «        ¦  «        ‚dx}x}}‰j                             ddd¬¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )ur   Stage 3: DÃ¹ cÃ³ nÃºt TRAVERSE nhÆ°ng text node lÃ  THE BURNING MONOLITH thÃ¬ tuyá»‡t Ä‘á»‘i Cáº¤M báº¥m TRAVERSE.Fra  TrP   )iè  r’   Nzcaptures/fake_node.png)r°  rõ  Úlinesrô  )ÚtextÚwordsrS   zPIL.Image.openzwinocr.recognize_pil_syncrX   r  c                 ó„   •— g | ]<}|d          t          d‰j        z  ¦  «        t          d‰j        z  ¦  «        fk    ¯:|‘Œ=S )r   r  i  )rÇ   Úscale_xÚscale_y)rš   r  r   s     €r)   rœ   zItest_stage3_refuses_direct_traverse_on_forbidden_node.<locals>.<listcomp>H  s‡   ø€ ð  Tð  Tð  T ÈÈ1ÌÕRUÐVZÐ]hÔ]pÑVpÑRqÔRqÕsvÐwzð  ~Iô  ~Qñ  xQñ  tRô  tRð  RSò  JSð  JS˜!ð  JSð  JSð  JSr+   rZ   r   rC   rD   Úregular_clicksrF   u[   Pháº£i click chá»�n sang node cÃ y thÃ´ng thÆ°á»�ng thay vÃ¬ direct-traverse vÃ o Monolith!z
>assert %(py8)srJ   r.   r4   rÆ   r«   )r   r   rj   r*  r  Úfind_active_glowing_atlas_noderl   r°   r  rk   rm   r  r   r  r¶   rD   r   r   r   r   r   r   r·   r    r!   rï   )	Úfake_ocr_resrq   r  r7   rK   r%   rL   rM   r   s	           @r)   Ú5test_stage3_refuses_direct_traverse_on_forbidden_noder
  1  sü  ø€ å.¸EÐBÑBÔB€KÝ(°dÐ;Ñ;Ô;€KÔÝ!*¡¤€KÔÝ,5À;Ð,OÑ,OÔ,O€KÔ)Ý1:ÈÐ1MÑ1MÔ1M€KÔ.Ý(Ð6NÐOÑOÔO€KÔÝ!™œ€KÔÝ&™[œ[€KÔÝ%™KœK€KÔÝ$-¸4Ð$@Ñ$@Ô$@€KÔ!õ (1¸kÐ'JÑ'JÔ'J€KÔ$ð Ð'=ÈÐKÐKÐLÐM€LÝ	Ð¨dÐ	3Ñ	3Ô	3ð Sð SÝ	Ð­i©k¬kÐ	:Ñ	:Ô	:ðSð Så	Ð*¸Ð	FÑ	FÔ	FðSð Sð ×9Ò9ÐH_Ð9Ñ`Ô`ˆð Tð  Tð  Tð  T [Ô%6Ô%Eð  Tñ  Tô  TˆÝ�>Ñ"Ô"ð  	G að  	GÐ" aÒ'ð  	Gð  	Gñ  	Gõ  	Gô  	Gð  	Gð  	Gð  	Gð  	GÐ" að  	Gñ  	Gô  	Gð  	Gõ  	Gô  	Gñ  	Gô  	Gð  	Gð  	Gõ  	Gô  	G�sñ  	Gô  	Gð  	Gõ  	Gô  	G�sñ  	Gô  	Gð  	Gð  	Gð  	Gõ  	Gô  	Gñ  	Gô  	Gð  	Gð  	Gõ  	Gô  	G�>ñ  	Gô  	Gð  	Gõ  	Gô  	G�>ñ  	Gô  	Gð  	Gð  	Gõ  	Gô  	GÐ"ñ  	Gô  	Gõ  	Gô  	G añ  	Gô  	Gð  	Gð  	Gñ  	Gð  	Gõ  	Gô  	Gð  *Gñ  	Gô  	Gð  	Gñ  	Gð  	Gð  	Gð  	Gñ  	Gð  	Gõ  	Gõ  	Gô  	Gð  	Gñ  	Gô  	Gñ  	Gô  	Gð  	Gð  	Gð  	Gð  	Gð  	Gð  	Gð  	GàÔ×6Ò6°t¸SÈcÐ6ÑRÔRÐRðSð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Ss[   Ã5KÄJ;Ä%E3J$ÊJ;Ê$J(Ê(J;Ê+J(Ê,J;Ê/KÊ;J?	Ê?KËJ?	ËKËKËK);Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r÷   rŽ  ÚpytestÚpathlibr   Úunittest.mockr   r   Ú$tools.autonomous_mapping_coordinatorr   r*   r9   rN   rw   r‚   rŠ   r�   rº   r¾   rÂ   rÊ   rÔ   rã   rð   rý   r  r  r  r!  r#  r/  r6  rN  rY  r[  r_  rj  rm  rs  r®  r¶  r»  rÁ  rÈ  rÚ  rÞ  ré  rî  r÷  rú  rÿ  r
  r˜   r+   r)   ú<module>r     s;  ðð	ð 	ð € € € € € € € € € € € € €€€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø MÐ MÐ MÐ MÐ MÐ Mð,ð ,ð ,ðð ð ð	%ð 	%ð 	%ð?ð ?ð ?ð4Wð Wð Wð6,ð ,ð ,ð(
4ð 
4ð 
4ð0ð 0ð 0ð6Eð Eð Eð"*ð *ð *ðað að að,Cð Cð Cðð ð ð0
ð 
ð 
ð.!ð !ð !ð ;ð ;ð ;ðFð Fð Fð.Sð Sð Sð&\ð \ð \ð&Fð Fð Fð&?ð ?ð ?ð,-ð -ð -ð0
ð 
ð 
ð<=ð =ð =ð-ð -ð -ð$Nð Nð Nð&!Bð !Bð !BðH>ð >ð >ð Að Að Að0
*ð 
*ð 
*ð ð  ð  ðð ð ðOð Oð Oð @ð @ð @ð.<ð <ð <ð.<ð <ð <ð<Mð Mð Mð(Bð Bð Bð4tð tð tð$ð $ð $ð~ð ~ð ~ð$Sð Sð Sð Sð Sr+   