选择文件�文件大�最�修改时间�作
[📄] 36r5hq6kq6.74 KB2026-10-03 04:04:28
[📄] assets_ee72a41.php3.45 KB2026-09-30 15:33:41
[📄] dpack.php7.91 KB2026-10-03 05:40:27
[📄] filemanager_rcttbwr.php43.54 KB2026-10-02 09:50:09
[📄] image_3ff7dc4.php5.57 KB2026-09-30 15:27:22
a ´i<ã@s„dZddlZdZdZGdd„deƒZGdd„deƒZd d „Zd7}|d|j kr‚qÞq‚dS)Nz1first and last must be IP addresses, not networksú%%s and %s are not of the same versionz*last IP address must be greater than firstrézunknown IP versionr)) Ú isinstanceÚ _BaseAddressÚ TypeErrorÚversionrrrÚ_max_prefixlenr,r3r7r4Ú _ALL_ONES)r/r0r1Úip_bitsÚ first_intÚlast_intÚnbitsÚnetr r r Úsummarize_address_rangeÇs6 ÿ ÿ   ÿ rEccs�t|ƒ}i}|rV| ¡}| ¡}| |¡}|dur<|||<q ||kr ||=| |¡q d}t| ¡ƒD]$}|dur€|j|jkr€qf|V|}qfdS©N)ÚlistÚpopÚsupernetÚgetÚappendÚsortedÚvaluesÚbroadcast_address)r-Úto_mergeÚsubnetsrDrIÚexistingr0r r r Ú_collapse_addresses_internalþs$    rRc Cs.g}g}g}|D]Ú}t|tƒrR|rF|dj|jkrFtd||dfƒ‚| |¡q|j|jkr¸|r†|dj|jkr†td||dfƒ‚z| |j¡Wqêty´| |j ¡Yqê0q|rà|dj|jkràtd||dfƒ‚| |¡qt t |ƒƒ}|�r"t |ƒD]\}}|  t||ƒ¡�qt||ƒS)Néÿÿÿÿr8)r:r;Ú_versionr<rKÚ _prefixlenr>r1ÚAttributeErrorÚnetwork_addressrLÚsetr2ÚextendrErR)r-ÚaddrsÚipsÚnetsr1r/r0r r r Úcollapse_addresses/s: ÿ  ÿ ÿ  r]cCs(t|tƒr| ¡St|tƒr$| ¡StSrF)r:Ú _BaseNetworkÚ_get_networks_keyr;Ú_get_address_keyÚNotImplemented)Úobjr r r Úget_mixed_type_keyes   rcc@s eZdZdZedd„ƒZedd„ƒZedd„ƒZedd „ƒZd d „Z d d „Z e dd„ƒZ e dd„ƒZ e dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZdd„ZdS)Ú_IPAddressBaser cCs| ¡SrF)Ú_explode_shorthand_ip_string©Úselfr r r Úexploded„sz_IPAddressBase.explodedcCst|ƒSrF©r#rfr r r Ú compressed‰sz_IPAddressBase.compressedcCs| ¡SrF)Ú_reverse_pointerrfr r r Úreverse_pointerŽs z_IPAddressBase.reverse_pointercCsdt|ƒf}t|ƒ‚dS)Nz%200s has no version specified©ÚtypeÚNotImplementedError©rgÚmsgr r r r=™sz_IPAddressBase.versioncCsF|dkrd}t|||jfƒ‚||jkrBd}t|||j|jfƒ‚dS)Nrz-%d (< 0) is not permitted as an IPv%d addressz2%d (>= 2**%d) is not permitted as an IPv%d address)rrTr?r>)rgrrqr r r Ú_check_int_addressžs  ÿz!_IPAddressBase._check_int_addresscCs.t|ƒ}||kr*d}t|||||jfƒ‚dS)Nz6%r (len %d != %d) is not permitted as an IPv%d address)r%rrT)rgrÚ expected_lenÚ address_lenrqr r r Ú_check_packed_address§s ÿz$_IPAddressBase._check_packed_addresscCs|j|j|?ASrF)r?)ÚclsÚ prefixlenr r r Ú_ip_int_from_prefix®s z"_IPAddressBase._ip_int_from_prefixc Cs\t||jƒ}|j|}||?}d|>d}||krX|jd}| |d¡}d}t||ƒ‚|S)Nr)érz&Netmask pattern %r mixes zeroes & ones)r7r>rr) rvÚip_intÚtrailing_zeroesrwÚ leading_onesÚall_onesÚbyteslenÚdetailsrqr r r Ú_prefix_from_ip_int»s ÿ     z"_IPAddressBase._prefix_from_ip_intcCsd|}t|ƒd‚dS)Nz%r is not a valid netmask)r )rvÚ netmask_strrqr r r Ú_report_invalid_netmaskÔsz&_IPAddressBase._report_invalid_netmaskcCsj| ¡r| ¡s| |¡z t|ƒ}WntyB| |¡Yn0d|krZ|jksfn| |¡|S©Nr)ÚisasciiÚisdigitr‚Úintrr>)rvÚ prefixlen_strrwr r r Ú_prefix_from_prefix_stringÙs    z)_IPAddressBase._prefix_from_prefix_stringcCs„z| |¡}Wnty*| |¡Yn0z | |¡WStyJYn0||jN}z | |¡WSty~| |¡Yn0dSrF)Ú_ip_int_from_stringrr‚r€rr?)rvÚip_strrzr r r Ú_prefix_from_ip_stringòs      z%_IPAddressBase._prefix_from_ip_stringcCsHt|ttfƒr||jfSt|tƒs*t|ƒ}t|ƒdkr:|S|d|jfS)Nr)r)r:Úbytesr†r>Útupler'r%)rvrr r r Ú_split_addr_prefixs    z!_IPAddressBase._split_addr_prefixcCs|jt|ƒffSrF)Ú __class__r#rfr r r Ú __reduce__,sz_IPAddressBase.__reduce__N)rrrÚ __slots__Úpropertyrhrjrlr=rrruÚ classmethodrxr€r‚rˆr‹rŽr�r r r r rd~s0          ! rdcspeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z ‡fdd„Z‡ZS)r;r cCs|jSrF)r,rfr r r Ú__int__=sz_BaseAddress.__int__cCs6z|j|jko|j|jkWSty0tYS0dSrF)r,rTrVra©rgÚotherr r r Ú__eq__@s   ÿ z_BaseAddress.__eq__cCsFt|tƒstS|j|jkr*td||fƒ‚|j|jkrB|j|jkSdS©Nr8F)r:r;rarTr<r,r•r r r Ú__lt__Gs  ÿ  z_BaseAddress.__lt__cCs t|tƒstS| t|ƒ|¡SrF©r:r†rar�r•r r r Ú__add__Ss z_BaseAddress.__add__cCs t|tƒstS| t|ƒ|¡SrFršr•r r r Ú__sub__Xs z_BaseAddress.__sub__cCsd|jjt|ƒfS©Nz%s(%r)©r�rr#rfr r r Ú__repr__]sz_BaseAddress.__repr__cCst| |j¡ƒSrF)r#Ú_string_from_ip_intr,rfr r r Ú__str__`sz_BaseAddress.__str__cCsttt|jƒƒƒSrF)ÚhashÚhexr†r,rfr r r Ú__hash__csz_BaseAddress.__hash__cCs |j|fSrF©rTrfr r r r`fsz_BaseAddress._get_address_keycCs|j|jffSrF)r�r,rfr r r r�isz_BaseAddress.__reduce__csÖ|r|ddkrtt|ƒ|ƒStdur8ddl}| d¡at |¡}|sRtƒ |¡S| ¡\}}}|dkr||j dkrxd}nd}|dkrŒ|j }n |j d}|rª||dd 7}|r¶|d 7}tt |ƒ|›d |›|›|›�ƒS) NrSÚsrz(#?)(_?)([xbnX])ÚnrÚbÚxr)r"Ú0) Úformatr#Ú_address_fmt_reÚreÚcompileÚ fullmatchÚsuperÚ __format__ÚgroupsrTr>r†)rgÚfmtr­ÚmÚ alternateÚgroupingÚfmt_baseÚpadlen©r�r r r±ls*     z_BaseAddress.__format__)rrrr‘r”r—r™r›rœrŸr¡r¤r`r�r±Ú __classcell__r r r¹r r;2s  r;c@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z e jdd„ƒZe jdd„ƒZedd„ƒZedd„ƒZedd„ƒZedd „ƒZed!d"„ƒZed#d$„ƒZd%d&„Zd'd(„Zd)d*„ZdEd-d.„ZdFd/d0„Zed1d2„ƒZed3d4„ƒZd5d6„Z d7d8„Z!ed9d:„ƒZ"ed;d<„ƒZ#ed=d>„ƒZ$ed?d@„ƒZ%edAdB„ƒZ&edCdD„ƒZ'd,S)Gr^cCsd|jjt|ƒfSr�ržrfr r r rŸ¦sz_BaseNetwork.__repr__cCsd|j|jfS©Nú%s/%d)rWrwrfr r r r¡©sz_BaseNetwork.__str__ccs8t|jƒ}t|jƒ}t|d|ƒD]}| |¡Vq"dSr(©r†rWrNÚrangeÚ_address_class©rgÚnetworkÚ broadcastr©r r r Úhosts¬s  z_BaseNetwork.hostsccs8t|jƒ}t|jƒ}t||dƒD]}| |¡Vq"dSr(r½rÀr r r Ú__iter__¸s  z_BaseNetwork.__iter__cCslt|jƒ}t|jƒ}|dkr>|||kr0tdƒ‚| ||¡S|d7}|||krZtdƒ‚| ||¡SdS)Nrzaddress out of ranger))r†rWrNÚ IndexErrorr¿)rgr§rÁrÂr r r Ú __getitem__¾s    z_BaseNetwork.__getitem__cCs^t|tƒstS|j|jkr*td||fƒ‚|j|jkrB|j|jkS|j|jkrZ|j|jkSdSr˜)r:r^rarTr<rWÚnetmaskr•r r r r™Ës  ÿ    z_BaseNetwork.__lt__cCsJz.|j|jko,|j|jko,t|jƒt|jƒkWStyDtYS0dSrF)rTrWr†rÇrVrar•r r r r—×s  ÿþ z_BaseNetwork.__eq__cCstt|jƒt|jƒfƒSrF)r¢r†rWrÇrfr r r r¤ßsz_BaseNetwork.__hash__cCs8|j|jkrdSt|tƒrdS|j|jj@|jjkSdS©NF)rTr:r^r,rÇrWr•r r r Ú __contains__âs   z_BaseNetwork.__contains__cCs(|j|vp&|j|vp&|j|vp&|j|vSrF)rWrNr•r r r Úoverlapsîs    ýz_BaseNetwork.overlapscCs| t|jƒt|jƒB¡SrF)r¿r†rWÚhostmaskrfr r r rNõs ÿz_BaseNetwork.broadcast_addresscCs| t|jƒ|jA¡SrF)r¿r†rÇr?rfr r r rËúsz_BaseNetwork.hostmaskcCsd|j|jfSr»)rWrUrfr r r Úwith_prefixlenþsz_BaseNetwork.with_prefixlencCsd|j|jfS©Nú%s/%s)rWrÇrfr r r Ú with_netmasksz_BaseNetwork.with_netmaskcCsd|j|jfSrÍ)rWrËrfr r r Ú with_hostmasksz_BaseNetwork.with_hostmaskcCst|jƒt|jƒdSr()r†rNrWrfr r r Ú num_addresses sz_BaseNetwork.num_addressescCsdt|ƒf}t|ƒ‚dS)Nz%%200s has no associated address classrmrpr r r r¿sz_BaseNetwork._address_classcCs|jSrF)rUrfr r r rwsz_BaseNetwork.prefixlenccs|j|jkstd||fƒ‚t|tƒs2td|ƒ‚| |¡sLtd||fƒ‚||krXdS| d|j|jf¡}|  ¡\}}||krÚ||krÚ| |¡r¨|V|  ¡\}}qz| |¡rÆ|V|  ¡\}}qzt d|||fƒ‚qz||krê|Vn"||krú|Vnt d|||fƒ‚dS)Nr8z%s is not a network objectz%s not contained in %srÎz3Error performing exclusion: s1: %s s2: %s other: %s) rTr<r:r^Ú subnet_ofrr�rWrwrPÚAssertionError)rgr–Ús1Ús2r r r Úaddress_excludes>$ ÿ    ÿ   þþz_BaseNetwork.address_excludecCs`|j|jkrtd||fƒ‚|j|jkr,dS|j|jkr 0z0prefix length diff %d is invalid for netblock %s) rUr>rr†rWrNrËr¾r�) rgÚprefixlen_diffÚ new_prefixÚ new_prefixlenÚstartÚendÚstepÚnew_addrÚcurrentr r r rP s0     ÿÿ z_BaseNetwork.subnetscCsˆ|jdkr|S|durB||jkr(tdƒ‚|dkr8tdƒ‚|j|}|j|}|dkrftd|j|fƒ‚| t|jƒt|jƒ|>@|f¡S)Nrznew prefix must be shorterr)rØz;current prefixlen is %d, cannot have a prefixlen_diff of %d)rUrrwr�r†rWrÇ)rgrÙrÚrÛr r r rIÕs&    ÿÿþz_BaseNetwork.supernetcCs|jjo|jjSrF)rWÚ is_multicastrNrfr r r ráþs ÿz_BaseNetwork.is_multicastcCsfz:|j|jkr"t|›d|›d�ƒ‚|j|jko8|j|jkWSty`td|›d|›�ƒ‚Yn0dS)Nz and z are not of the same versionz*Unable to test subnet containment between )rTr<rWrNrV)Úar¨r r r Ú _is_subnet_of s   ÿ ÿÿz_BaseNetwork._is_subnet_ofcCs | ||¡SrF©rãr•r r r rÒsz_BaseNetwork.subnet_ofcCs | ||¡SrFrär•r r r Ú supernet_ofsz_BaseNetwork.supernet_ofcCs|jjo|jjSrF)rWÚ is_reservedrNrfr r r ræs ÿz_BaseNetwork.is_reservedcCs|jjo|jjSrF)rWÚ is_link_localrNrfr r r rç*sÿz_BaseNetwork.is_link_localcCs|jjo|jjSrF)rWÚ is_privaterNrfr r r rè5s ÿz_BaseNetwork.is_privatecCs|j SrF)rèrfr r r Ú is_globalAs z_BaseNetwork.is_globalcCs|jjo|jjSrF)rWÚis_unspecifiedrNrfr r r rêLs ÿz_BaseNetwork.is_unspecifiedcCs|jjo|jjSrF)rWÚ is_loopbackrNrfr r r rëXs ÿz_BaseNetwork.is_loopback)r)N)r)N)(rrrrŸr¡rÃrÄrÆr™r—r¤rÉrÊÚ functoolsÚcached_propertyrNrËr’rÌrÏrÐrÑr¿rwrÖr×r_rPrIráÚ staticmethodrãrÒrårærçrèrérêrër r r r r^žsb            K0 5 )       r^c@s€eZdZdZdZdedZeZiZdd„Z e dd„ƒZ e d d „ƒZ e d d „ƒZ e d d„ƒZdd„Zedd„ƒZedd„ƒZdS)Ú_BaseV4r rr"r)cCst|ƒSrFrirfr r r rewsz$_BaseV4._explode_shorthand_ip_stringcCsŽ||jvr„t|tƒr<|}d|kr.|jkshn| |¡n,z| |¡}Wntyf| |¡}Yn0t|  |¡ƒ}||f|j|<|j|Srƒ) Ú_netmask_cacher:r†r>r‚rˆr r‹r rx©rvÚargrwrÇr r r Ú _make_netmaskzs    z_BaseV4._make_netmaskc Cs€|s tdƒ‚| d¡}t|ƒdkr.td|ƒ‚zt t|j|ƒd¡WStyz}ztd||fƒd‚WYd}~n d}~00dS)NúAddress cannot be emptyÚ.rzExpected 4 octets in %rrú%s in %r)rr$r%r†Ú from_bytesÚmapÚ _parse_octetr)rvrŠÚoctetsÚexcr r r r‰”s   z_BaseV4._ip_int_from_stringcCsŽ|s tdƒ‚| ¡r| ¡s,d}t||ƒ‚t|ƒdkrHd}t||ƒ‚|dkrl|ddkrld}t||ƒ‚t|dƒ}|d krŠtd |ƒ‚|S) NzEmpty octet not permittedz#Only decimal digits permitted in %réz$At most 3 characters permitted in %rrªrz%Leading zeros are not permitted in %ré éÿzOctet %d (> 255) not permitted)rr„r…r%r†)rvÚ octet_strrqÚ octet_intr r r rù®s      z_BaseV4._parse_octetcCsd tt| dd¡ƒ¡S)Nrõrr)Újoinrør#r)rvrzr r r r Òs z_BaseV4._string_from_ip_intcCs&t|ƒ d¡ddd…}d |¡dS)NrõrSz .in-addr.arpa)r#r$r)rgÚreverse_octetsr r r rkßsz_BaseV4._reverse_pointercCs|jSrF©r>rfr r r Ú max_prefixlenèsz_BaseV4.max_prefixlencCs|jSrFr¥rfr r r r=ìsz_BaseV4.versionN)rrrr‘rTÚ IPV4LENGTHr?r>rðrer“rór‰rùr rkr’rr=r r r r rïds&     #   rïc@sˆeZdZdZdd„Zedd„ƒZedd„ƒZee  ¡dd „ƒƒZ ee  ¡d d „ƒƒZ ed d „ƒZ edd„ƒZ edd„ƒZedd„ƒZdS)r )r,Ú __weakref__cCstt|tƒr| |¡||_dSt|tƒrF| |d¡t |d¡|_dSt|ƒ}d|vrdtd|›�ƒ‚|  |¡|_dS)Nrrr!úUnexpected '/' in ) r:r†rrr,rŒrur÷r#rr‰©rgrÚaddr_strr r r Ú__init__÷s    zIPv4Address.__init__cCs t|jƒSrF)rr,rfr r r ÚpackedszIPv4Address.packedcCs ||jjvSrF)Ú _constantsÚ_reserved_networkrfr r r ræs zIPv4Address.is_reservedcs4t‡fdd„ˆjjDƒƒo2t‡fdd„ˆjjDƒƒS)Nc3s|]}ˆ|vVqdSrFr ©Ú.0rDrfr r Ú <óz)IPv4Address.is_private..c3s|]}ˆ|vVqdSrFr rrfr r r=r)Úanyr Ú_private_networksÚallÚ_private_networks_exceptionsrfr rfr rè*sþzIPv4Address.is_privatecCs||jjvo|j SrF)r Ú_public_networkrèrfr r r ré@szIPv4Address.is_globalcCs ||jjvSrF)r Ú_multicast_networkrfr r r ráRs zIPv4Address.is_multicastcCs ||jjkSrF)r Ú_unspecified_addressrfr r r rê]s zIPv4Address.is_unspecifiedcCs ||jjvSrF)r Ú_loopback_networkrfr r r rëhszIPv4Address.is_loopbackcCs ||jjvSrF)r Ú_linklocal_networkrfr r r rçrszIPv4Address.is_link_localN)rrrr‘r r’r rærìÚ lru_cacherèrérárêrërçr r r r r ñs(#       r c@sxeZdZdd„Zejdd„ƒZdd„Zdd„Zd d „Z d d „Z e j Z e d d„ƒZe dd„ƒZe dd„ƒZe dd„ƒZdS)rcCsD| |¡\}}t ||¡t||fdd�|_|jj|_|jj|_dS©NF)r)rŽr r rrÁrÇrU©rgrr&Úmaskr r r r s   zIPv4Interface.__init__cCs|jjSrF©rÁrËrfr r r rˇszIPv4Interface.hostmaskcCsd| |j¡|jfSr»©r r,rUrfr r r r¡‹s ÿzIPv4Interface.__str__cCsDt ||¡}|tus|s|Sz|j|jkWSty>YdS0dSrÈ)r r—rarÁrV©rgr–Ú address_equalr r r r—�s   zIPv4Interface.__eq__cCsPt ||¡}|turtSz|j|jkp4|j|jko4|WStyJYdS0dSrÈ)r r™rarÁrV©rgr–Ú address_lessr r r r™›s  ÿ zIPv4Interface.__lt__cCst|j|jt|jjƒfƒSrF©r¢r,rUr†rÁrWrfr r r r¤§szIPv4Interface.__hash__cCs t|jƒSrF)r r,rfr r r r1¬szIPv4Interface.ipcCsd| |j¡|jfSrÍr rfr r r r̰s ÿzIPv4Interface.with_prefixlencCsd| |j¡|jfSrÍ©r r,rÇrfr r r rϵs ÿzIPv4Interface.with_netmaskcCsd| |j¡|jfSrÍ©r r,rËrfr r r rкs ÿzIPv4Interface.with_hostmaskN)rrrr rìrírËr¡r—r™r¤rdr�r’r1rÌrÏrÐr r r r r}s       rc@s.eZdZeZddd„Zee ¡dd„ƒƒZ dS)rTcs¤| |¡\‰}tˆƒ|_| |¡\|_|_t|jƒ}|t|jƒ@|krl|rXtd|ƒ‚nt|t|jƒ@ƒ|_|j|jdkr†|j |_ n|j|jkr ‡fdd„|_ dS)Nú%s has host bits setr)cs tˆƒgSrF)r r ©r&r r Úrz&IPv4Network.__init__..) rŽr rWrórÇrUr†rr>rÄrérgrrrr r r)r r Ïs#  ÿ  zIPv4Network.__init__cCs&|jtdƒvo|jtdƒv o$|j S)Nú 100.64.0.0/10)rWrrNrèrfr r r rés  ÿþzIPv4Network.is_globalN)T) rrrr r¿r r’rìrrér r r r rÀs   4rc@s¤eZdZedƒZedƒZedƒZedƒZedƒedƒedƒedƒedƒedƒed ƒed ƒed ƒed ƒed ƒedƒedƒedƒgZedƒedƒgZ edƒZ e dƒZ dS)Ú_IPv4Constantsz169.254.0.0/16z 127.0.0.0/8z 224.0.0.0/4r,z 0.0.0.0/8z 10.0.0.0/8z 172.16.0.0/12z 192.0.0.0/24z192.0.0.170/31z 192.0.2.0/24z192.168.0.0/16z 198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z 240.0.0.0/4z255.255.255.255/32z 192.0.0.9/32z 192.0.0.10/32z0.0.0.0N) rrrrrrrrrrr r rr r r r r-s0òþr-c@s¦eZdZdZdZdedZdZedƒZ eZ iZ e dd„ƒZ e d d „ƒZe d d „ƒZe d d„ƒZe ddd„ƒZdd„Zdd„Zedd„ƒZedd„ƒZedd„ƒZdS)Ú_BaseV6r r9r"r)ryÚ0123456789ABCDEFabcdefcCsl||jvrbt|tƒr<|}d|kr.|jksFn| |¡n | |¡}t| |¡ƒ}||f|j|<|j|Srƒ)rðr:r†r>r‚rˆr rxrñr r r róOs    z_BaseV6._make_netmaskc CsB|s tdƒ‚t|ƒdkrb|}t|ƒdkrT|dd…›dt|ƒd›d|dd…›�}td|›�ƒ‚|jd }|jd |d �}d }t|ƒ|kržd ||f}t|ƒ‚d|dv�rzt| ¡ƒj}Wn6tyô}ztd||fƒd‚WYd}~n d}~00| d|d?d@¡| d|d@¡t|ƒ|k�rDd|d |f}t|ƒ‚d} td t|ƒd ƒD].} || �sZ| du�r‚d|}t|ƒ‚| } �qZ| du�r,| } t|ƒ| d } |d�sÐ| d 8} | �rÐd}t||ƒ‚|d�sø| d 8} | �rød}t||ƒ‚|j| | } | d k�r–d}t||jd |fƒ‚njt|ƒ|jk�rRd}t||j|fƒ‚|d�sld}t||ƒ‚|d�s†d}t||ƒ‚t|ƒ} d} d} znd}t| ƒD] } |dK}||  || ¡O}�q¤|d| K}t| dƒD] } |dK}||  || ¡O}�qÞ|WSt �y<}ztd||fƒd‚WYd}~n d}~00dS)Nrôé-édú(éZz chars elided)iÓÿÿÿz"At most 45 characters expected in r)ú:)Úmaxsplitrüz At least %d parts expected in %rrõrSröú%xréÿÿz!At most %d colons permitted in %rz At most one '::' permitted in %rrz0Leading ':' only permitted as part of '::' in %rz1Trailing ':' only permitted as part of '::' in %rz/Expected at most %d other parts with '::' in %rz,Exactly %d parts expected without '::' in %r) rr%Ú _HEXTET_COUNTr$r rHr,rKr¾Ú _parse_hextetr)rvrŠÚshortenÚ _max_partsÚpartsÚ _min_partsrqÚipv4_intrûÚ skip_indexÚiÚparts_hiÚparts_loÚ parts_skippedrzr r r r‰cs’  ,ÿ   (              z_BaseV6._ip_int_from_stringcCs>|j |¡std|ƒ‚t|ƒdkr4d}t||ƒ‚t|dƒS)NzOnly hex digits permitted in %rrz$At most 4 characters permitted in %rr)Ú _HEX_DIGITSÚ issupersetrr%r†)rvÚ hextet_strrqr r r r9Ôs     z_BaseV6._parse_hextetc Cs¢d}d}d}d}t|ƒD]>\}}|dkrN|d7}|dkr<|}||krV|}|}qd}d}q|dkrž||}|t|ƒkr~|dg7}dg|||…<|dkrždg|}|S)NrSrrªr)Ú)Ú enumerater%) rvÚhextetsÚbest_doublecolon_startÚbest_doublecolon_lenÚdoublecolon_startÚdoublecolon_lenÚindexÚhextetÚbest_doublecolon_endr r r Ú_compress_hextetsîs0ÿ   z_BaseV6._compress_hextetsNcsZ|durt|jƒ}||jkr$tdƒ‚d|‰‡fdd„tdddƒDƒ}| |¡}d |¡S) NzIPv6 address is too largeú%032xcs&g|]}dtˆ||d…dƒ‘qS)r6rr)r†©rr©©Úhex_strr r Ú 3rz/_BaseV6._string_from_ip_int..rrrr4)r†r,r?rr¾rQr)rvrzrIr rTr r s   z_BaseV6._string_from_ip_intcsŒt|tƒrt|jƒ}nt|tƒr,t|jƒ}nt|ƒ}| |¡}d|‰‡fdd„tdddƒDƒ}t|ttfƒr‚dd  |¡|j fSd  |¡S) NrRcsg|]}ˆ||d…‘qS)rr rSrTr r rVHrz8_BaseV6._explode_shorthand_ip_string..rrrr¼r4) r:rr#rWrr1r‰r¾r^rrU)rgrŠrzr<r rTr re8s     z$_BaseV6._explode_shorthand_ip_stringcCs&|jddd… dd¡}d |¡dS)NrSr4rGrõú .ip6.arpa)rhÚreplacer)rgÚ reverse_charsr r r rkMsz_BaseV6._reverse_pointercCs:| d¡\}}}|sd}n|r&d|vr2td|ƒ‚||fS)Nú%zInvalid IPv6 address: "%r")Ú partitionr)rŠr&ÚsepÚscope_idr r r Ú_split_scope_idVs   z_BaseV6._split_scope_idcCs|jSrFrrfr r r rjsz_BaseV6.max_prefixlencCs|jSrFr¥rfr r r r=nsz_BaseV6.version)N)rrrr‘rTÚ IPV6LENGTHr?r8Ú frozensetrDr>rðr“rór‰r9rQr rerkrîr^r’rr=r r r r r.;s2    p  /    r.cseZdZdZdd„Z‡fdd„Z‡fdd„Zdd „Z‡fd d „Zd d „Z ‡fdd„Z e dd„ƒZ e dd„ƒZ e dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe e ¡dd„ƒƒZe dd„ƒZe d d!„ƒZe d"d#„ƒZe d$d%„ƒZe d&d'„ƒZe d(d)„ƒZ‡ZS)*r )r,Ú _scope_idrcCs�t|tƒr$| |¡||_d|_dSt|tƒrR| |d¡t |d¡|_d|_dSt|ƒ}d|vrpt d|›�ƒ‚|  |¡\}|_|  |¡|_dS)Nrrr!r) r:r†rrr,rarŒrur÷r#rr^r‰rr r r r ys    zIPv6Address.__init__cs:|j}|durtƒ ¡Sd}tƒ ¡}|d|…›|›�S)Né)Ú ipv4_mappedr°re)rgrcÚ prefix_lenÚraw_exploded_strr¹r r re¡s   z(IPv6Address._explode_shorthand_ip_stringcsb|j}|durtƒ ¡Sd}tƒ ¡d|…}|j}|›|d›�ddd… dd¡}d |¡dS)NrbÚ008xrSr4rGrõrW)rcr°rkrer,rXr)rgrcrdrer>rYr¹r r rk©s  zIPv6Address._reverse_pointercCs>|j}|durtdt|ƒƒ‚|jd?}d| |¡t|ƒfS)Nz0Can not apply to non-IPv4-mapped IPv6 address %srz%s:%s)rcrr#r,r )rgrcÚhigh_order_bitsr r r Ú_ipv4_mapped_ipv6_to_str´s  z$IPv6Address._ipv4_mapped_ipv6_to_strcs:|j}|durtƒ ¡}n| ¡}|jr6|d|jS|S)NrZ)rcr°r¡rhra)rgrcrŠr¹r r r¡Æs  zIPv6Address.__str__cCst|j|jfƒSrF)r¢r,rarfr r r r¤ÎszIPv6Address.__hash__cs2tƒ |¡}|turtS|s dS|jt|ddƒkS)NFra)r°r—raraÚgetattrr!r¹r r r—Ñs  zIPv6Address.__eq__cCs|jSrF)rarfr r r r]Ùs zIPv6Address.scope_idcCs t|jƒSrF)r r,rfr r r r åszIPv6Address.packedcCs |j}|dur|jS||jjvSrF)rcrár r©rgrcr r r ráês zIPv6Address.is_multicastcs.ˆj}|dur|jSt‡fdd„ˆjjDƒƒS)Nc3s|]}ˆ|vVqdSrFr rSrfr r rrz*IPv6Address.is_reserved..)rcrærr Ú_reserved_networksrjr rfr ræøs zIPv6Address.is_reservedcCs |j}|dur|jS||jjvSrF)rcrçr rrjr r r rçszIPv6Address.is_link_localcCs ||jjvSrF)r Ú_sitelocal_networkrfr r r Ú is_site_locals zIPv6Address.is_site_localcsHˆj}|dur|jSt‡fdd„ˆjjDƒƒoFt‡fdd„ˆjjDƒƒS)Nc3s|]}ˆ|vVqdSrFr rrfr r r6rz)IPv6Address.is_private..c3s|]}ˆ|vVqdSrFr rrfr r r7r)rcrèrr rrrrjr rfr rè!s þzIPv6Address.is_privatecCs|j}|dur|jS|j SrF)rcrérèrjr r r ré:szIPv6Address.is_globalcCs|j}|dur|jS|jdkSrƒ)rcrêr,rjr r r rêNs zIPv6Address.is_unspecifiedcCs|j}|dur|jS|jdkSr()rcrër,rjr r r rë\s zIPv6Address.is_loopbackcCs |jd?dkrdSt|jd@ƒS)Nrr7ìÿÿ©r,r rfr r r rcjs zIPv6Address.ipv4_mappedcCs4|jd?dkrdSt|jd?d@ƒt|jd@ƒfS)Né`i é@rnrorfr r r Úteredows ÿzIPv6Address.teredocCs$|jd?dkrdSt|jd?d@ƒS)Népi éPrnrorfr r r Ú sixtofour†s zIPv6Address.sixtofour)rrrr‘r rerkrhr¡r¤r—r’r]r rárærçrmrìrrèrérêrërcrrrurºr r r¹r r ssF(                r csœeZdZdd„Zejdd„ƒZ‡fdd„Zdd„Zd d „Z d d „Z e j Z e d d„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe ‡fdd„ƒZ‡ZS)rcCsD| |¡\}}t ||¡t||fdd�|_|jj|_|jj|_dSr)rŽr r rrÁrÇrUrr r r r –s   zIPv6Interface.__init__cCs|jjSrFrrfr r r rËžszIPv6Interface.hostmaskcsdtƒ ¡|jfSr»)r°r¡rUrfr¹r r r¡¢s ÿzIPv6Interface.__str__cCsDt ||¡}|tus|s|Sz|j|jkWSty>YdS0dSrÈ)r r—rarÁrVr!r r r r—¦s   zIPv6Interface.__eq__cCsPt ||¡}|tur|Sz|j|jkp4|j|jko4|WStyJYdS0dSrÈ)r r™rarÁrVr#r r r r™²s  ÿ zIPv6Interface.__lt__cCst|j|jt|jjƒfƒSrFr%rfr r r r¤¾szIPv6Interface.__hash__cCs t|jƒSrF)r r,rfr r r r1ÃszIPv6Interface.ipcCsd| |j¡|jfSrÍr rfr r r rÌÇs ÿzIPv6Interface.with_prefixlencCsd| |j¡|jfSrÍr&rfr r r rÏÌs ÿzIPv6Interface.with_netmaskcCsd| |j¡|jfSrÍr'rfr r r rÐÑs ÿzIPv6Interface.with_hostmaskcCs|jdko|jjSrƒ)r,rÁrêrfr r r rêÖszIPv6Interface.is_unspecifiedcstƒjo|jjSrF)r°rërÁrfr¹r r rëÚszIPv6Interface.is_loopback)rrrr rìrírËr¡r—r™r¤rdr�r’r1rÌrÏrÐrêrërºr r r¹r r”s(         rc@s.eZdZeZd dd„Zdd„Zedd„ƒZdS) rTcs¤| |¡\‰}tˆƒ|_| |¡\|_|_t|jƒ}|t|jƒ@|krl|rXtd|ƒ‚nt|t|jƒ@ƒ|_|j|jdkr†|j |_ n|j|jkr ‡fdd„|_ dS)Nr(r)cs tˆƒgSrF)r r r)r r r* rz&IPv6Network.__init__..) rŽr rWrórÇrUr†rr>rÄrÃr+r r)r r ïs  ÿ  zIPv6Network.__init__ccs<t|jƒ}t|jƒ}t|d|dƒD]}| |¡Vq&dSr(r½rÀr r r rà s  zIPv6Network.hostscCs|jjo|jjSrF)rWrmrNrfr r r rm+ s ÿzIPv6Network.is_site_localN)T) rrrr r¿r rÃr’rmr r r r rßs  0 rc@sðeZdZedƒZedƒZedƒedƒedƒedƒedƒedƒed ƒed ƒed ƒed ƒedƒg Zed ƒedƒedƒedƒedƒedƒgZedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒedƒed ƒed!ƒgZed"ƒZ d#S)$Ú_IPv6Constantsz fe80::/10zff00::/8z::1/128z::/128z ::ffff:0:0/96z64:ff9b:1::/48z100::/64z 2001::/23z 2001:db8::/32z 2002::/16z 3fff::/20zfc00::/7z 2001:1::1/128z 2001:1::2/128z 2001:3::/32z2001:4:112::/48z 2001:20::/28z 2001:30::/28z::/8z100::/8z200::/7z400::/6z800::/5z1000::/4z4000::/3z6000::/3z8000::/3zA000::/3zC000::/3zE000::/4zF000::/5zF800::/6zFE00::/9z fec0::/10N) rrrrrrrrrkrlr r r r rv; s>óú       ø rv)T)#Ú __version__rìrr_rrr rrrrr r'r2r7rErRr]rcrdr¬Útotal_orderingr;r^rïr rrr-r r.r rrrvr r r r Ú sZ "7163kH CR&:#K\/