mò %U²Ic@sþdZdkZdkZdkZdddddddd d d d d ddgZgZedƒD]Zeeeƒqb[Z dZ d„Z e d„Z e d„Zd„Zd„Zd„Zd„Zhdd<dd<dd<dd <d!d"<d#d$<d%d&<d'd(<d)d*<d+d,<d-d.<d/d0<d1d2<d3d4<d5d6<d7d8<d9d:<d;d<<d=d><d?d@<dAdB<dCdD<dEdF<dGdH<dIdJ<dKdL<dMdN<dOdP<dQdR<dSdT<dUdV<dWdX7}||d@d>7}|i t|d?t|d ?d @t|d?d @t|d ?t|d ?d @t|d ?d @t|d?t|d @gƒqUWti|ƒ}|djo|d dSnX|d jo|d dSn;|djo|d dSn|djo|d dSn|S(scEncode a string using Base32. s is the string to encode. The encoded string is returned. itis!HHBiiii iii iiiúÿÿÿs======iüÿÿÿs====iýÿÿÿs===iiÿÿÿÿt=N(tpartstdivmodtlenRtquantatleftovertrangetitstructtunpacktc1tc2tc3textendt_b32tabt EMPTYSTRINGRR( RRMRRGRJRQRRRKRP((RR‡s, .y     c Cs'tt|ƒdƒ\}}|otdƒ‚n|o%t|hdd<d|<ƒ}n|o|i ƒ}nd} t i d|ƒ} | o5t| idƒƒ} | djo|| }qÉng}d}d } x|D]…}ti|ƒ}|djotd ƒ‚n|t|| >7}| d 8} | djo*|itid |ƒƒd}d } qâqâWtid |ƒ} | djo d } ny| djo| d } n^| djo| d } nC| djo| d } n(| djo| d } n tdƒ‚|i| ƒti|ƒS(sGDecode a Base32 encoded string. s is the string to decode. Optional casefold is a flag specifying whether a lowercase alphabet is acceptable as input. For security purposes, the default is False. RFC 3548 allows for optional mapping of the digit 0 (zero) to the letter O (oh), and for optional mapping of the digit 1 (one) to either the letter I (eye) or letter L (el). The optional argument map01 when not None, specifies which letter the digit 1 should be mapped to (when map01 is not None, the digit 0 is always mapped to the letter O). For security purposes the default is None, so that 0 and 1 are not allowed in the input. The decoded string is returned. A TypeError is raised if s were incorrectly padded or if there are non-alphabet characters present in the string. isIncorrect paddingt0R:t1is(?P[=]*)$tpadi#sNon-base32 digit foundis%010xRiiÿÿÿÿiiþÿÿÿiiýÿÿÿiiüÿÿÿN(RHRIRRJRKR$tmap01RtcasefoldtuppertpadcharstretsearchtmotgroupRGtacctshifttct_b32revtgettvalR tappendRt unhexlifytlastRUR( RRZRYRfRGRJRKRaRcRiR\RbR_((RR±sT%            cCsti|ƒiƒS(scEncode a string using Base16. s is the string to encode. The encoded string is returned. N(RthexlifyRR[(R((RRûscCsG|o|iƒ}ntid|ƒotdƒ‚nti|ƒS(swDecode a Base16 encoded string. s is the string to decode. Optional casefold is a flag specifying whether a lowercase alphabet is acceptable as input. For security purposes, the default is False. The decoded string is returned. A TypeError is raised if s were incorrectly padded or if there are non-alphabet characters present in the string. s [^0-9A-F]sNon-base16 digit foundN(RZRR[R]R^R$RRh(RRZ((RR s iLcCs”xto…|itƒ}|pPnxGt|ƒtjo3|itt|ƒƒ}|pPn||7}q(Wti|ƒ}|i |ƒqWdS(sEncode a file.N( tTruetinputtreadt MAXBINSIZERRItnsRRtlinetoutputtwrite(RlRqRRpRo((RRscCsGx@to8|iƒ}|pPnti|ƒ}|i|ƒqWdS(sDecode a file.N( RkRltreadlineRpRR!RRqRr(RlRqRRp((RR,s cCs]g}xGtdt|ƒtƒD]-}|||t!}|iti |ƒƒqWdi |ƒS(sEncode a string.iRN( tpiecesRLRIRRnRMtchunkRgRRR(RRMRuRt((RR6scCs ti|ƒS(sDecode a string.N(RR!R(R((RR?scCsLdk}dk}y#|i|iddƒ\}}WnF|ij o7}|i|_|GHd|idGH|i dƒnXt }xu|D]m\}}|djo t }n|djo t}n|d jo t}n|d jotƒdSq‹q‹W|o2|dd jo!|t|dd ƒ|iƒn||i|iƒdS( sSmall test programNitdeutsusage: %s [-d|-e|-u|-t] [file|-] -d, -u: decode -e: encode (default) -t: encode and decode string 'Aladdin:open sesame'iis-es-ds-us-tt-trb(tsystgetopttargvtoptstargsterrorR#tstderrtstdouttexitRtfunctotaRttest1topentstdin(R„R}RƒRyR‚R#RzR|((RttestFs.#      !cCs5d}t|ƒ}t|ƒ}|Gt|ƒG|GHdS(NsAladdin:open sesame(ts0Rts1Rts2trepr(R‹RŠR‰((RR…_s  t__main__(*t__doc__R]RNRt__all__t_[1]RLt_xtchrRRURR RRR R R R t _b32alphabetRRTtsortRRtdicttlongRdRtFalseRRR t MAXLINESIZERnRRRRRˆR…t__name__( R…R R RdRRTRRnRNRR‘RR RR]RRR˜RRRˆRR RRR RRURR“RR((Rt?sB   0-     ÿ'  '? *J