+
    ‰4i²  ã                   óD   € R t ^ RIHt ^ RIHtHt R tR tR tR t	R t
R# )	zœ
Routines for dealing with nmap-style IPv4 address ranges.

Based on nmap's Target Specification :-

    http://nmap.org/book/man-target-specification.html
)ÚAddrFormatError)Ú	IPAddressÚ	IPNetworkc                 óH  € \        4       pV P                  R 4       Fù  pRV9   d³   VP                  R^4      w  r4V'       g   ^ pV'       g   ^ÿp\        V4      p\        V4      p^ Tu;8:  d   ^ÿ8:  d   M M^ Tu;8:  d   ^ÿ8:  g   M \        RV : R24      hWV8”  d   \        RV: 24      h\	        WV^,           4       F  pVP                  V4       K  	  K¼  \        V4      p^ Tu;8:  d   ^ÿ8:  g   M \        RV : R24      hVP                  V4       Kû  	  \        V4      # )Ú,Ú-zoctet value overflow for spec Ú!z%left side of hyphen must be <= right )ÚsetÚsplitÚintÚ
ValueErrorÚrangeÚaddÚsorted)ÚspecÚvaluesÚelementÚleftÚrightÚlowÚhighÚoctets   &       Ú1/usr/lib/python3/dist-packages/netaddr/ip/nmap.pyÚ_nmap_octet_target_valuesr      sí   € ô ‹U€Fà—:‘:˜c–?ˆØ�'Œ>Ø!Ÿ-™-¨¨QÓ/‰KˆDßØ�ßØ�Ü�d“)ˆCÜ�u“:ˆDØ˜#–_ —_¨1°Ö+;¸Ö+;Ý ËÐ!NÓOÐOØŒzÝ ÊgÐ!WÓXÐXÜ˜s¨1¥HÖ-�Ø—
‘
˜5Ö!ó .ô ˜“LˆEØ˜Ö% #Ö%Ý ËÐ!NÓOÐOØ�J‰J�uÖñ' #ô* �&‹>Ðó    c                 óv  € \        V \        4      '       g   \        R \        V 4      ,          4      hV '       g   \	        R4      hV P                  R4      p\        V4      ^8w  d   \        RV : 24      h\        V^ ,          4      \        V^,          4      \        V^,          4      \        V^,          4      3# )zstring expected, not %sz*nmap target specification cannot be blank!Ú.zinvalid nmap range: )	Ú
isinstanceÚstrÚ	TypeErrorÚtyper   r
   Úlenr   r   )Únmap_target_specÚtokenss   & r   Ú_generate_nmap_octet_rangesr$   /   sŸ   € ô Ð&¬×,Ò,ÜÐ1´DÐ9IÓ4JÕJÓKÐKçÜÐEÓFÐFà×#Ñ# CÓ(€Fä
ˆ6ƒ{�aÔÝÒ:JÐLÓMÐMô 	" &¨¥)Ó,Ü! &¨¥)Ó,Ü! &¨¥)Ó,Ü! &¨¥)Ó,ð	ð r   c              #   óò  "  € R V 9   dt   V P                  R ^4      w  r^ \        V4      u;8  d   ^!8  g   M \        RV: 24      h\        V 4      pVP                  ^8w  d   \        R4      hV F  pVx € K	  	  R# RV 9   d   \        V 4      x € R# \        V 4      pV^ ,           FJ  pV^,           F:  pV^,           F*  pV^,           F  p	\        RWgW‰3,          ^4      x € K  	  K,  	  K<  	  KL  	  R# 5i)Ú/zCIDR prefix expected, not zCIDR only support for IPv4!Ú:z%d.%d.%d.%dN)r
   r   r   r   Úversionr   r$   )
Útarget_specÚ_ÚprefixÚnetÚipÚoctet_rangesÚwÚxÚyÚzs
   &         r   Ú_parse_nmap_target_specr3   E   sä   é € Ø
ˆkÔØ×%Ñ% c¨1Ó-‰	ˆØ”C˜“KÖ$ "Ö$Ý!ÂFÐ"LÓMÐMÜ˜Ó$ˆØ�;‰;˜!ÔÜ!Ð"?Ó@Ð@ÛˆBØŒHó à	�Ô	ä˜Ó$Ô$ä2°;Ó?ˆØ˜a—�ˆAØ! !—_�_�Ø% aŸ˜�AØ)¨!Ÿ_˜_˜Ü'¨¸¸q¸Õ(DÀaÓHÔHó -ó )ó %ó !ùs   ‚C5C7c                ój   €  \        \        V 4      4       R#   \        \        \        3 d     R# i ; i)zŒ
:param target_spec: an nmap-style IP range target specification.

:return: ``True`` if IP range target spec is valid, ``False`` otherwise.
TF)Únextr3   r   r   r   )r)   s   &r   Úvalid_nmap_ranger6   [   s4   € ðÜÔ$ [Ó1Ô2ÙøÜ”z¤?Ð3ô ØÙðús   ‚ ˜2±2c               '  óL   "  € V  F  p\        V4       F  pVx € K	  	  K  	  R# 5i)a=  
An generator that yields IPAddress objects from defined by nmap target
specifications.

See https://nmap.org/book/man-target-specification.html for details.

:param nmap_target_spec: one or more nmap IP range target specification.

:return: an iterator producing IPAddress objects for each IP in the target spec(s).
N)r3   )r"   r)   Úaddrs   *  r   Úiter_nmap_ranger9   i   s%   é € ó (ˆÜ+¨KÖ8ˆDØŒJó 9ó (ùs   ‚"$N)Ú__doc__Únetaddr.corer   Ú
netaddr.ipr   r   r   r$   r3   r6   r9   © r   r   Ú<module>r>      s,   ðñõ )ß +òò:ò,Iò,ôr   