ó
è¾bc           @   s  d  d l  Z  d  d l Z d  d l Z d  d l m Z e j d ƒ Z d Z e e d ƒ Z	 d „  Z
 d „  Z d „  Z d	 e j f d
 „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e e j f d „  ƒ  YZ d e e j f d „  ƒ  YZ d „  Z d S(   iÿÿÿÿN(   t	   ucd_3_2_0u   [.ã€‚ï¼Žï½¡]s   xn--t   asciic         C   s„  g  } x9 |  D]1 } t  j | ƒ r( q n  | j t  j | ƒ ƒ q Wd j | ƒ }  t j d |  ƒ }  x¨ |  D]  } t  j | ƒ s÷ t  j | ƒ s÷ t  j	 | ƒ s÷ t  j
 | ƒ s÷ t  j | ƒ s÷ t  j | ƒ s÷ t  j | ƒ s÷ t  j | ƒ s÷ t  j | ƒ rj t d | ƒ ‚ qj qj Wt t  j |  ƒ } x] | D]U } | r't t  j |  ƒ rTt d ƒ ‚ n  | d sj| d r|t d ƒ ‚ q|q'q'W|  S(   Nu    t   NFKCs   Invalid character %rs   Violation of BIDI requirement 2i    iÿÿÿÿs   Violation of BIDI requirement 3(   t
   stringprept   in_table_b1t   appendt   map_table_b2t   joint   unicodedatat	   normalizet   in_table_c12t   in_table_c22t   in_table_c3t   in_table_c4t   in_table_c5t   in_table_c6t   in_table_c7t   in_table_c8t   in_table_c9t   UnicodeErrort   mapt   in_table_d1t   filtert   in_table_d2(   t   labelt   newlabelt   ct   RandAL(    (    s$   /usr/lib/python2.7/encodings/idna.pyt   nameprep   s4    c         C   s+  y |  j  d ƒ }  Wn t k
 r& n3 Xd t |  ƒ k  oD d k  n rM |  St d ƒ ‚ t |  ƒ }  y |  j  d ƒ }  Wn t k
 r‹ n3 Xd t |  ƒ k  o© d k  n r² |  St d ƒ ‚ |  j t ƒ rÜ t d ƒ ‚ n  |  j  d ƒ }  t |  }  d t |  ƒ k  od k  n r|  St d ƒ ‚ d  S(   NR   i    i@   s   label empty or too longs   Label starts with ACE prefixt   punycode(   t   encodeR   t   lenR   t
   startswitht   uace_prefixt
   ace_prefix(   R   (    (    s$   /usr/lib/python2.7/encodings/idna.pyt   ToASCII>   s,    ""
"c         C   s  t  |  t ƒ r t } n3 y |  j d ƒ }  t } Wn t k
 rJ t } n X| s“ t |  ƒ }  y |  j d ƒ }  Wq“ t k
 r t d ƒ ‚ q“ Xn  |  j t ƒ s¯ t	 |  d ƒ S|  t
 t ƒ } | j d ƒ } t | ƒ } |  j ƒ  | k rt d |  | ƒ ‚ n  | S(   NR   s   Invalid character in IDN labelR   s   IDNA does not round-trip(   t
   isinstancet   strt   TrueR   R   t   FalseR   R    R"   t   unicodeR   t   decodeR#   t   lower(   R   t
   pure_asciit   label1t   resultt   label2(    (    s$   /usr/lib/python2.7/encodings/idna.pyt	   ToUnicodei   s*    	

t   Codecc           B   s    e  Z d  d „ Z d  d „ Z RS(   t   strictc         C   s±   | d k r t  d | ƒ ‚ n  | s) d Sg  } t j | ƒ } | rj t | d ƒ d k rj d } | d =n d } x! | D] } | j t | ƒ ƒ qw Wd j | ƒ | t | ƒ f S(   NR1   s   unsupported error handling t    i    iÿÿÿÿt   .(   R2   i    (   R   t   dotst   splitR   R   R#   R   (   t   selft   inputt   errorsR-   t   labelst   trailing_dotR   (    (    s$   /usr/lib/python2.7/encodings/idna.pyR   “   s    
c         C   së   | d k r t  d | ƒ ‚ n  | s) d	 St | t ƒ rJ t j | ƒ } n( t | ƒ } t | d ƒ | j d ƒ } | rž t | d ƒ d k rž d } | d =n d } g  } x! | D] } | j t | ƒ ƒ q± Wd j	 | ƒ | t | ƒ f S(
   NR1   s   Unsupported error handling u    i    R   R3   iÿÿÿÿu   .(   u    i    (
   R   R$   R(   R4   R5   R%   R   R   R/   R   (   R6   R7   R8   R9   R:   R-   R   (    (    s$   /usr/lib/python2.7/encodings/idna.pyR)   ¨   s"    
(   t   __name__t
   __module__R   R)   (    (    (    s$   /usr/lib/python2.7/encodings/idna.pyR0   ’   s   t   IncrementalEncoderc           B   s   e  Z d  „  Z RS(   c   	      C   s   | d k r t  d | ƒ ‚ n  | s) d	 St j | ƒ } d } | r€ | d s^ d } | d =q€ | s€ | d =| r} d } q} q€ n  g  } d } xD | D]< } | j t | ƒ ƒ | r¿ | d 7} n  | t | ƒ 7} q“ Wd j | ƒ | } | t | ƒ 7} | | f S(
   NR1   s   unsupported error handling R2   i    u    iÿÿÿÿR3   i   (   R2   i    (   R   R4   R5   R   R#   R   R   (	   R6   R7   R8   t   finalR9   R:   R-   t   sizeR   (    (    s$   /usr/lib/python2.7/encodings/idna.pyt   _buffer_encodeÆ   s0    

(   R;   R<   R@   (    (    (    s$   /usr/lib/python2.7/encodings/idna.pyR=   Å   s   t   IncrementalDecoderc           B   s   e  Z d  „  Z RS(   c   	      C   s:  | d k r t  d | ƒ ‚ n  | s) d
 St | t ƒ rJ t j | ƒ } n( t | ƒ } t | d ƒ | j d ƒ } d } | rº | d s˜ d } | d =qº | sº | d =| r· d } q· qº n  g  } d } xD | D]< } | j t | ƒ ƒ | rù | d	 7} n  | t | ƒ 7} qÍ Wd j	 | ƒ | } | t | ƒ 7} | | f S(   NR1   s   Unsupported error handling u    i    R   R3   iÿÿÿÿu   .i   (   u    i    (
   R   R$   R(   R4   R5   R%   R   R/   R   R   (	   R6   R7   R8   R>   R9   R:   R-   R?   R   (    (    s$   /usr/lib/python2.7/encodings/idna.pyt   _buffer_decodeè   s8    

(   R;   R<   RB   (    (    (    s$   /usr/lib/python2.7/encodings/idna.pyRA   ç   s   t   StreamWriterc           B   s   e  Z RS(    (   R;   R<   (    (    (    s$   /usr/lib/python2.7/encodings/idna.pyRC     s   t   StreamReaderc           B   s   e  Z RS(    (   R;   R<   (    (    (    s$   /usr/lib/python2.7/encodings/idna.pyRD     s   c           C   s@   t  j d d d t ƒ  j d t ƒ  j d t d t d t d t ƒ S(	   Nt   namet   idnaR   R)   t   incrementalencodert   incrementaldecodert   streamwritert   streamreader(	   t   codecst	   CodecInfoR0   R   R)   R=   RA   RC   RD   (    (    (    s$   /usr/lib/python2.7/encodings/idna.pyt   getregentry  s    	(   R   t   reRK   R   R    t   compileR4   R"   R(   R!   R   R#   R/   R0   t   BufferedIncrementalEncoderR=   t   BufferedIncrementalDecoderRA   RC   RD   RM   (    (    (    s$   /usr/lib/python2.7/encodings/idna.pyt   <module>   s   $	0	+	)3"(