python (3.12.0)

(root)/
lib/
python3.12/
http/
__pycache__/
server.cpython-312.opt-2.pyc

̑ef	dZgdZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZdZdZGddej2ZGd	d
ej6eZGddej:ZGd
deZdZ da!dZ"dZ#GddeZ$dZ%eedddfdZ&e'dk(rddl(Z(ddl)Z)e(jTZ+e+jYddde+jYdddd !e+jYd"d#ejZd$%e+jYd&d'd(dd)*e+jYd+de.d,d-.e+j_Z0e0jbre$Z2neZ2Gd/d0eZ3e&e2e3e0jhe0jje0jl1yy)2z0.6)
HTTPServerThreadingHTTPServerBaseHTTPRequestHandlerSimpleHTTPRequestHandlerCGIHTTPRequestHandlerN)
HTTPStatusaD<!DOCTYPE HTML>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Error response</title>
    </head>
    <body>
        <h1>Error response</h1>
        <p>Error code: %(code)d</p>
        <p>Message: %(message)s.</p>
        <p>Error code explanation: %(code)s - %(explain)s.</p>
    </body>
</html>
ztext/html;charset=utf-8ceZdZdZdZy)rc	tjj||jdd\}}t	j
||_||_y)N)socketserver	TCPServerserver_bindserver_addresssocketgetfqdnserver_nameserver_port)selfhostports   ?/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/http/server.pyrzHTTPServer.server_bindsH<**40((!,
d!>>$/N)__name__
__module____qualname__allow_reuse_addressrrrrrs
 rrceZdZdZy)rTN)rrrdaemon_threadsrrrrrsNrrc
LeZdZ	dejjdzZdezZe	Z
eZdZ
dZdZdZdZd!d
Zd"dZd"dZd
ZdZdZd#dZdZej7ej:ededdDcic]	}|d|dc}}Zdee d<dZ!dZ"d"dZ#dZ$gdZ%gdZ&dZ'd Z(e)jTjVZ,e-j\j_Dcic]}||j`|jbfc}}Z2y	cc}}wcc}}w)$rzPython/rz	BaseHTTP/HTTP/0.9c0	d|_|jx|_}d|_t	|j
d}|j
d}||_|j}t|dk(ryt|dk\r|d}	|jdst|jd	d
d
}|jd}t|dk7rttd
|Drtdtd|Drtdt|dt|d
f}|dk\r|j$dk\rd|_|dk\r$|jt j&d|zy||_dt|cxkrdks&n|jt j"d|zy|dd\}}t|dk(r0d|_|dk7r$|jt j"d|zy||c|_|_|j(jdr#d	|j(j+d	z|_	t,j.j1|j2|j4|_|j6j?dd}	|	jAdk(rd|_n)|	jAd k(r|j$dk\rd|_|j6j?d!d}
|
jAd"k(r/|j$dk\r |jdk\r|jCsyy#ttf$r&|jt j"d|zYywxYw#t,j.j8$r4}|jt j:dt	|Yd}~yd}~wt,j.j<$r4}|jt j:dt	|Yd}~yd}~wwxYw)#NTz
iso-8859-1
rFzHTTP//r
.rc3>K|]}|jywN)isdigit.0	components  r	<genexpr>z7BaseHTTPRequestHandler.parse_request.<locals>.<genexpr>/sO99,,..Osznon digit in http versionc38K|]}t|dkDyw)
N)lenr,s  rr/z7BaseHTTPRequestHandler.parse_request.<locals>.<genexpr>1sKys9~*Ksz unreasonable length http versionzBad request version (%r))r
r
zHTTP/1.1)rrzInvalid HTTP version (%s)zBad request syntax (%r)GETzBad HTTP/0.9 request type (%r)z//)_classz
Line too longzToo many headers
Connectionclose
keep-aliveExpectz100-continue)"commanddefault_request_versionrequest_versionclose_connectionstrraw_requestlinerstriprequestlinesplitr2
startswith
ValueErroranyint
IndexError
send_errorrBAD_REQUESTprotocol_versionHTTP_VERSION_NOT_SUPPORTEDpathlstriphttpclient
parse_headersrfileMessageClassheadersLineTooLongREQUEST_HEADER_FIELDS_TOO_LARGE
HTTPExceptiongetlowerhandle_expect_100)rversionrAwordsbase_version_numberversion_numberr:rLerrconntypeexpects           r
parse_requestz$BaseHTTPRequestHandler.parse_requests		)-)E)EEw $$..=!((0&!!#u:?u:?BiG
))'2$$&-mmC&;A&>#!4!:!:3!?~&!+$$OOO$%@AAKNKK$%GHH!$^A%6!7^A=N9O!O'D,A,AZ,O(-%'99/2EEG#*D CJ#!#OO&&)K7
9bq	
u:?$(D!%**4w>@")4di99%dii..s33DI	;;44TZZ<@<M<M5ODL <<##L"5>>w&$(D!nn,.##z1$)D!!!(B/LLNn,%%3$$
2))+G
+
**.8:	
P{{&&	OO::C
{{((	OO::"C


	s7B'L=:M5=2M21M25P*O P!*PPcd	|jtj|jyNT)send_response_onlyrCONTINUEend_headersrs rrYz(BaseHTTPRequestHandler.handle_expect_100ys,		

 3 34rcv		|jjd|_t|jdkDr5d|_d|_d|_|jtjy|jsd|_
y|jsyd|jz}t||s.|jtjd|jzyt||}||jj!y#t"$r#}|j%d|d|_
Yd}~yd}~wwxYw)Niir6Tdo_zUnsupported method (%r)zRequest timed out: %r)rQreadliner?r2rAr<r:rHrREQUEST_URI_TOO_LONGr=rahasattrNOT_IMPLEMENTEDgetattrwfileflushTimeoutError	log_error)rmnamemethodes    rhandle_one_requestz)BaseHTTPRequestHandler.handle_one_requests		#'::#6#6u#=D 4''(50#% ')$!
 ? ?@''(,%%%'DLL(E4'..-<>T5)FHJJ	NN2A6$(D!		s1A,D0DDAD-D	D8D33D8c	d|_|j|js|j|jsyyrc)r=rvrgs rhandlezBaseHTTPRequestHandler.handles94 $!''##%''rNc		|j|\}}||}||}|jd|||j|||j	ddd}|dk\r|t
jt
jt
jfvr|j|tj|dtj|ddz}|jd	d
}|j	d|j|j	dtt||j!|j"d
k7r|r|j$j'|yyy#t$r	d\}}YVwxYw)N)???rzzcode %d, message %sr5r7Fquote)codemessageexplainzUTF-8replacezContent-TypeContent-LengthHEAD)	responsesKeyErrorrr
send_responsesend_headerr
NO_CONTENT
RESET_CONTENTNOT_MODIFIEDerror_message_formathtmlescapeencodeerror_content_typer>r2rfr:rowrite)rr~rrshortmsglongmsgbodycontents        rrHz!BaseHTTPRequestHandler.send_errorsa	"	- $t 4Hg?G?G,dG<4)w/
CK..#11#002
2
00;;we<;;we<4G
>>'95D^T-D-DE-s3t9~><<6!dJJT"'+!=	- ,Hg	-sEE,+E,c	|j||j|||jd|j|jd|j	y)NServerDate)log_requestrdrversion_stringdate_time_stringrr~rs   rrz$BaseHTTPRequestHandler.send_responsesY		
g.4#6#6#89!6!6!89rc	|jdk7rt|#||jvr|j|d}nd}t|dsg|_|jj	d|j
||fzj
ddyy)Nr"rr6_headers_bufferz
%s %d %s
latin-1strict)r<rrlrappendrJrrs   rrdz)BaseHTTPRequestHandler.send_response_onlys,:-4>>)"nnT215G G4!23')$  ''**D':*;<BF!8=-
..rc@	|jdk7rDt|dsg|_|jj|d|dj	dd|jdk(r7|jdk(rd	|_y|jd
k(rd|_yyy)Nr"rz: r$rr
connectionr7Tr8F)r<rlrrrrXr=)rkeywordvalues   rrz"BaseHTTPRequestHandler.send_headers7:-4!23')$  ''!(%088HM
O==?l*{{}'(,%,.(-%/+rc|	|jdk7r,|jjd|jyy)Nr"s
)r<rr
flush_headersrgs rrfz"BaseHTTPRequestHandler.end_headerss8::-  ''0 .rct|dr<|jjdj|jg|_yy)Nrr)rlrorjoinrrgs rrz$BaseHTTPRequestHandler.flush_headerss;4*+JJSXXd&:&:;<#%D ,rc	t|tr|j}|jd|jt|t|y)Nz
"%s" %s %s)
isinstancerrlog_messagerAr>)rr~sizes   rrz"BaseHTTPRequestHandler.log_request!sB	
dJ'::D))3t9c$i	Arc,	|j|g|yr*)r)rformatargss   rrrz BaseHTTPRequestHandler.log_error,s			'$'r z\x02xz\\\c		||z}tjj|jd|j	d|j|jdy)Nz - - [z] 
)sysstderrraddress_stringlog_date_time_string	translate_control_char_table)rrrrs    rrz"BaseHTTPRequestHandler.log_message?sW	&4-

--/335!++D,D,DEG	Hrc<	|jdz|jzS)N )server_versionsys_versionrgs rrz%BaseHTTPRequestHandler.version_stringYs!8""S(4+;+;;;rcr	|tj}tjj|dS)NT)usegmt)timeemailutils
formatdate)r	timestamps  rrz'BaseHTTPRequestHandler.date_time_string]s0N		I{{%%i%==rc		tj}tj|\	}}}}}}}}	}
d||j|||||fz}|S)Nz%02d/%3s/%04d %02d:%02d:%02d)r	localtime	monthname)rnowyearmonthdayhhmmssxyzss            rrz+BaseHTTPRequestHandler.log_date_time_stringcs[<iik04s0C-eS"b"aA*T^^E*D"b".>
>r)MonTueWedThuFriSatSun)
NJanFebMarAprMayJunJulAugSepOctNovDecc"	|jdSNr)client_addressrgs rrz%BaseHTTPRequestHandler.address_stringqs(""1%%rHTTP/1.0)NNr*)-r)3rrrrrZrBr__version__rDEFAULT_ERROR_MESSAGErDEFAULT_ERROR_CONTENT_TYPErr;rarYrvrxrHrrdrrfrrrrr>	maketrans	itertoolschainrangerordrrrrweekdaynamerrrJrNrOHTTPMessagerRr__members__valuesphrasedescriptionr)r-cvs000rrrsfdNckk//1!44K
!;.N03)l\$#J&3#j:..!&
	A(--'6yuT{E$tDT'UV!Q2aW

VX%*D	"H4<>DK;I&";;**L
''..0
	
AHHamm$$II
WHsD
5 D rcpeZdZ	dezZdZdddddxZZdd	fd

ZdZ	dZ
d
ZdZdZ
dZdZxZS)rzSimpleHTTP/)z
index.htmlz	index.htmzapplication/gzipapplication/octet-streamzapplication/x-bzip2zapplication/x-xz)z.gzz.Zz.bz2z.xzN	directoryc|tj}tj||_t	||i|yr*)osgetcwdfspathrsuper__init__)rrrkwargs	__class__s    rrz!SimpleHTTPRequestHandler.__init__s6		I9-
$)&)rc	|j}|r.	|j||j|jyy#|jwxYwr*)	send_headcopyfileror7rfs  rdo_GETzSimpleHTTPRequestHandler.do_GETsF"NN


a,		
	sAAcL	|j}|r|jyyr*)rr7r
s  rdo_HEADz SimpleHTTPRequestHandler.do_HEADs"#NN
GGI
rc0	|j|j}d}tjj|r5tj
j
|j}|jjds|jtj|d|d|ddz|d|df}tj
j|}|jd||jdd	|jy|jD]E}tjj||}tjj!|sC|}n|j#|S|j%|}|jdr!|j'tj(d
y	t+|d}	tj.|j1}d|j2vr1d
|j2vr"	t4j6j9|j2d}	|	j:*|	j=t>j@jB}	|	j:t>j@jBurt>j>jE|jFt>j@jB}
|
j=d}
|
|	kr@|jtjH|j|jKy|jtjT|jd||jdtW|d|jd|jY|jF|j|S#t,$r#|j'tj(d
YywxYw#tLtNtPtRf$rYwxYw#|jKxYw)Nr'rr
rr%Locationr0zFile not foundrbzIf-Modified-Sincez
If-None-Match)tzinfo)microsecondContent-typez
Last-Modified)-translate_pathrLrisdirurllibparseurlsplitendswithrrMOVED_PERMANENTLY
urlunsplitrrfindex_pagesrisfilelist_directory
guess_typerH	NOT_FOUNDopenOSErrorfstatfilenorSrrparsedate_to_datetimerrdatetimetimezoneutc
fromtimestampst_mtimerr7	TypeErrorrG
OverflowErrorrDOKr>r)rrLrparts	new_partsnew_urlindexctypefsims
last_modifs           rrz"SimpleHTTPRequestHandler.send_headsL		""499-
77==LL))$))4E::&&s+"":#?#?@"1XuQxqC"1XuQx1	 ,,11)<  W5  !137  "))
1T5177>>%( D	
1**400%==OOJ002BC	T4 A
'	!((*%B#t||3't||;(++;;%89;Czz)"kk1B1B1F1FkGzzX%6%6%:%::%-%6%6%D%DKK):):)>)>&@
&0%7%7A%7%F
%, ..z/F/FG ,,.GGI#'z}}-^U3-s2a5z:_%%bkk2
4HQ	OOJ002BC	":}jI8	
GGIsK8N4AP,O#3C4P(BP4)O O #O?<P>O??PPc
		tj|}|j
dg}	tjj|jd}tj|d}tj}d|}|j!d	|j!d
|j!d|j!d|d
|j!d|d|j!d|d|j!d|D]}tjj#||}|x}	}
tjj%|r
|dz}	|dz}
tjj'|r|dz}	|j!dtjj)|
dd
tj|	dd|j!ddj#|j+|d}t-j.}|j1||j3d|j5tj6|j9dd|z|j9dt;t=||j?|S#t$r#|jtj
dYywxYw#t$r-tjj|j}YwxYw)NzNo permission to list directoryc"|jSr*)rX)as r<lambda>z9SimpleHTTPRequestHandler.list_directory.<locals>.<lambda>s	r)key
surrogatepasserrorsFr|zDirectory listing for z<!DOCTYPE HTML>z<html lang="en">z<head>z<meta charset="z">z<title>z</title>
</head>z<body>
<h1>z</h1>z	<hr>
<ul>r'@z
<li><a href="z	</a></li>z</ul>
<hr>
</body>
</html>
rsurrogateescaperrztext/html; charset=%sr) rlistdirr)rHrr'sortrrunquoterLUnicodeDecodeErrorrrrgetfilesystemencodingrrrislinkr}rioBytesIOrseekrr4rr>r2rf)
rrLlistrdisplaypathenctitlenamefullnamedisplaynamelinknameencodedrs
             rr%z'SimpleHTTPRequestHandler.list_directory	s		::d#D	
		)	*	: ,,..tyy6E/GKkk+U;'')(
6	"#	#$		?3%r*+	75'!234	<we,-	
	?Dww||D$/H%))K(ww}}X&"Sj#:ww~~h'"Sj
HH||))(1@*B{{;e<>
?
	?	
23))A,%%c+<=JJL		q	:==))@3)FG)3s7|+<=[	OO$$1
3		"	: ,,..tyy9K	:s"J"+K")K
K2LLc	|jddd}|jddd}|jjd}	tjj|d}tj|}|jd}td|}|j}|D]d}tjj|s"|tjtjfvrEtjj!||}f|r|dz
}|S#t$r"tjj|}YwxYw)N?r
r#r'rBrC)rBr@r rrrIrJ	posixpathnormpathfilterrrrLdirnamecurdirpardirr)rrLtrailing_slashr[words     rrz'SimpleHTTPRequestHandler.translate_pathBs	zz#a #zz#a #//4	.<<''_'ED!!$'

3tU#~~	,Dwwt$BII0F(F77<<d+D		,
CKD"	.<<''-D	.s!D(EEc2	tj||yr*)shutilcopyfileobj)rsource
outputfiles   rrz!SimpleHTTPRequestHandler.copyfile`s		6:.rc	tj|\}}||jvr|j|S|j}||jvr|j|St	j
|\}}|r|Sy)Nr)r]splitextextensions_maprX	mimetypesr&)rrLbaseextguess_s      rr&z#SimpleHTTPRequestHandler.guess_typeps	&&t,	c$%%%&&s++iik$%%%&&s++''-qL)r)rrrrrr#rl_encodings_map_defaultrrrrr%rrr&
__classcell__r	s@rrrsd	#[0N-K!(%!	/N+)-*Vp7r</ *rrc	|jd\}}}tjj|}|j	d}g}|ddD]2}|dk(r|j|s|dk7s"|j
|4|r2|j}|r"|dk(r|jd}n
|dk(rd}nd}|rdj||f}ddj|z|f}dj|}|S)Nr[r'r&z..r(r6)	partitionrrrIrBpoprr)	rLrqquery
path_parts
head_partspart	tail_part	splitpathcollapsed_paths	         r_url_collapse_pathrs^^C(ND!U<<%DCJJ3B&4<NN
dckt%	&
NN$	D  	c!		HHi/0	sxx
++Y7IXXi(Nrc	trtS	ddl}	|jddatS#t$rYywxYw#t$r+dtd|j
DzaYtSwxYw)Nrr&nobodyrr
c3&K|]	}|dyw)rNr)r-rs  rr/znobody_uid.<locals>.<genexpr>s6!16s)rpwdImportErrorgetpwnamrmaxgetpwall)rs r
nobody_uidrsx.

7h'*M
7S6s||~666M7s.=	::,A10A1cL	tj|tjSr*)raccessX_OK)rLs r
executablers#
99T277##rcPeZdZ	eedZdZdZdZdZ	ddgZ
dZd	Zd
Z
y)rforkrc	|jr|jy|jtjdy)NzCan only POST to CGI scripts)is_cgirun_cgirHrrmrgs rdo_POSTzCGIHTTPRequestHandler.do_POSTs3	;;=LLNOO**.
0rcn	|jr|jStj|Sr*)rrrrrgs rrzCGIHTTPRequestHandler.send_heads+;;;=<<>!+55d;;rc	t|j}|jdd}|dkDr=|d||jvr,|jd|dz}|dkDr|d||jvr,|dkDr|d|||dzd}}||f|_yy)Nr'r
rTF)rrLfindcgi_directoriescgi_info)rr~dir_sepheadtails     rrzCGIHTTPRequestHandler.is_cgis
	,DII6 %%c1-k.'":d>R>R"R$))#wqy9Gk.'":d>R>R"RQ;'1>'!)*3M$D $JDMrz/cgi-binz/htbinc	t|Sr*)r)rrLs  r
is_executablez#CGIHTTPRequestHandler.is_executables?$rcl	tjj|\}}|jdvS)N)z.pyz.pyw)rrLrkrX)rrLrrs    r	is_pythonzCGIHTTPRequestHandler.is_pythons.<WW%%d+
dzz|..rc	|j\}}|dz|z}|jdt|dz}|dk\rg|d|}||dzd}|j|}tj
j
|r#||}}|jdt|dz}nn|dk\rg|jd\}}}	|jd}|dk\r|d|||d}}
n|d}}
|dz|
z}|j|}tj
j|s$|jtjd|zytj
j|s$|jtjd|zy|j|}
|js|
s5|j!|s$|jtjd|zyt#j$tj&}|j)|d	<|j*j,|d
<d|d<|j.|d
<t1|j*j2|d<|j4|d<t6j8j;|}||d<|j||d<||d<|	|d<|j<d|d<|j>jAd}|r|jC}t|dk(rddl"}ddl#}|d|d<|djIdk(r]	|djKd}|jM|jOd}|jCd}t|dk(r	|d|d<	|j>jAd|j>jU|d<n|j>d|d<|j>jAd}|r||d<|j>jAd }|r||d!<|j>jWd"d#}d$jY||d%<|j>jAd&}|r||d'<t[d|j>jWd(g}d)jY|}|r||d*<d+D]}|j]|d|j_tj`d,|jc|	jed-d.}|jr|
g}d/|vr|jg|ti}|jjjmt	jn}|dk7rt	jp|d\}}tsjr|jtgggddrC|jtjwdsn'tsjr|jtgggddrCt	jx|}|r|j{d0|y		t	j||t	j|jtjdt	j|jjjdt	j|||yddlF} |g}!|j|rAtj}"|"jIjd2r|"dd3|"d4dz}"|"d5g|!z}!d/|	vr|!jg|	|jd6| j|!	t|}#| j|!| j| j| j|7}$|j4jId8k(r!|#dkDr|jtjw|#}%nd}%tsjr|jtjgggddrW|jtjjdsn1tsjr|jtjgggddrW|$j|%\}&}'|jjj|&|'r|j{d9|'|$jj|$jj|$j}(|(r|j{d:|(y|jd;y#|jPtRf$rYmwxYw#t~$rYwxYw#|j*j|j|j<t	jd1YyxYw#ttf$rd}#Y1wxYw)<Nr'r
rr[r6zNo such CGI script (%r)z#CGI script is not a plain file (%r)z!CGI script is not executable (%r)SERVER_SOFTWARESERVER_NAMEzCGI/1.1GATEWAY_INTERFACESERVER_PROTOCOLSERVER_PORTREQUEST_METHOD	PATH_INFOPATH_TRANSLATEDSCRIPT_NAMEQUERY_STRINGREMOTE_ADDR
authorizationr	AUTH_TYPEbasicascii:REMOTE_USERzcontent-typeCONTENT_TYPEzcontent-lengthCONTENT_LENGTHrefererHTTP_REFERERacceptr,HTTP_ACCEPTz
user-agentHTTP_USER_AGENTcookiez, HTTP_COOKIE)rREMOTE_HOSTrrrrzScript output follows+r=zCGI script exit code rzw.exez-uzcommand: %s)stdinstdoutrenvpostz%szCGI script exit status %#xzCGI script exited OK)Yrrr2rrrLrrvexistsrHrr'r$	FORBIDDENr	have_forkrcopydeepcopyenvironrserverrrJr>rr:rrrIrrSrWrBbase64binasciirXrdecodebytesdecodeErrorUnicodeErrorget_content_typeget_allrr_
setdefaultrr4rrrrrorprwaitpidselectrQreadwaitstatus_to_exitcoderrsetuidr)dup2r+execvehandle_errorrequest_exit
subprocessrrr rlist2cmdlinerFr2rDPopenPIPE_sockrecvcommunicaterrr7r
returncode))rdirrestrLinextdirnextrest	scriptdirrqrxscript
scriptname
scriptfileispyruqrestrrrlengthrruaco
cookie_strk
decoded_queryrrpidstsexitcodercmdlineinterpnbytespdatarrstatuss)                                         rrzCGIHTTPRequestHandler.run_cgis?#MM	TSy4IIc3s8A:&1f2AhGAaCDzH++G4Iww}}Y'#XTIIc3s8A:.1f,a
IIcN68T!"XDFDF3Y'
((4
ww~~j)OO$$)J6
8
ww~~j)OO$$5
B
D
~~j)>>%%j1((7*DFmmBJJ'!%!4!4!6![[44M#, !%!6!6 !8!89M $%%d+!K!%!4!4V!<'M#N!003M((9
)//1M=!Q&'#0#3K  #))+w6	B(5a(8(?(?(H
(.(:(:=(I(.w&
)6(;(;C(@
}-21>q1AC
.<<N+3"&,,"?"?"AC"&,,~">C!!"23$*C !,,""9-")C%%h3 XXf-M
\\

l
+
%'C!"
D$,,..x<
=YYr]
!+C
D	"ANN1b!	"	
:==*AB

c3/
>>8D-'M*\FJJ'')Cax::c1-SmmTZZL"b!<Q?::??1-mmTZZL"b!<Q?44S9NN%:8*#EF

IIf%

))+Q/

))+Q/		*dC0
!lG~~j)<<>**73#CR[6"#;6F!4.72%u%]J,C,CG,LM
V  '1(2(2'*	!#A||!!#v-&1*zzv.--!1!1 2BA>qAzz'',,Q/--!1!1 2BA>qA]]40NFFJJV$tV,
HHNN
HHNN\\F;VD  !78_%NNL9z

((t7J7JK
"z*

sP4cc'A3c7ec$#c$'	c40c73c44c77AeeeN)rrrrlrrrbufsizerrrrrrrrrrrrsGF#IH0<4"8,O /
x9rrctj|tjtjd}t	t|\}}}}}||fS)N)typeflags)rgetaddrinfoSOCK_STREAM
AI_PASSIVEnextiter)addressinfosfamilyrproto	canonnamesockaddrs       r_get_best_familyrsM	



E
04DK/@,FD%H8rri@c	t||\|_}||_|||5}|jj	dd\}}d|vrd|dn|}td|d|d|d|d		|j
dddy#t$r#td	tjd
Y4wxYw#1swYyxYw)Nrr[]zServing HTTP on z port z	 (http://z/) ...z&
Keyboard interrupt received, exiting.r)
raddress_familyrJrgetsocknameprint
serve_foreverKeyboardInterruptrexit)	HandlerClassServerClassprotocolrbindaddrhttpdrurl_hosts	         rtestr s
(8d'C$K$,L!	T<	(E\\--/3
d"%+QtfA;4
tfF4&1j$v
/	
	!!	;<HHQK	s*AB4,B)B1.B40B11B44B=__main__z--cgi
store_truezrun as CGI server)actionhelpz-bz--bindADDRESSz.bind to this address (default: all interfaces))metavarr$z-dz--directoryz1serve this directory (default: current directory))defaultr$z-pz
--protocolVERSIONz3conform to this HTTP version (default: %(default)s))r&r'r$rr[z(bind to this port (default: %(default)s))r'rnargsr$c$eZdZfdZdZxZS)DualStackServerctjt5|jj	tj
tjddddt|!S#1swYxYwr)	
contextlibsuppress	Exceptionr
setsockoptIPPROTO_IPV6IPV6_V6ONLYrr)rr	s rrzDualStackServer.server_binds`$$Y/
@&&''););Q@
@7&((
@
@s:A++A4cJ|j|||tjy)Nr)RequestHandlerClassrr)rrrs   rfinish_requestzDualStackServer.finish_requests"$$Wnd/3~~
%
?r)rrrrr5rsrts@rr+r+s
	)	?rr+)rrrrr)7r__all__rr-email.utilsrrhttp.clientrNrMrrmrr]rrfrr
rrurllib.parserrrrrrThreadingMixInrStreamRequestHandlerrrrrrrrrr rargparser-ArgumentParserparseradd_argumentrrF
parse_argsrcgi
handler_classr+rrrrrr<module>rCs
d
		



 7	 ''	 ,55zq\>>qhA*5A*L,`

 $
C94C9L-(4d.z
$X
$
$
&F
02
h	9:mYRYY[<=lI *673c67Dxx-
0
?-?	"#
YY
YYQr