<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]9U                 @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d d d d d d g Z Gd d   d e  Z i  Z g  Z	 d d	 d
 d  Z
 d d d  Z d  d d d  Z d d   Z d d   Z d	 d d  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd  d!   d! e  Z e Z Gd" d#   d# e  Z Gd$ d%   d% e  Z Gd& d'   d' e  Z Gd( d)   d) e  Z d* d+   Z e  j j d,  re   e  j j d-  re j  d.  r:e
 d. d e d.   e j  d/  r_e
 d/ d e d/   e j  d0  re
 d0 d e d0   e j  d1  re
 d1 d e d1   e j  d2  re
 d2 d e d2   e j! d d3  d4 k rGd5 d6   d6 e  Z" g  Z	 i  Z e
 d7 e"  e  j# j$ e  j j d8 d9  d:  Z% xH d; d< d= d> d? d@ e% f D]+ Z& e j  e&  rVe
 e& d e e&   qVWe j! dA k r$GdB dC   dC e  Z' GdD dE   dE e  Z( e
 dF d e( dF  dN  e
 d; d e( d;  dO  e
 dG d e( dG  dP  e
 dC d e( dH  dQ  dI e  j k re  j dI j) e  j*  Z+ e+ j,   xR e+ D]J Z- e- dJ k r]e e- dR  Z. e. d	 d k r]e
 e- d e e-  dS  q]Wd Z- [- [+ dK dL   Z/ e0 dM k re/   d S)T    NErroropenopen_newopen_new_tabgetregisterc               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r   r   //opt/alt/python35/lib64/python3.5/webbrowser.pyr      s      c             C   sR   | | g t  |  j   <| d k r2 t j |   n | d k  rN t j d |   d  S)Nr   )	_browserslower	_tryorderappendinsert)nameklassinstanceupdate_tryorderr   r   r   r      s
    c             C   s   |  d  k	 r |  g } n t  } x | D] } d | k rw t j |  } | d d k rj t | d  d   St |  Sq% y t | j   } Wn t k
 r t |  } Yn X| d d  k	 r | d S| d d  k	 r% | d   Sq% Wt	 d   d  S)Nz%sr   &r   z!could not locate runnable browserr   )
r   shlexsplitBackgroundBrowserGenericBrowserr   r   KeyError_synthesizer   )ZusingZalternativesbrowsercommandr   r   r   r      s$    Tc             C   s:   x3 t  D]+ } t |  } | j |  | |  r d Sq Wd S)NTF)r   r   r   )urlnew	autoraiser   r   r   r   r   r   9   s
    c             C   s   t  |  d  S)Nr   )r   )r!   r   r   r   r   @   s    c             C   s   t  |  d  S)N   )r   )r!   r   r   r   r   C   s    c             C   s   |  j    d } t j |  s) d  d  g St j j |  } y t | j   } Wn t k
 rm d  d  g SYn X| d } | r | j   | j k r d d  l	 } | j	 |  } |  | _
 t j j |   | _ t |  d  | |  d  | g Sd  d  g S)Nr   r   )r   shutilwhichospathbasenamer   r   r   copyr   r   )r   r   cmdr   r    Z
controllerr*   r   r   r   r   G   s"    

	
r   c               @   sR   e  Z d  Z d g Z d d d  Z d d d d  Z d	 d
   Z d d   Z d S)BaseBrowserz%s c             C   s   | |  _  | |  _ d  S)N)r   r)   )selfr   r   r   r   __init__n   s    	zBaseBrowser.__init__r   Tc             C   s
   t   d  S)N)NotImplementedError)r.   r!   r"   r#   r   r   r   r   r   s    zBaseBrowser.openc             C   s   |  j  | d  S)Nr   )r   )r.   r!   r   r   r   r   u   s    zBaseBrowser.open_newc             C   s   |  j  | d  S)Nr$   )r   )r.   r!   r   r   r   r   x   s    zBaseBrowser.open_new_tabN)r   r	   r
   argsr/   r   r   r   r   r   r   r   r,   i   s
   	r,   c               @   s.   e  Z d  Z d d   Z d d d d  Z d S)r   c             C   sc   t  | t  r' | |  _ d g |  _ n  | d |  _ | d d   |  _ t j j |  j  |  _ d  S)Nz%sr   r   )
isinstancestrr   r1   r'   r(   r)   )r.   r   r   r   r   r/      s    	zGenericBrowser.__init__r   Tc                s   |  j  g   f d d   |  j D } yO t j d  d  d k rT t j |  } n t j | d d } | j   SWn t k
 r d SYn Xd  S)Nc                s"   g  |  ] } | j  d      q S)z%s)replace).0arg)r!   r   r   
<listcomp>   s   	z'GenericBrowser.open.<locals>.<listcomp>   win	close_fdsTF)r   r1   sysplatform
subprocessPopenwaitOSError)r.   r!   r"   r#   cmdlinepr   )r!   r   r      s    zGenericBrowser.openN)r   r	   r
   r/   r   r   r   r   r   r   |   s   
r   c               @   s"   e  Z d  Z d d d d  Z d S)r   r   Tc                s   |  j  g   f d d   |  j D } yZ t j d  d  d k rT t j |  } n t j | d d d d } | j   d  k SWn t k
 r d SYn Xd  S)	Nc                s"   g  |  ] } | j  d      q S)z%s)r4   )r5   r6   )r!   r   r   r7      s   	z*BackgroundBrowser.open.<locals>.<listcomp>r8   r9   r:   Tstart_new_sessionF)r   r1   r;   r<   r=   r>   pollr@   )r.   r!   r"   r#   rA   rB   r   )r!   r   r      s    	zBackgroundBrowser.openN)r   r	   r
   r   r   r   r   r   r      s   r   c               @   s^   e  Z d  Z d Z d Z d Z d d g Z d Z d Z d Z	 d d   Z
 d d d	 d
  Z d S)UnixBrowserNFTz%actionz%sc       
      C   s   g  } | r= |  j  r= t |  } |  j  | } | r= | g } |  j g | | } | s` |  j rl t j } n d  } t j | d d d | d |  j r | p d  d | d d } | r y | j d  }	 |	 SWqt j	 k
 r d SYqXn1 |  j r| j
   d  k r
d Sd Sn | j   Sd  S)	Nr:   TstdinstdoutstderrrC      F)
raise_optsintr   
backgroundr=   DEVNULLr>   redirect_stdoutr?   TimeoutExpiredrD   )
r.   r1   Zremoter#   Z	raise_optoptrA   ZinoutrB   rcr   r   r   _invoke   s0     			zUnixBrowser._invoker   c                s   | d k r |  j    n_ | d k r0 |  j   nG | d k rc |  j d  k rW |  j   qw |  j   n t d d |      f d d   |  j D } d d   | D } |  j | d	 |  } | s  f d
 d   |  j D } |  j | d d  Sd	 Sd  S)Nr   r   r$   zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sc                s.   g  |  ]$ } | j  d    j  d     q S)z%sz%action)r4   )r5   r6   )actionr!   r   r   r7      s   	z$UnixBrowser.open.<locals>.<listcomp>c             S   s   g  |  ] } | r |  q Sr   r   )r5   r6   r   r   r   r7      s   	 Tc                s"   g  |  ] } | j  d      q S)z%s)r4   )r5   r6   )r!   r   r   r7      s   	 F)remote_actionremote_action_newwinremote_action_newtabr   remote_argsrR   r1   )r.   r!   r"   r#   r1   successr   )rS   r!   r   r      s$    zUnixBrowser.open)r   r	   r
   rJ   rL   rN   rW   rT   rU   rV   rR   r   r   r   r   r   rE      s   #rE   c               @   s4   e  Z d  Z d d g Z d Z d Z d Z d Z d S)Mozillaz%actionz%sr-   z-new-windowz-new-tabTN)r   r	   r
   rW   rT   rU   rV   rL   r   r   r   r   rY      s
   rY   c               @   s@   e  Z d  Z d d g Z d d g Z d Z d Z d Z d Z d	 S)
Netscapez-noraisez-raisez-remotezopenURL(%s%action)r-   z,new-windowz,new-tabTN)	r   r	   r
   rJ   rW   rT   rU   rV   rL   r   r   r   r   rZ     s   rZ   c               @   s:   e  Z d  Z d d g Z d d g Z d Z d Z d Z d S)	Galeonz-noraiser-   z%actionz%sz-nz-wTN)r   r	   r
   rJ   rW   rT   rU   rL   r   r   r   r   r[     s
   r[   c               @   s4   e  Z d  Z d d g Z d Z d Z d Z d Z d S)Chromez%actionz%sr-   z--new-windowTN)r   r	   r
   rW   rT   rU   rV   rL   r   r   r   r   r\     s
   r\   c               @   s@   e  Z d  Z d d g Z d d g Z d Z d Z d Z d Z d S)	Operaz-noraiser-   z-remotezopenURL(%s%action)z,new-windowz	,new-pageTN)	r   r	   r
   rJ   rW   rT   rU   rV   rL   r   r   r   r   r]   "  s   r]   c               @   s:   e  Z d  Z d d g Z d Z d Z d Z d Z d Z d S)Elinksz-remotezopenURL(%s%action)r-   z,new-windowz,new-tabFN)	r   r	   r
   rW   rT   rU   rV   rL   rN   r   r   r   r   r^   -  s   r^   c               @   s"   e  Z d  Z d d d d  Z d S)	Konquerorr   Tc          "   C   sG  | d k r d } n d } t  j } y4 t  j d | | g d d d | d | d	 | } Wn t k
 rl Yn X| j   d Sy: t  j d
 d | g d d d | d | d	 | d d } Wn t k
 r Yn X| j   d  k r d Sy: t  j d d | g d d d | d | d	 | d d } Wn t k
 r2d SYn X| j   d  k Sd  S)Nr$   ZnewTabZopenURL	kfmclientr:   TrF   rG   rH   	konquerorz--silentrC   kfmz-dF)r=   rM   r>   r@   r?   rD   )r.   r!   r"   r#   rS   devnullrB   r   r   r   r   B  s:    		
	zKonqueror.openN)r   r	   r
   r   r   r   r   r   r_   ;  s   r_   c               @   s:   e  Z d  Z d d   Z d d   Z d d d d  Z d	 S)
Grailc             C   s  d d  l  } d d  l } d d  l } d d  l } t j j | j   d  } | j t j	    d } t j j | | d  } | j  |  } | s d  S| j | j
 | j  }	 x^ | D]V }
 y |	 j |
  Wn8 t k
 ry t j |
  Wn t k
 rYn XYq X|	 Sq Wd  S)Nr   z.grail-unixz-*)globpwdsockettempfiler'   r(   join
gettempdirgetpwuidgetuidAF_UNIXSOCK_STREAMconnectr@   unlink)r.   re   rf   rg   rh   tempdiruserfilenameZmaybessfnr   r   r   _find_grail_rcs  s*    	
zGrail._find_grail_rcc             C   s1   |  j    } | s d S| j |  | j   d S)Nr   r   )rv   sendclose)r.   rS   rt   r   r   r   _remote  s    
zGrail._remoter   Tc             C   s3   | r |  j  d |  } n |  j  d |  } | S)NzLOADNEW zLOAD )ry   )r.   r!   r"   r#   okr   r   r   r     s    z
Grail.openN)r   r	   r
   rv   ry   r   r   r   r   r   rd   o  s   rd   c              C   s  t  j d  r% t d d  t d   d t j k rY t  j d  rY t d d  t d   d t j k r t  j d  r t d d  t d   d t j k r t  j d  r t d t t d   t  j d  r t d d  t d   x3 d D]+ }  t  j |   r t |  d  t |    q Wx3 d D]+ }  t  j |   r#t |  d  t |    q#Wt  j d  rzt d t t d   n% t  j d  rt d t t d   x3 d D]+ }  t  j |   rt |  d  t	 |    qWt  j d  rt d d  t d   x3 d  D]+ }  t  j |   rt |  d  t
 |    qWt  j d  rUt d d  t d   t  j d  rzt d d  t d   t  j d  rt d t d   d  S)!Nzxdg-openZGNOME_DESKTOP_SESSION_IDz	gvfs-openz
gnome-openZKDE_FULL_SESSIONr`   zx-www-browserfirefox	iceweaseliceape	seamonkeymozilla-firefoxmozilla-firebirdfirebirdmozillanetscaperb   ra   galeonepiphanyZ	skipstonegoogle-chromechromechromiumchromium-browseroperaZmosaicZgrail)r{   r|   r}   r~   )r   r   r   r   r   )r   r   )r   r   r   r   )r%   r&   r   r   r'   environr_   rY   rZ   r[   r\   r]   rd   )r   r   r   r   register_X_browsers  sH     
r   ZDISPLAYZTERMzwww-browserZlinksZelinksZlynxZw3mr8   r9   c               @   s"   e  Z d  Z d d d d  Z d S)WindowsDefaultr   Tc             C   s2   y t  j |  Wn t k
 r) d SYn Xd Sd  S)NFT)r'   Z	startfiler@   )r.   r!   r"   r#   r   r   r   r     s
    	zWindowsDefault.openN)r   r	   r
   r   r   r   r   r   r     s   r   zwindows-defaultZPROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXEr{   r   r~   r   r   r   darwinc               @   s.   e  Z d  Z d d   Z d d d d  Z d S)MacOSXc             C   s   | |  _  d  S)N)r   )r.   r   r   r   r   r/   '  s    zMacOSX.__init__r   Tc       	      C   s   d | k r d | } t  t |   } |  j d k rP d | j d d  } nR |  j d k rh d } n d	 | d
 } d | j d d  } d |  j | | f } t j d d  } | d  k r d S| j |  | j   } | S)N:zfile:defaultzopen location "%s""z%22ZOmniWebr-   ztoWindow %dr   zOpenURL "%s"ztell application "%s"
                                activate
                                %s %s
                            end tell	osascriptwF)rK   boolr   r4   r'   popenwriterx   )	r.   r!   r"   r#   scriptZtoWindowr+   osapiperQ   r   r   r   r   *  s     
	zMacOSX.openN)r   r	   r
   r/   r   r   r   r   r   r     s   
r   c               @   s.   e  Z d  Z d d   Z d d d d  Z d S)MacOSXOSAScriptc             C   s   | |  _  d  S)N)_name)r.   r   r   r   r   r/   L  s    zMacOSXOSAScript.__init__r   Tc             C   s   |  j  d k r( d | j d d  } n d |  j  | j d d  f } t j d d  } | d  k ri d S| j |  | j   } | S)	Nr   zopen location "%s"r   z%22z
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   r   r   F)r   r4   r'   r   r   rx   )r.   r!   r"   r#   r   r   rQ   r   r   r   r   O  s    zMacOSXOSAScript.openN)r   r	   r
   r/   r   r   r   r   r   r   K  s   r   Zsafarir   r   ZBROWSERr-   c        	      C   s?  d d  l  }  d t j d } y) |  j  t j d d   d  \ } } Wn[ |  j k
 r } z8 t | d t j t | d t j t j d  WYd  d  } ~ Xn Xd } x; | D]3 \ } } | d k r d } q | d k r d } q Wt |  d k rt | d t j t j d  | d } t | |  t d	  d  S)
Nr   zDUsage: %s [-n | -t] url
    -n: open new window
    -t: open new tabr   Zntdfilez-nz-tr$   )	getoptr;   argverrorprintrH   exitlenr   )	r   usageZoptsr1   msgZnew_winoar!   r   r   r   main  s(    )  	 

r   __main__r   r   r   r   r   r   )1r'   r   r%   r;   r=   __all__	Exceptionr   r   r   r   r   r   r   r   r   objectr,   r   r   rE   rY   rZ   r[   r\   ZChromiumr]   r^   r_   rd   r   r   r&   r<   r   r(   ri   Ziexplorer   r   r   r   pathsepZ_userchoicesreverserA   r+   r   r   r   r   r   r   <module>   s   "N

	45B	.
