nyMac@s;dZddlZddZddZddZd d Zd d Zd ZddZddZ ddZ ddZ ddZ ddZ ddZGdddejZGdddejZGd d!d!ejZGd"d#d#eejZGd$d%d%eejZd&d'ZdS((uY Codec for the Punicode encoding, as specified in RFC 3492 Written by Martin v. Löwis. iNcCstt}t}xC|D];}t|dkrG|jt|q|j|qWt|}t||fS(u 3.1 Basic code point segregationi(u bytearrayusetuorduappenduaddusortedubytes(ustrubaseuextendeduc((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyu segregate s    u segregatecCs:d}x-|D]%}t||kr |d7}q q W|S(u@Return the length of str, considering only characters below max.ii(uord(ustrumaxuresuc((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyu selective_lens  u selective_lencCsmt|}xZ|d7}||kr)dS||}||krM|d|fS||kr|d7}qqdS(uReturn a pair (index, pos), indicating the next occurrence of char in str. index is the position of the character considering only ordinals up to and including char, and pos is the position in the full string. index/pos is the starting position in the full string.iNii(ii(ulen(ustrucharuindexuposuluc((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuselective_finds      uselective_findc Csd}g}d}x|D]}d}}t|}t||} | d||} xYt||||\}}|dkrPn| ||7} |j| d|}d} qY|}qW|S(u3.2 Insertion unsort codingiiiiii(uordu selective_lenuselective_finduappend( ustruextendeduoldcharuresultuoldindexucuindexuposucharucurlenudelta((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuinsertion_unsort0s$      uinsertion_unsortcCs6d|d|}|dkr"dS|dkr2dS|S(Ni$ii((ujubiasures((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuTFs   uTs$abcdefghijklmnopqrstuvwxyz0123456789cCst}d}xvt||}||krH|jt|t|S|jt|||d|||d|}|d7}qdS(u(3.3 Generalized variable-length integersii$iN(u bytearrayuTuappendudigitsubytes(uNubiasuresultujut((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyugenerate_generalized_integerNs   !ugenerate_generalized_integercCsr|r|d}n |d}|||7}d}x$|dkrW|d}|d7}q4W|d||d}|S(Niiiii#i$i&((udeltaufirstunumcharsu divisionsubias((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuadapt[s   uadaptcCsrt}d}xVt|D]H\}}t||}|j|t||dk||d}qWt|S(u3.4 Bias adaptationiHii(u bytearrayu enumerateugenerate_generalized_integeruextenduadaptubytes(ubaselenudeltasuresultubiasupointsudeltaus((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyugenerate_integersjs  $ugenerate_integerscCsLt|\}}t||}tt||}|rH|d|S|S(Ns-(u segregateuinsertion_unsortugenerate_integersulen(utextubaseuextendedudeltas((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyupunycode_encodeus  upunycode_encodec CsBd}d}d}x)yt||}Wn;tk rf|dkrTtdn|dd fSYnX|d7}d|kodknr|d}nVd|kodknr|d }n-|dkrtd ||n |d fSt||} |||7}|| kr#||fS|d | }|d7}qd S( u(3.3 Generalized variable-length integersiiustrictuincomplete punicode stringiAiZi0i9iu Invalid extended code point '%s'i$N(uordu IndexErroru UnicodeErroruNoneuT( uextendeduextposubiasuerrorsuresultuwujucharudigitut((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyudecode_generalized_numbers2         udecode_generalized_numberc Cs d}d }d}d}x|t|krt||||\}}|d krX|S||d7}||t|d7}|dkr|dkrtd|ntd}n|t|d}|d |t|||d }t||dkt|}|}qW|S( u3.2 Insertion unsort codingiiiHiiustrictuInvalid character U+%xu?Ni(ulenudecode_generalized_numberuNoneu UnicodeErroruorduchruadapt( ubaseuextendeduerrorsucharuposubiasuextposunewposudelta((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuinsertion_sorts(    ( uinsertion_sortcCst|tr!|jd}nt|tr?t|}n|jd}|dkrxd}t|dj}n?t|d|d|}t||dddj}t|||S(Nuasciis-iui(u isinstanceustruencodeu memoryviewubytesurfinduupperuinsertion_sort(utextuerrorsuposubaseuextended((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyupunycode_decodes #upunycode_decodecBs2|EeZdZdddZdddZdS(uCodecustrictcCst|}|t|fS(N(upunycode_encodeulen(uselfuinputuerrorsures((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuencodes u Codec.encodecCs>|dkrtd|nt||}|t|fS(NustrictureplaceuignoreuUnsupported error handling (ustrictureplaceuignore(u UnicodeErrorupunycode_decodeulen(uselfuinputuerrorsures((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyudecodes u Codec.decodeN(u__name__u __module__u __qualname__uencodeudecode(u __locals__((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuCodecsuCodeccBs#|EeZdZdddZdS(uIncrementalEncodercCs t|S(N(upunycode_encode(uselfuinputufinal((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuencodesuIncrementalEncoder.encodeNF(u__name__u __module__u __qualname__uFalseuencode(u __locals__((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuIncrementalEncodersuIncrementalEncodercBs#|EeZdZdddZdS(uIncrementalDecodercCs5|jdkr%td|jnt||jS(NustrictureplaceuignoreuUnsupported error handling (ustrictureplaceuignore(uerrorsu UnicodeErrorupunycode_decode(uselfuinputufinal((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyudecodesuIncrementalDecoder.decodeNF(u__name__u __module__u __qualname__uFalseudecode(u __locals__((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyuIncrementalDecodersuIncrementalDecodercBs|EeZdZdS(u StreamWriterN(u__name__u __module__u __qualname__(u __locals__((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyu StreamWritersu StreamWritercBs|EeZdZdS(u StreamReaderN(u__name__u __module__u __qualname__(u __locals__((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyu StreamReadersu StreamReadercCs@tjdddtjdtjdtdtdtdtS( Nunameupunycodeuencodeudecodeuincrementalencoderuincrementaldecoderu streamwriteru streamreader( ucodecsu CodecInfouCodecuencodeudecodeuIncrementalEncoderuIncrementalDecoderu StreamWriteru StreamReader(((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyu getregentrys   u getregentry(u__doc__ucodecsu segregateu selective_lenuselective_finduinsertion_unsortuTudigitsugenerate_generalized_integeruadaptugenerate_integersupunycode_encodeudecode_generalized_numberuinsertion_sortupunycode_decodeuCodecuIncrementalEncoderuIncrementalDecoderu StreamWriteru StreamReaderu getregentry(((u7/opt/alt/python33/lib64/python3.3/encodings/punycode.pyus(