Ë
    ¾�j¨L  ã                   óð  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZmZmZmZmZmZ d dlmZ d dlZd dlZd dlmZ d dlmZ  ej8                  e«      Z ej>                  d«      Z d	e!d
e"fd„Z#dejH                  d
e%fd„Z&dejH                  d
e%fd„Z'dejH                  d
e%fd„Z(dejH                  dee!   de"fd„Z)de!d
e!fd„Z* G d„ de+«      Z, G d„ de	«      Z- G d„ de«      Z.de!de"fd„Z/y)é    )Úabsolute_importN)ÚBaseHTTPRequestHandlerÚThreadingHTTPServer)ÚAnyÚCallableÚDictÚListÚOptionalÚTuple)ÚElementTree)ÚSERVER_PROTOCOL_VERSION)ÚDEFAULT_SERVER_PORTz\[(\d+),(\d+)\]\[(\d+),(\d+)\]Ú
bounds_strÚreturnc                 óF  — t         j                  | «      }|syt        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      «      f\  }}}}t	        d||z
  «      t	        d||z
  «      z  S )Nr   é   é   é   é   )Ú
_BOUNDS_REÚ	fullmatchÚintÚgroupÚmax)r   ÚmatchÚx1Úy1Úx2Úy2s         ú^/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/uiautomator2/agent_cli/server.pyÚ_bounds_arear!      s‡   € Ü× Ñ  Ó,€EÙØÜ˜Ÿ™ Q›Ó(¬#¨e¯k©k¸!«nÓ*=¼sÀ5Ç;Á;ÈqÃ>Ó?RÔTWÐX]×XcÑXcÐdeÓXfÓTgÐg�N€BˆˆB�Üˆq�"�r‘'‹?œS  B¨¡G›_Ñ,Ð,ó    Únodec                 ó†   — | j                  d«      dk(  ry| j                  dd«      }t        |«      xr t        |«      dk(  S )NÚ	displayedÚfalseTÚboundsÚ r   )ÚgetÚboolr!   )r#   r'   s     r    Ú_is_invisibler+   !   s?   € Ø‡x�x�Ó Ò'ØØ�X‰X�h Ó#€FÜ�‹<Ò5œL¨Ó0°AÑ5Ð5r"   c                 óÜ   — t        | j                  dd«      j                  «       xsB | j                  dd«      j                  «       xs  | j                  dd«      j                  «       «      S )NÚtextr(   úcontent-descúresource-id)r*   r)   Ústrip©r#   s    r    Ú_has_contentr2   (   s^   € ÜØ�‰�˜Ó×"Ñ"Ó$ò 	/Ø�8‰8�N BÓ'×-Ñ-Ó/ò	/à�8‰8�M 2Ó&×,Ñ,Ó.óð r"   c                 óV   — | j                  d«      dk(  xs | j                  d«      dk(  S )NÚ	clickableÚtrueÚ
scrollable)r)   r1   s    r    Ú_is_interactiver7   0   s)   € Ø�8‰8�KÓ  FÑ*ÒN¨d¯h©h°|Ó.DÈÑ.NÐNr"   ÚlinesÚdepthc                 ó
  — t        | «      ry t        | «      }| j                  dk7  r5t        | «      s*t	        | «      st        |«      dk(  rt        |d   ||«       y g }| j                  d| j                  «      }|r|dk7  r|j                  |«       | j                  dd«      j                  «       }|r|j                  d|z  «       | j                  dd«      j                  «       }|r||k7  r|j                  d	|z  «       | j                  d
d«      j                  «       }|r|j                  d|z  «       | j                  dd«      }	|	rqt        j                  |	«      }
|
rZ|j                  d|
j                  d«      ›d|
j                  d«      ›d|
j                  d«      ›d|
j                  d«      ›d�	«       g }| j                  d«      dk(  r|j                  d«       | j                  d«      dk(  r|j                  d«       | j                  d«      dk(  r|j                  d«       | j                  d«      dk(  r|j                  d«       | j                  d«      dk(  r|j                  d«       | j                  d«      dk(  r|j                  d«       |r |j                  dj                  |«      «       |r,|j                  d|z  dj                  |«      z   «       |dz   }n|}|D ]  }t        |||«       Œ y ) NÚ	hierarchyr   r   Úclassr-   r(   z"%s"r.   z	desc="%s"r/   z#%sr'   ú[ú,r   r   r   ú]r4   r5   Úclickr6   ÚscrollÚcheckedÚfocusedÚselectedÚenabledr&   Údisabledú z  )r+   ÚlistÚtagr2   r7   ÚlenÚ_render_noder)   Úappendr0   r   r   r   Újoin)r#   r8   r9   ÚchildrenÚpartsÚ
class_namer-   ÚdescÚresource_idr'   r   ÚflagsÚchild_depthÚchilds                 r    rK   rK   4   s‚  € Ü�TÔØä�D‹z€HØ‡x�x�;Ò¤|°DÔ'9Ä/ÐRVÔBWÔ\_Ð`hÓ\iÐmnÒ\nÜ�X˜a‘[ %¨Ô/Øà€Eà—‘˜' 4§8¡8Ó,€JÙ�j KÒ/Ø�‰�ZÔ à�8‰8�F˜BÓ×%Ñ%Ó'€DÙØ�‰�V˜d‘]Ô#à�8‰8�N BÓ'×-Ñ-Ó/€DÙ�˜’Ø�‰�[ 4Ñ'Ô(à—(‘(˜=¨"Ó-×3Ñ3Ó5€KÙØ�‰�U˜[Ñ(Ô)à�X‰X�h Ó#€FÙÜ×$Ñ$ VÓ,ˆÙØ�LŠL¨E¯K©K¸­N¸E¿K¹KÈ½NÈEÏKÉKÐXYÍNÐ\a×\gÑ\gÐhiÕ\jÐkÔlà€EØ‡x�x�Ó Ò&Ø�‰�WÔØ‡x�x�Ó Ò'Ø�‰�XÔØ‡x�x�	Ó˜fÒ$Ø�‰�YÔØ‡x�x�	Ó˜fÒ$Ø�‰�YÔØ‡x�x�
Ó˜vÒ%Ø�‰�ZÔ Ø‡x�x�	Ó˜gÒ%Ø�‰�ZÔ ÙØ�‰�S—X‘X˜e“_Ô%áØ�‰�T˜E‘\ C§H¡H¨U£OÑ3Ô4Ø˜a‘i‰àˆàò 0ˆÜ�U˜E ;Õ/ñ0r"   Úxmlc                 ól   — t        j                  | «      }g }t        ||d«       dj                  |«      S )Nr   ú
)ÚETÚ
fromstringrK   rM   )rV   Úrootr8   s      r    Úhierarchy_to_textr\   o   s0   € Ü�=‰=˜Ó€DØ€EÜ��u˜aÔ Ø�9‰9�UÓÐr"   c            
       ó  — e Zd Z	 	 	 ddeedej                  f      deeg ee   f      deeg ef      fd„Z	e
dee   fd„«       Zedee   fd	„«       Zedefd
„«       Zdedefd„Zdefdee   defd„Zdefdee   defd„Zy)ÚDeviceRegistryNÚ	connector.Údevice_listerÚdefault_serial_getterc                 óØ   — |xs t         j                  | _        |xs | j                  | _        |xs | j
                  | _        i | _        d | _        t        j                  «       | _        y ©N)Úu2ÚconnectÚ
_connectorÚ_list_online_serialsÚ_device_listerÚ_current_unique_serialÚ_default_serial_getterÚ_devicesÚ_default_serialÚ	threadingÚLockÚ_lock)Úselfr_   r`   ra   s       r    Ú__init__zDeviceRegistry.__init__w   sW   € ð $Ò1¤r§z¡zˆŒØ+ÒH¨t×/HÑ/HˆÔØ&;Ò&Z¸t×?ZÑ?ZˆÔ#ØˆŒØ#ˆÔÜ—^‘^Ó%ˆ�
r"   r   c                 ó   — | j                   S rc   )rl   ©rp   s    r    Údefault_serialzDeviceRegistry.default_serial�   s   € à×#Ñ#Ð#r"   c                  óx   — t         j                  j                  «       D � cg c]  } | j                  ‘Œ c} S c c} w rc   )ÚadbutilsÚadbÚdevice_listÚserial)Údevices    r    rg   z#DeviceRegistry._list_online_serials…   s'   € ä,4¯L©L×,DÑ,DÓ,FÖG &�—“ÒGÐGùÒGs   ¡7c                  óR   — t         j                  j                  «       j                  S rc   )rv   rw   rz   ry   © r"   r    ri   z%DeviceRegistry._current_unique_serial‰   s   € ä�|‰|×"Ñ"Ó$×+Ñ+Ð+r"   Úportc                 óz  — | j                   �o| j                  «       }| j                   |v r| j                   S t        j                  d| j                   «       | j                  j                  d|fd «       d | _         | j                  «       | _         t        j                  d| j                   «       | j                   S )Nz5default device offline, clear cached device serial=%rr(   zbind default device serial=%r)rl   rh   ÚloggerÚinfork   Úpoprj   )rp   r}   Úonline_serialss      r    Ú_resolve_default_serialz&DeviceRegistry._resolve_default_serial�   sž   € Ø×ÑÐ+Ø!×0Ñ0Ó2ˆNØ×#Ñ# ~Ñ5Ø×+Ñ+Ð+ä�K‰KÐOÐQU×QeÑQeÔfØ�M‰M×Ñ˜r 4˜j¨$Ô/Ø#'ˆDÔ à#×:Ñ:Ó<ˆÔÜ�‰Ð3°T×5IÑ5IÔJØ×#Ñ#Ð#r"   ry   c                 ó2   — | j                  ||¬«      \  }}|S )N©r}   )Úget_with_serial)rp   ry   r}   rz   Ú_s        r    r)   zDeviceRegistry.get›   s    € Ø×(Ñ(¨°dÐ(Ó;‰	ˆ�Øˆr"   c                 óþ   — | j                   5  |}|€| j                  |«      }|xs d|f}|| j                  vr | j                  ||¬«      | j                  |<   | j                  |   |fcd d d «       S # 1 sw Y   y xY w)Nr(   r…   )ro   rƒ   rk   rf   )rp   ry   r}   Úconnect_serialÚkeys        r    r†   zDeviceRegistry.get_with_serialŸ   s   € Ø�Z‰Zñ 	6Ø#ˆNØÐ%Ø!%×!=Ñ!=¸dÓ!C�Ø’<˜R Ð&ˆCØ˜$Ÿ-™-Ñ'Ø%)§_¡_°^È$ _Ó%O�—‘˜cÑ"Ø—=‘= Ñ% ~Ð5÷	6÷ 	6ò 	6ús   �AA3Á3A<)NNN)Ú__name__Ú
__module__Ú__qualname__r
   r   rd   ÚDevicer	   Ústrrq   Úpropertyrt   Ústaticmethodrg   ri   r   rƒ   ÚDEFAULT_DEVICE_PORTr)   r†   r|   r"   r    r^   r^   v   s  „ ØGKØDHØFJñ& (¨8°C¸¿¹°NÑ+CÑ"Dð &Ø (¨°"°d¸3±i°-Ñ)@Ñ Að&à(0°¸"¸c¸'Ñ1BÑ(Có&ð ð$ ¨¡ò $ó ð$ð ðH $ s¡)ò Hó ðHð ð, Cò ,ó ð,ð$¨Cð $°Có $ð +/Ð<Oñ ˜( 3™-ð °có ð 7;ÐH[ñ 6 h¨s¡mð 6À#ô 6r"   r^   c                   ó>   ‡ — e Zd ZdZddeeef   dee   fˆ fd„Z	ˆ xZ
S )ÚU2CliServerTÚserver_addressÚregistryc                 ó\   •— t         t        | �  |t        «       |xs
 t	        «       | _        y rc   )Úsuperr”   rq   ÚU2CliRequestHandlerr^   r–   )rp   r•   r–   Ú	__class__s      €r    rq   zU2CliServer.__init__­   s$   ø€ ÜŒk˜4Ñ)¨.Ô:MÔNØ Ò4¤NÓ$4ˆ�r"   rc   )r‹   rŒ   r�   Údaemon_threadsr   r�   r   r
   r^   rq   Ú__classcell__)rš   s   @r    r”   r”   ª   s-   ø„ Ø€Nñ5 u¨S°#¨X¡ð 5À(È>ÑBZ÷ 5ñ 5r"   r”   c                   óZ  — e Zd ZU eed<   i dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%d&d'd(d)d*d+d,d-œ	¥Zd.„ Zd/„ Zd0„ Zd1e	d2e
e	ef   fd3„Zd4„ Zd2e
e	ef   fd5„Zd2e
e	ef   fd6„Zd2e
e	ef   fd7„Zd2e
e	ef   fd8„Zd2e
e	ef   fd9„Zd2e
e	ef   fd:„Zd2e
e	ef   fd;„Zd2e
e	ef   fd<„Zd2e
e	ef   fd=„Zd2e
e	ef   fd>„Zd2e
e	ef   fd?„Zd2e
e	ef   fd@„Zd2e
e	ef   fdA„Zd2e
e	ef   fdB„Zd2e
e	ef   fdC„Zd2e
e	ef   fdD„Zd2e
e	ef   fdE„Zd2e
e	ef   fdF„Zd2e
e	ef   fdG„Z e!d2e
e	ef   fdH„«       Z"d2e
e	ef   fdI„Z#d2e
e	ef   fdJ„Z$d2e
e	ef   fdK„Z%d2e
e	ef   fdL„Z&d2e
e	ef   fdM„Z'd2e
e	ef   fdN„Z(d2e
e	ef   fdO„Z)d2e
e	ef   fdP„Z*dUdQe
e	ef   dRe+fdS„Z,yT)Vr™   ÚserverÚ
screenshotÚ_screenshotÚdump_hierarchyÚ_dump_hierarchyÚapp_currentÚ_app_currentÚdevice_infoÚ_device_infoÚwindow_sizeÚ_window_sizeÚ	app_startÚ
_app_startÚapp_listÚ	_app_listÚapp_stopÚ	_app_stopÚapp_installÚ_app_installÚapp_uninstallÚ_app_uninstallÚ	app_clearÚ
_app_clearÚshellÚ_shellÚopen_notificationÚ_open_notificationÚopen_quick_settingsÚ_open_quick_settingsÚopen_urlÚ	_open_urlÚpressÚ_pressÚ	send_keysÚ
_send_keysÚ_clear_textÚ_clickÚ_double_clickÚ_long_clickÚ_swipeÚ_dragÚ_selector_existsÚ_selector_waitÚ_selector_scroll)	Ú
clear_textr@   Údouble_clickÚ
long_clickÚswipeÚdragÚselector_existsÚselector_waitÚselector_scrollc                 ó0   — t        j                  |g|¢­Ž  y rc   )r   Údebug)rp   ÚfmtÚargss      r    Úlog_messagezU2CliRequestHandler.log_messageÑ   s   € Ü�‰�SÐ ˜4Ô r"   c                 ó”   — | j                   dk7  r| j                  dddœd¬«       y | j                  d| j                  «       dœ«       y )	Nz/statusFú	not found©ÚokÚerroré”  ©ÚstatusT©rÚ   Úresult)ÚpathÚ
_send_jsonÚ_statusrs   s    r    Údo_GETzU2CliRequestHandler.do_GETÔ   s=   € Ø�9‰9˜	Ò!Ø�O‰O 5°;Ñ?ÈˆOÔLØØ�‰˜t¨t¯|©|«~Ñ>Õ?r"   c                 ó.  — | j                   dk7  r| j                  dddœd¬«       y 	 t        | j                  j	                  d«      xs d«      }t        j                  | j                  j                  |«      j                  d	«      «      }|j	                  d
«      dk(  rP| j                  dddidœ«       t        j                  | j                  j                  d¬«      j                  «        y | j                  |j	                  d
«      |j	                  d«      xs i «      }| j                  d|dœ«       y # t         $ rQ}t"        j%                  d«       | j                  dt'        |«      |j(                  j*                  dœ«       Y d }~y d }~ww xY w)Nz/requestFrØ   rÙ   rÜ   rÝ   úContent-LengthÚ0úutf-8Úmethodzserver.stopTÚstoppingrß   Úu2cli_server_shutdown)ÚtargetÚnameÚparamszu2cli request failed)rÚ   rÛ   Útype)rá   râ   r   Úheadersr)   ÚjsonÚloadsÚrfileÚreadÚdecoderm   ÚThreadrž   ÚshutdownÚstartÚ	_dispatchÚ	Exceptionr   Ú	exceptionr�   rš   r‹   )rp   Úcontent_lengthÚpayloadrà   Úes        r    Údo_POSTzU2CliRequestHandler.do_POSTÚ   s=  € Ø�9‰9˜
Ò"Ø�O‰O 5°;Ñ?ÈˆOÔLØð	ZÜ  §¡×!1Ñ!1Ð2BÓ!CÒ!JÀsÓKˆNÜ—j‘j §¡§¡°Ó!@×!GÑ!GÈÓ!PÓQˆGØ�{‰{˜8Ó$¨Ò5Ø—‘ t¸
ÀDÐ7IÑ JÔKÜ× Ñ ¨¯©×(<Ñ(<ÐCZÔ[×aÑaÔcØØ—^‘^ G§K¡K°Ó$9¸7¿;¹;ÀxÓ;PÒ;VÐTVÓWˆFØ�O‰O 4°6Ñ:Õ;øÜò 	ZÜ×ÑÐ3Ô4Ø�O‰O 5´3°q³6À1Ç;Á;×CWÑCWÑX×YÑYûð	Zús    ¨CD: Ã1AD: Ä:	FÅAFÆFré   rî   c                 ó¦   — |dk(  r| j                  «       S | j                  j                  |«      }|r t        | |«      |«      S t	        d|z  «      ‚)Nzserver.statuszunknown method: %s)rã   Ú_REQUEST_HANDLERSr)   ÚgetattrÚ
ValueError)rp   ré   rî   Úhandler_names       r    rù   zU2CliRequestHandler._dispatchì   sT   € Ø�_Ò$Ø—<‘<“>Ð!à×-Ñ-×1Ñ1°&Ó9ˆÙØ.”7˜4 Ó.¨vÓ6Ð6ÜÐ-°Ñ6Ó7Ð7r"   c                 ó²   — | j                   j                  d d \  }}t        j                  «       ||t        | j                   j
                  j                  dœS )Nr   )ÚpidÚhostr}   Úprotocol_versionÚdevice_serial)rž   r•   ÚosÚgetpidr   r–   rt   )rp   r  r}   s      r    rã   zU2CliRequestHandler._statusõ   sK   € Ø—[‘[×/Ñ/°°Ð3‰
ˆˆdä—9‘9“;ØØÜ 7Ø!Ÿ[™[×1Ñ1×@Ñ@ñ
ð 	
r"   c                 ó²   — t        |j                  d«      xs t        «      }| j                  j                  j                  |j                  d«      |¬«      S )Nr}   ry   r…   )r   r)   r’   rž   r–   r†   )rp   rî   r}   s      r    Ú_devicezU2CliRequestHandler._deviceÿ   sD   € Ü�6—:‘:˜fÓ%Ò<Ô)<Ó=ˆØ�{‰{×#Ñ#×3Ñ3°F·J±J¸xÓ4HÈtÐ3ÓTÐTr"   c                 óÜ   — |j                  d«      }|st        d«      ‚| j                  |«      \  }}|j                  «       }|j                  \  }}|j                  |«       ||›d|›�|dœS )NÚfilenamezfilename is requiredÚx)r  Ú
resolutionr	  )r)   r  r  rŸ   ÚsizeÚsave)rp   rî   r  rz   r	  ÚimageÚwidthÚheights           r    r    zU2CliRequestHandler._screenshot  sl   € Ø—:‘:˜jÓ)ˆÙÜÐ3Ó4Ð4Ø $§¡¨VÓ 4Ñˆ�Ø×!Ñ!Ó#ˆØŸ
™
‰ˆˆvØ�
‰
�8ÔØ$ºuÁfÐ4MÐ`mÑnÐnr"   c                 ó¸  — | j                  |«      \  }}i }|j                  d«      rd|d<   |j                  d«      �t        |j                  d«      «      |d<    |j                  di |¤Ž}|j                  d«      r|n
t	        |«      }|j                  d«      }|r-t        |dd¬«      5 }|j                  |«       d d d «       ||d	œS ||d
œS # 1 sw Y   ŒxY w)NÚ
compressedTÚ	max_depthÚrawÚoutputÚwrè   )Úencoding)r  r	  )Úcontentr	  r|   )r  r)   r   r¡   r\   ÚopenÚwrite)	rp   rî   rz   r	  ÚkwargsrV   rà   r  Úfs	            r    r¢   z#U2CliRequestHandler._dump_hierarchy  sÙ   € Ø $§¡¨VÓ 4Ñˆ�àˆØ�:‰:�lÔ#Ø#'ˆF�<Ñ Ø�:‰:�kÓ"Ð.Ü"% f§j¡j°Ó&=Ó">ˆF�;Ñà#ˆf×#Ñ#Ñ- fÑ-ˆØŸ
™
 5Ô)‘Ô/@ÀÓ/EˆØ—‘˜HÓ%ˆÙÜ�f˜c¨GÔ4ð  ¸Ø—‘˜”÷ à &¸ÑGÐGØ!°MÑBÐB÷ ð  ús   Â,CÃCc                 óX   — | j                  |«      \  }}|j                  «       }||d<   |S ©Nr	  )r  r£   ©rp   rî   rz   r	  rà   s        r    r¤   z U2CliRequestHandler._app_current  s2   € Ø $§¡¨VÓ 4Ñˆ�Ø×#Ñ#Ó%ˆØ"/ˆˆÑØˆr"   c                 ób   — | j                  |«      \  }}t        |j                  «      }||d<   |S r$  )r  Údictr¥   r%  s        r    r¦   z U2CliRequestHandler._device_info%  s4   € Ø $§¡¨VÓ 4Ñˆ�Ü�f×(Ñ(Ó)ˆØ"/ˆˆÑØˆr"   c                 ó\   — | j                  |«      \  }}|j                  «       \  }}|||dœS )N)r  r  r	  )r  r§   )rp   rî   rz   r	  r  r  s         r    r¨   z U2CliRequestHandler._window_size+  s4   € Ø $§¡¨VÓ 4Ñˆ�Ø×*Ñ*Ó,‰ˆˆvØ¨&À=ÑQÐQr"   c                 ó:  — |j                  d«      }|st        d«      ‚| j                  |«      \  }}i }|j                  d«      r|j                  d«      |d<   |j                  d«      rd|d<   |j                  d«      rd|d<    |j                  |fi |¤Ž d|iS )NÚpackageúpackage is requiredÚactivityÚwaitTÚstopr	  )r)   r  r  r©   )rp   rî   r*  rz   r	  r!  s         r    rª   zU2CliRequestHandler._app_start0  s    € Ø—*‘*˜YÓ'ˆÙÜÐ2Ó3Ð3Ø $§¡¨VÓ 4Ñˆ�ØˆØ�:‰:�jÔ!Ø!'§¡¨JÓ!7ˆF�:ÑØ�:‰:�fÔØ!ˆF�6‰NØ�:‰:�fÔØ!ˆF�6‰NØˆ×Ñ˜Ñ+ FÒ+Ø Ð/Ð/r"   c                 ó|   — | j                  |«      \  }}|j                  |j                  d«      xs d«      }||dœS )NÚfilterr(   )Úpackagesr	  )r  r«   r)   )rp   rî   rz   r	  r1  s        r    r¬   zU2CliRequestHandler._app_list?  s<   € Ø $§¡¨VÓ 4Ñˆ�Ø—?‘? 6§:¡:¨hÓ#7Ò#=¸2Ó>ˆØ$°}ÑEÐEr"   c                 óÚ   — | j                  |«      \  }}|j                  d«      r|j                  «        d|iS |j                  d«      }|st        d«      ‚|j	                  |«       d|iS )NÚallr	  r*  z(package is required unless --all is used)r  r)   Úapp_stop_allr  r­   )rp   rî   rz   r	  r*  s        r    r®   zU2CliRequestHandler._app_stopD  sl   € Ø $§¡¨VÓ 4Ñˆ�Ø�:‰:�eÔØ×ÑÔ!Ø# ]Ð3Ð3Ø—*‘*˜YÓ'ˆÙÜÐGÓHÐHØ�‰˜Ô Ø Ð/Ð/r"   c                 ó’   — |j                  d«      }|st        d«      ‚| j                  |«      \  }}|j                  |«      }||dœS )NÚapkzapk is required©rà   r	  )r)   r  r  r¯   )rp   rî   r6  rz   r	  rà   s         r    r°   z U2CliRequestHandler._app_installO  sM   € Ø�j‰j˜ÓˆÙÜÐ.Ó/Ð/Ø $§¡¨VÓ 4Ñˆ�Ø×#Ñ# CÓ(ˆØ °=ÑAÐAr"   c                 ó’   — |j                  d«      }|st        d«      ‚| j                  |«      \  }}|j                  |«      }||dœS )Nr*  r+  r7  )r)   r  r  r±   )rp   rî   r*  rz   r	  rà   s         r    r²   z"U2CliRequestHandler._app_uninstallW  sM   € Ø—*‘*˜YÓ'ˆÙÜÐ2Ó3Ð3Ø $§¡¨VÓ 4Ñˆ�Ø×%Ñ% gÓ.ˆØ °=ÑAÐAr"   c                 ó�   — |j                  d«      }|st        d«      ‚| j                  |«      \  }}|j                  |«       d|iS )Nr*  r+  r	  )r)   r  r  r³   )rp   rî   r*  rz   r	  s        r    r´   zU2CliRequestHandler._app_clear_  sK   € Ø—*‘*˜YÓ'ˆÙÜÐ2Ó3Ð3Ø $§¡¨VÓ 4Ñˆ�Ø×Ñ˜Ô!Ø Ð/Ð/r"   c                 óø   — |j                  d«      }|st        d«      ‚| j                  |«      \  }}|j                  |t	        |j                  d«      xs d«      ¬«      }|j
                  |j                  |dœS )NÚcommandzcommand is requiredÚtimeouté<   ©r<  )r  Ú	exit_coder	  )r)   r  r  rµ   r   r  r?  )rp   rî   r;  rz   r	  Úresponses         r    r¶   zU2CliRequestHandler._shellg  so   € Ø—*‘*˜YÓ'ˆÙÜÐ2Ó3Ð3Ø $§¡¨VÓ 4Ñˆ�Ø—<‘< ´°V·Z±ZÀ	Ó5JÒ5PÈbÓ1Q�<ÓRˆØ"Ÿ/™/¸×8JÑ8JÐ]jÑkÐkr"   c                 óR   — | j                  |«      \  }}|j                  «        d|iS r$  )r  r·   ©rp   rî   rz   r	  s       r    r¸   z&U2CliRequestHandler._open_notificationo  s,   € Ø $§¡¨VÓ 4Ñˆ�Ø× Ñ Ô"Ø Ð/Ð/r"   c                 óR   — | j                  |«      \  }}|j                  «        d|iS r$  )r  r¹   rB  s       r    rº   z(U2CliRequestHandler._open_quick_settingst  s,   € Ø $§¡¨VÓ 4Ñˆ�Ø×"Ñ"Ô$Ø Ð/Ð/r"   c                 ó�   — |j                  d«      }|st        d«      ‚| j                  |«      \  }}|j                  |«       d|iS )NÚurlzurl is requiredr	  )r)   r  r  r»   )rp   rî   rE  rz   r	  s        r    r¼   zU2CliRequestHandler._open_urly  sI   € Ø�j‰j˜ÓˆÙÜÐ.Ó/Ð/Ø $§¡¨VÓ 4Ñˆ�Ø�‰˜ÔØ Ð/Ð/r"   c                 ó�   — |j                  d«      }|€t        d«      ‚| j                  |«      \  }}|j                  |«       d|iS )NrŠ   zkey is requiredr	  )r)   r  r  r½   )rp   rî   rŠ   rz   r	  s        r    r¾   zU2CliRequestHandler._press�  sK   € Ø�j‰j˜ÓˆØˆ;ÜÐ.Ó/Ð/Ø $§¡¨VÓ 4Ñˆ�Ø�‰�SÔØ Ð/Ð/r"   c                 óÄ   — |j                  d«      }|€t        d«      ‚| j                  |«      \  }}|j                  |t	        |j                  d«      «      ¬«       d|iS )Nr-   ztext is requiredÚclear)rH  r	  )r)   r  r  r¿   r*   )rp   rî   r-   rz   r	  s        r    rÀ   zU2CliRequestHandler._send_keys‰  s`   € Ø�z‰z˜&Ó!ˆØˆ<ÜÐ/Ó0Ð0Ø $§¡¨VÓ 4Ñˆ�Ø×Ñ˜¤T¨&¯*©*°WÓ*=Ó%>ÐÔ?Ø Ð/Ð/r"   c                 óR   — | j                  |«      \  }}|j                  «        d|iS r$  )r  rÊ   rB  s       r    rÁ   zU2CliRequestHandler._clear_text‘  s,   € Ø $§¡¨VÓ 4Ñˆ�Ø×ÑÔØ Ð/Ð/r"   c                 ó   — |j                  d«      xs i } | di |¤Ž}g }|j                  d«      r |j                  |j                  d«      «       |j                  |j                  d«      xs g «       |D ]  } |j                  di |¤Ž}Œ |S )NÚselectorÚchild_selectorÚchild_selectorsr|   )r)   rL   ÚextendrU   )rz   rî   rK  ÚobjrM  rL  s         r    Ú
_ui_objectzU2CliRequestHandler._ui_object–  s�   € à—:‘:˜jÓ)Ò/¨RˆÙÑ �xÑ ˆØˆØ�:‰:Ð&Ô'Ø×"Ñ" 6§:¡:Ð.>Ó#?Ô@Ø×Ñ˜vŸz™zÐ*;Ó<ÒBÀÔCØ-ò 	.ˆNØ�#—)‘)Ñ-˜nÑ-‰Cð	.àˆ
r"   c                 óN  — | j                  |«      \  }}|j                  d«      xs i }|r5| j                  ||«      j                  |j                  d«      ¬«       d|iS |j                  t	        |j                  d«      «      t	        |j                  d«      «      «       d|iS )NrK  r<  r>  r  Úyr	  )r  r)   rP  r@   Úfloat)rp   rî   rz   r	  rK  s        r    rÂ   zU2CliRequestHandler._click¢  s’   € Ø $§¡¨VÓ 4Ñˆ�Ø—:‘:˜jÓ)Ò/¨RˆÙØ�O‰O˜F FÓ+×1Ñ1¸&¿*¹*ÀYÓ:OÐ1ÔPð   Ð/Ð/ð �L‰Lœ˜vŸz™z¨#›Ó/´°v·z±zÀ#³Ó1GÔHØ Ð/Ð/r"   c           	      óò   — | j                  |«      \  }}|j                  t        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      xs d«      ¬«       d|iS )Nr  rR  Údurationgš™™™™™¹?©rU  r	  )r  rË   rS  r)   rB  s       r    rÃ   z!U2CliRequestHandler._double_click«  sh   € Ø $§¡¨VÓ 4Ñˆ�Ø×ÑœE &§*¡*¨S£/Ó2´E¸&¿*¹*ÀS»/Ó4JÔUZÐ[a×[eÑ[eÐfpÓ[qÒ[xÐuxÓUyÐÔzØ Ð/Ð/r"   c                 ó�  — | j                  |«      \  }}|j                  d«      xs i }t        |j                  d«      xs d«      }|r6| j                  ||«      j	                  ||j                  d«      ¬«       d	|iS |j	                  t        |j                  d«      «      t        |j                  d«      «      |¬«       d	|iS )
NrK  rU  ç      à?r<  )rU  r<  r  rR  rV  r	  )r  r)   rS  rP  rÌ   )rp   rî   rz   r	  rK  rU  s         r    rÄ   zU2CliRequestHandler._long_click°  s¸   € Ø $§¡¨VÓ 4Ñˆ�Ø—:‘:˜jÓ)Ò/¨RˆÜ˜Ÿ™ JÓ/Ò6°3Ó7ˆÙØ�O‰O˜F FÓ+×6Ñ6ÀÐRX×R\ÑR\Ð]fÓRgÐ6Ôhð   Ð/Ð/ð ×Ñœe F§J¡J¨s£OÓ4´e¸F¿J¹JÀs»OÓ6LÐW_ÐÔ`Ø Ð/Ð/r"   c           
      óÐ  — | j                  |«      \  }}i }|j                  d«      �t        |j                  d«      «      |d<   n.|j                  d«      �t        |j                  d«      «      |d<   |j                  d«      rF|j                  d«      } |j                  |j                  d«      fd|€dn
t        |«      i|¤Ž d|iS dD ]  }|j                  |«      �Œt        d«      ‚  |j                  t        |j                  d	«      «      t        |j                  d
«      «      t        |j                  d«      «      t        |j                  d«      «      fi |¤Ž d|iS )NÚstepsrU  Ú	directionÚscalegÍÌÌÌÌÌì?r	  )ÚfxÚfyÚtxÚtyzfx, fy, tx and ty are requiredr]  r^  r_  r`  )r  r)   r   rS  Ú	swipe_extr  rÍ   )rp   rî   rz   r	  r!  r\  rí   s          r    rÅ   zU2CliRequestHandler._swipeº  sT  € Ø $§¡¨VÓ 4Ñˆ�ØˆØ�:‰:�gÓÐ*Ü! &§*¡*¨WÓ"5Ó6ˆF�7ŠOØ�Z‰Z˜
Ó#Ð/Ü!& v§z¡z°*Ó'=Ó!>ˆF�:ÑØ�:‰:�kÔ"Ø—J‘J˜wÓ'ˆEØˆF×Ñ˜VŸZ™Z¨Ó4ÑmÀ5À=¹CÔV[Ð\aÓVbÐmÐflÒmØ# ]Ð3Ð3à,ò 	CˆDØ�z‰z˜$ÓÑ'Ü Ð!AÓBÐBð	Cð 	ˆ�‰Ü�&—*‘*˜TÓ"Ó#Ü�&—*‘*˜TÓ"Ó#Ü�&—*‘*˜TÓ"Ó#Ü�&—*‘*˜TÓ"Ó#ñ		
ð
 ò	
ð   Ð/Ð/r"   c                 óV  — | j                  |«      \  }}|j                  t        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      xs d«      ¬«       d|iS )	NÚsxÚsyÚexÚeyrU  rX  rV  r	  )r  rÎ   rS  r)   rB  s       r    rÆ   zU2CliRequestHandler._dragÒ  s�   € Ø $§¡¨VÓ 4Ñˆ�Ø�‰Ü�&—*‘*˜TÓ"Ó#Ü�&—*‘*˜TÓ"Ó#Ü�&—*‘*˜TÓ"Ó#Ü�&—*‘*˜TÓ"Ó#Ü˜6Ÿ:™: jÓ1Ò8°SÓ9ð 	ô 	
ð   Ð/Ð/r"   c                 óæ   — | j                  |«      \  }}t        |j                  d«      xs d«      }| j                  ||«      }|r|j	                  |¬«      n|j                  }t        |«      |dœS )Nr<  r   r>  r7  )r  rS  r)   rP  Úexistsr*   )rp   rî   rz   r	  r<  rO  rh  s          r    rÇ   z$U2CliRequestHandler._selector_existsÝ  sd   € Ø $§¡¨VÓ 4Ñˆ�Ü˜Ÿ
™
 9Ó-Ò2°Ó3ˆØ�o‰o˜f fÓ-ˆÙ07�—‘ G�Ô,¸S¿Z¹ZˆÜ˜v›,¸ÑGÐGr"   c                 ó  — | j                  |«      \  }}| j                  ||«      }t        |j                  d«      xs d«      }|j                  d«      r|j	                  |¬«      }n|j                  |¬«      }t        |«      |dœS )Nr<  g      @Úgoner>  r7  )r  rP  rS  r)   Ú	wait_goner-  r*   )rp   rî   rz   r	  rO  r<  rà   s          r    rÈ   z"U2CliRequestHandler._selector_waitä  sx   € Ø $§¡¨VÓ 4Ñˆ�Ø�o‰o˜f fÓ-ˆÜ˜Ÿ
™
 9Ó-Ò4°Ó5ˆØ�:‰:�fÔØ—]‘]¨7�]Ó3‰Fà—X‘X g�XÓ.ˆFÜ˜v›,¸ÑGÐGr"   c                 óä  — | j                  |«      \  }}| j                  ||«      }|j                  d«      xs d}|j                  d«      xs d}t        |j                  |«      }|j                  d«      r%|j                  |j                  d«      ¬«       d	|iS |j                  d«      �/ t        ||«      t        |j                  d«      «      ¬«       d	|iS  t        ||«      «        d	|iS )
Nr[  ÚvertÚactionÚforwardÚto_text)r-   Ú
max_swipes)rq  r	  )r  rP  r)   r  rA   Útor   )rp   rî   rz   r	  rO  r[  rn  rì   s           r    rÉ   z$U2CliRequestHandler._selector_scrollî  sä   € Ø $§¡¨VÓ 4Ñˆ�Ø�o‰o˜f fÓ-ˆØ—J‘J˜{Ó+Ò5¨vˆ	Ø—‘˜HÓ%Ò2¨ˆÜ˜Ÿ™ YÓ/ˆØ�:‰:�iÔ Ø�I‰I˜6Ÿ:™: iÓ0ˆIÔ1ð
   Ð/Ð/ð	 �Z‰Z˜Ó%Ð1Ø#ŒG�F˜FÓ#¬s°6·:±:¸lÓ3KÓ/LÕMð   Ð/Ð/ð $ŒG�F˜FÓ#Ô%Ø Ð/Ð/r"   ÚdatarÞ   c                 ó0  — t        j                  |«      j                  d«      }| j                  |«       | j	                  dd«       | j	                  dt        t        |«      «      «       | j                  «        | j                  j                  |«       y )Nrè   zContent-Typezapplication/jsonræ   )
rñ   ÚdumpsÚencodeÚsend_responseÚsend_headerr�   rJ   Úend_headersÚwfiler   )rp   rs  rÞ   Úbodys       r    râ   zU2CliRequestHandler._send_jsonü  sq   € Ü�z‰z˜$Ó×&Ñ& wÓ/ˆØ×Ñ˜6Ô"Ø×Ñ˜Ð);Ô<Ø×ÑÐ)¬3¬s°4«y«>Ô:Ø×ÑÔØ�
‰
×Ñ˜Õr"   N)éÈ   )-r‹   rŒ   r�   r”   Ú__annotations__r  rÖ   rä   rÿ   r�   r   r   rù   rã   r  r    r¢   r¤   r¦   r¨   rª   r¬   r®   r°   r²   r´   r¶   r¸   rº   r¼   r¾   rÀ   rÁ   r‘   rP  rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   r   râ   r|   r"   r    r™   r™   ²   s�  … ØÓðØ�mðàÐ+ðð 	�~ðð 	�~ð	ð
 	�~ðð 	�\ðð 	�Kðð 	�Kðð 	�~ðð 	Ð)ðð 	�\ðð 	�ðð 	Ð1ðð 	Ð5ðð 	�Kðð  	�ð!ð" 	�\ð#ð$ $ØØ'Ø#ØØØ-Ø)Ø-ò5Ðò:!ò@òZð$8 ð 8¨T°#°s°(©^ó 8ò
ðU˜d 3¨ 8™nó Uðo $ s¨C x¡.ó oðC d¨3°¨8¡nó Cð$ 4¨¨S¨¡>ó ð 4¨¨S¨¡>ó ðR 4¨¨S¨¡>ó Rð
0  c¨3 h¡ó 0ðF  S¨# X¡ó Fð
	0  S¨# X¡ó 	0ðB 4¨¨S¨¡>ó BðB T¨#¨s¨(¡^ó Bð0  c¨3 h¡ó 0ðl˜T # s (™^ó lð0¨¨c°3¨h©ó 0ð
0¨4°°S°©>ó 0ð
0  S¨# X¡ó 0ð0˜T # s (™^ó 0ð0  c¨3 h¡ó 0ð0 $ s¨C x¡.ó 0ð
 ð	 4¨¨S¨¡>ò 	ó ð	ð0˜T # s (™^ó 0ð0 D¨¨c¨¡Nó 0ð
0 $ s¨C x¡.ó 0ð0˜T # s (™^ó 0ð0	0˜D  c ™Nó 	0ðH t¨C°¨H¡~ó HðH T¨#¨s¨(¡^ó Hð0 t¨C°¨H¡~ó 0ñ˜t C¨ H™~ð °sô r"   r™   r  r}   c                 ó¸   — t        | |f«      }t        j                  d| |«       	 |j                  «        |j	                  «        y # |j	                  «        w xY w)Nzu2cli server listening on %s:%d)r”   r   r€   Úserve_foreverÚserver_close)r  r}   Úhttpds      r    Ú
run_serverr‚    sK   € Ü˜˜t˜Ó%€EÜ
‡K�KÐ1°4¸Ô>ðØ×ÑÔà×ÑÕøˆ×ÑÕús   ¦A ÁA)0Ú
__future__r   rñ   Úloggingr
  Úrerm   Úhttp.serverr   r   Útypingr   r   r   r	   r
   r   Ú	xml.etreer   rY   rv   Úuiautomator2rd   Úuiautomator2.agent_cli.protocolr   Úuiautomator2.corer   r’   Ú	getLoggerr‹   r   Úcompiler   r�   r   r!   ÚElementr*   r+   r2   r7   rK   r\   Úobjectr^   r”   r™   r‚  r|   r"   r    ú<module>r�     s"  ðõ 'ã Û Û 	Û 	Û ß Cß =× =Ý 'ã ã Ý CÝ Hà	ˆ×	Ñ	˜8Ó	$€àˆR�Z‰ZÐ9Ó:€
ð-˜Sð - Só -ð6˜Ÿ
™
ð 6 tó 6ð�r—z‘zð  dó ðO˜"Ÿ*™*ð O¨ó Oð80�r—z‘zð 80¨$¨s©)ð 80¸Có 80ðv˜3ð  3ó ô16�Vô 16ôh5Ð%ô 5ôPÐ0ô Pðf
�Sð  ô r"   