
    h%'                       d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ i dddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2
Zd3d4d5Zd6d7d8d9d:d;d<d=d>d?	Z d@dAdBdCZ!dDdEdFdGZ"dHZ#i dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidji dkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddi ddddddddddddddddddddddddddddddddZ$ddgZ%d Z& G d de          Z' G d de          Z( G d de          Z) G d de          Z* G d de          Z+ G d de          Z, G d de          Z- G d de          Z. G d de          Z/ G d de          Z0dddŜZ1 G dƄ de          Z2 G dȄ de          Z3 G dʄ de          Z4 G d̄ de          Z5ddddќZ6 G d҄ de          Z7 G dԄ de          Z8 G dք de          Z9 G d؄ de          Z:ddd5Z;ddiZ< G d݄ de          Z=dDddZ> G d de          Z?ddd5Z@ddd5ZA G d de          ZB G d de          ZCddddGZD G d de          ZEdddZF G d de          ZG G d de          ZHdddddZId ZJ G d de          ZK G d de          ZL G d  de          ZM G d de          ZN G d de          ZO G d de          ZP G d d	e          ZQ G d
 de          ZR G d de          ZS G d de          ZT G d de          ZU G d de          ZV G d de          ZW G d de          ZX G d de          ZY G d de          ZZ G d de          Z[ G d de          Z\ddiZ] G d  d!e          Z^ G d" d#e          Z_ddiZ` G d$ d%e          Za G d& d'e          ZbddiZc G d( d)e          Zdi dd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCd6dDdEdFdGdHdIdJdKiZe G dL dMe          Zf G dN dOe          Zg G dP dQe          Zh G dR dSe          Zi G dT dUe          Zj eeejdVdWi            eeje)dX            eeje^dX            eeje_dX            eejeadX            eejebdX            eeje*dX            eejeCd
X            eejeEdX            eejeKdX            eejeLdX            eejeGdX            eejeHdYX            eejeMdX            eejehd X            eejeid"X            eeje/dZd[            eeje0dZd+[            ee/e+dZd[            ee0e-dZd+[            eeje2d\X            eeje3d]X            eeje4d^X            eeje5d_X            eeje7d`X            eejeddaX            eejegdbX            eeje8dkX            eeje9dX            eeje:dX            eeje=d$X            eeje?d&X            eejeBdcX           dS (d  z
HomePlugAV Layer for Scapy

Copyright (C) FlUxIuS (Sebastien Dudek)

HomePlugAV Management Message Type
Key (type value) : Description
    N)Packetbind_layers)BitFieldByteEnumField	ByteFieldConditionalField	EnumFieldFieldLenFieldIntField
LEIntFieldLELongFieldLEShortEnumFieldLEShortFieldMACFieldOUIFieldPacketListField
ShortFieldStrFixedLenFieldStrLenFieldX3BytesField
XByteField	XIntField
XLongFieldXShortField)Ether   z'Get Device/sw version Request'i  z$'Get Device/sw version Confirmation'i  z'Read MAC Memory Request'i	  z'Read MAC Memory Confirmation'i  z'Start MAC Request'i  z'Start MAC Confirmation'i  z'Get NVM Parameters Request'i  z!'Get NVM Parameters Confirmation'i  z'Reset Device Request'i  z'Reset Device Confirmation'i   z'Write Module Data Request'i$  z'Read Module Data Request'i%  z'Read Module Data Confirmation'i(  z"'Write Module Data to NVM Request'i)  z''Write Module Data to NVM Confirmation'i4  z'Sniffer Request'i5  z'Sniffer Confirmation'z'Sniffer Indicates'z'Network Information Request'z"'Network Information Confirmation'z'Loopback Request'z'Loopback Request Confirmation'z'Set Encryption Key Request'z)'Set Encryption Key Request Confirmation'z"'Read Configuration Block Request'z''Read Configuration Block Confirmation'z*'Embedded Host Action Required Indication')
6  8  9  H  I  P  Q  X  Y  b  z1.0z1.1r      Unknownz	'INT6000'z	'INT6300'z	'INT6400'z'AR7400'z'AR6405'z'QCA7450/QCA7420'z'QCA6410/QCA6411'z	'QCA7000')	r   r(                   !   "   z	'Station'z'Proxy coordinator'z'Central coordinator')r   r(   r*   z	'Success'z'Invalid Address'z'Invalid Length')r         Qualcommi  	VS_WR_MEMi  	VS_RSVD_1i  	VS_RSVD_2i,  	VS_WD_RPTi0  VS_LNK_STATSi<  	VS_RSVD_3i@  	VS_CP_RPTiD  VS_ARPCiT  VS_MFG_STRINGi\  VS_SET_SDRAMi`  VS_HOST_ACTIONih  VS_OP_ATTRIBUTESil  VS_ENET_SETTINGSip  VS_TONE_MAP_CHARit  VS_NW_INFO_STATSix  VS_SLAVE_MEMi|  VS_FAC_DEFAULTSi}  VS_FAC_DEFAULTS_CONFIRMi  VS_MULTICAST_INFOi  VS_CLASSIFICATIONi  VS_RX_TONE_MAP_CHARi  VS_SET_LED_BEHAVIORi  VS_WRITE_AND_EXECUTE_APPLETi  VS_MDIO_COMMANDi  VS_SLAVE_REGi  VS_BANDWIDTH_LIMITINGi  VS_SNID_OPERATIONi  VS_NN_MITIGATEi  VS_MODULE_OPERATIONi  VS_DIAG_NETWORK_PROBEi  VS_PL_LINK_STATUSi  VS_GPIO_STATE_CHANGEi  VS_CONN_ADDiĠ  VS_CONN_MODiȠ  VS_CONN_RELi̠  VS_CONN_INFOiР  VS_MULTIPORT_LNK_STAiܠ  VS_EM_ID_TABLEi  
VS_STANDBYi  VS_SLEEPSCHEDULEi  VS_SLEEPSCHEDULE_NOTIFICATIONi  VS_MICROCONTROLLER_DIAGi  VS_GET_PROPERTYi   VS_SET_PROPERTYi  VS_PHYSWITCH_MDIOi  VS_SELFTEST_ONETIME_CONFIGi  VS_SELFTEST_RESULTSi  VS_MDU_TRAFFIC_STATSi  VS_FORWARD_CONFIGi   VS_HYBRID_INFOr   c                     | j         dk    S )zG
        A fragmentation field condition
        TODO: To complete
    r(   versionpkts    \/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/homeplugav.pyFragmentCondrl      s    
 ;$    c                   ~    e Zd ZdZedk    re                    e            edde	           e
dded          gZdS )	MACManagementHeaderzMACManagementHeader r3   rh   r   HPtyper   <HN)__name__
__module____qualname__nameDefaultVendorHPAVTypeListupdateQualcommTypeListr   HPAVversionListr	   fields_desc rm   rk   ro   ro      s_        !D
"",--- =A??9Xv|TBBDKKKrm   ro   c                   ,    e Zd ZdZ edd          gZdS )	VendorMMEz
VendorMME OUIiR  N)rr   rs   rt   ru   r   r{   r|   rm   rk   r~   r~      s'        D8E8,,-KKKrm   r~   c                       e Zd Zd Z edde           edde           edddd	           edd
d            eddd            eddddd          gZ	dS )GetDeviceVersionStatusr   DeviceIDr.   
VersionLenNDeviceVersionBcount_offmts
   NoVersion c                     | j         S Nr   ri   s    rk   <lambda>zGetDeviceVersion.<lambda>   s
    Z]Zh rm   length_fromDeviceVersion_pads@                                                              c                     d| j         z
  S )N@   r   ri   s    rk   r   zGetDeviceVersion.<lambda>   s    tvy|  zH  uH rm   
UpgradableFalseTruer'   )
rr   rs   rt   ru   r   StatusCodesHPAVDeviceIDListr
   r   r{   r|   rm   rk   r   r      s        D =3<< =T3CDD =toSVWWW;0@NhNhiii;24Z  iH  iH  I  I  I =qg&2I2IJJLKKKrm   r   c                       e Zd Zd Zg ZdS )NetworkInformationRequestNrr   rs   rt   ru   r{   r|   rm   rk   r   r      s        &DKKKrm   r   c            	           e Zd ZdZdZ eddd           edd           edd	           ed
de           e	dd           edd	          gZ
d ZdS )NetworkInfoV10)
        Network Information Element
    NetworkInfo	NetworkID             ShortNetworkIDr   TerminalEIDr(   StationRoleCCoMACAdress00:00:00:00:00:00CCoTerminalEIDc                 
    d|fS Nrm   r|   selfps     rk   extract_paddingzNetworkInfoV10.extract_padding       Avrm   N)rr   rs   rt   __doc__ru   r   r   r   r   r   r{   r   r|   rm   rk   r   r      s          D##K1PRSTT:.55:mT22 =kBB8N,?@@:.557K    rm   r   c                       e Zd ZdZdZ edd           edd           edd           ed	d
           edd
          gZd ZdS )StationInfoV10)
        Station Information Element
    StationInfo
StationMACr   StationTerminalEIDr(   firstnodeMACff:ff:ff:ff:ff:ff	TXaverager   	RXaveragec                 
    d|fS r   r|   r   s     rk   r   zStationInfoV10.extract_padding   r   rm   N)	rr   rs   rt   r   ru   r   r   r{   r   r|   rm   rk   r   r      s          D8L*=>>:2D998N,?@@:k400:k400	2K    rm   r   c                       e Zd ZdZdZ eddd           edd           edd           ed	d
           edd           e	dde
           edd           edd
           edd          g	Zd ZdS )NetworkInfoV11r   r   r   r   r   
reserved_1r   r   r   r(   
reserved_2r   r   r   r   
reserved_3c                 
    d|fS r   r|   r   s     rk   r   zNetworkInfoV11.extract_padding  r   rm   N)rr   rs   rt   r   ru   r   r   r   r   r   r   r   r   r{   r   r|   rm   rk   r   r      s          D##K1PRSTT:lF33:.55:mT228L*55 =kBB8N,?@@:.55<h779K    rm   r   c                       e Zd ZdZdZ edd           edd           edd           ed	d
           edd           e	ddd           e	ddd           edd           edd           edd          g
Z
d ZdS )StationInfoV11r   r   r   r   r   r(   reserved_s2r   r   r   r   
RxCouplingr,   
TxCouplingreserved_s3r   reserved_s4c                 
    d|fS r   r|   r   s     rk   r   zStationInfoV11.extract_padding  r   rm   N)rr   rs   rt   r   ru   r   r   r   r   r   r{   r   r|   rm   rk   r   r     s          D8L*=>>:2D99<x888N,?@@<V448L!Q//8L!Q//:mT22<V44:mT22	4K    rm   r   c            	           e Zd ZdZdZ edd           edded            ed	d           ed
ded           gZ	dS )NetworkInfoConfirmationV10ze
        Network Information Confirmation following the MAC Management version 1.0  # noqa: E501
    NetworkInfoConfirmationLogicalNetworksNumberr(   NetworksInfos c                     | j         dz  S N   r   ri   s    rk   r   z#NetworkInfoConfirmationV10.<lambda>#      `c`y|~`~ rm   r   StationsNumberStationsInfosc                     | j         dz  S )N   r   ri   s    rk   r   z#NetworkInfoConfirmationV10.<lambda>%      `c`ruw`w rm   N)
rr   rs   rt   r   ru   r   r   r   r   r{   r|   rm   rk   r   r     s{          %D:5t<<"??BT~T~:.55"??BTwTwxxxzKKKrm   r   c                       e Zd ZdZdZ eddd           edd           edd	ed
            edd           eddd           edd	e	d           gZ
dS )NetworkInfoConfirmationV11z
        Network Information Confirmation following the MAC Management version 1.1  # noqa: E501
        This introduce few 'crazy' reserved bytes -> have fun!
    r   reserved_n1s     :  r-   r   r(   r   r   c                     | j         dz  S )N   r   ri   s    rk   r   z#NetworkInfoConfirmationV11.<lambda>0  r   rm   r   r   reserverd_s1s        r   c                     | j         dz  S )N   r   ri   s    rk   r   z#NetworkInfoConfirmationV11.<lambda>3  r   rm   N)rr   rs   rt   r   ru   r   r   r   r   r   r{   r|   rm   rk   r   r   (  s          %D##M3JANN:5t<<"??BT~T~:.55##N4KQOO"??BTwTwxxxzKKKrm   r   z'PIB Update Ready'z'Loader (Bootloader)')r*   r,   c                   2    e Zd ZdZd Z edde          gZdS )HostActionRequiredz2
        Embedded Host Action Required Indice
    ActionRequiredr*   N)rr   rs   rt   r   ru   r   ActionsListr{   r|   rm   rk   r   r   ;  s6           D =!14EEFKKKrm   r   c                   X    e Zd Zd Z edd           edd           edd          gZdS )LoopbackRequestDurationr(   reserved_l1LRlengthr   N)rr   rs   rt   ru   r   r   r{   r|   rm   rk   r   r   C  sG        D9Z..9]D11:j&113KKKrm   r   c                   Z    e Zd Zd Z edde           edd           edd          gZdS )LoopbackConfirmationr   r   r   r(   r   N)	rr   rs   rt   ru   r   r   r   r   r{   r|   rm   rk   r   r   K  sI        !D =3<<9Z..:j&113KKKrm   r   c            	           e Zd Zd Z edd           eddd           edd           edd           ed	dd          gZd
S )SetEncryptionKeyRequestEKSr   NMK                   r1   PayloadEncKeySelectDestinationMACr   DAKN)rr   rs   rt   ru   r   r   r   r{   r|   rm   rk   r   r   V  s|        $D:eT**##E$g$&( ( :3T::8,.ABB##E$g$&( ()KKKrm   r   SuccesszInvalid EKSzInvalid PKS)r   r1   r   c                   .    e Zd Zd Z edde          gZdS )SetEncryptionKeyConfirmationr   r   N)rr   rs   rt   ru   r   SetEncKey_Statusr{   r|   rm   rk   r   r   h  s*        )D =30@AABKKKrm   r   c                   .    e Zd Zd Z edde          gZdS )QUAResetFactoryConfirmr   r   Nrr   rs   rt   ru   r   r   r{   r|   rm   rk   r   r   q  s)        #D =3<<=KKKrm   r   c                       e Zd ZdZg ZdS )GetNVMParametersRequestzGet NVM Parameters RequestNr   r|   rm   rk   r   r   z  s        'DKKKrm   r   c                       e Zd ZdZ edde           edd           edd           edd	           ed
d          gZdS )GetNVMParametersConfirmationzGet NVM Parameters Confirmationr   r   NVMType   NVMPageSize   NVMBlockSizei   NVMMemorySizei   N)rr   rs   rt   ru   r   r   r   r{   r|   rm   rk   r   r     sg        ,D =3<<:i44:mZ88:nj99:oz::	<KKKrm   r   z
'Disabled'z	'Enabled'z	'Regular'c                   .    e Zd Zd Z edde          gZdS )SnifferRequestSnifferControlr   N)rr   rs   rt   ru   r   SnifferControlListr{   r|   rm   rk   r  r    s+        D =!138JKKLKKKrm   r  z'Invalid Control')r   r1   c                   .    e Zd Zd Z edde          gZdS )SnifferConfirmationr   r   Nr   r|   rm   rk   r  r    s)         D =3<<=KKKrm   r  z'Tx'z'Rx'z	'In-home'z'Access'c                   *   e Zd Zd Zg  edde           edde           edd           edd           e	dd           e
dd           e
dd           e
d	d           e	d
d           e
dd           e
dd           eddd           eddd           eddd           edd           e	dd           eddd           eddd           eddd           eddd           eddd           eddd           eddd           ed d           e	d!d           ed"d           ed#d           ed$d           ed%d           ed&d           ed'd          Zd(S ))SnifferIndicateSnifferTyper   	Direction
SystemTime
BeaconTimer   SourceTermEqIDDestTermEqIDLinkIDPayloadEncrKeySelect   PendingPHYblockBitLoadingEstimToneMapIndexr-   )sizeNumberofSymbolsr*   PHYblockSizer(   FrameLengthReversegrandLengthRequestSACKtransDataMACstreamCMDr+   ManNACFrameStreamCMDr      MultinetBroadcastDifferentCPPHYclock	MulticastFrameControlCheckSeqShortNetworkID_BeaconTimestampBeaconTransOffset_0BeaconTransOffset_1BeaconTransOffset_2BeaconTransOffset_3FrameContrchkSeqN)rr   rs   rt   ru   r   SnifferTypeCodesDirectionCodesr   r   r   r   r   r   r   r   r{   r|   rm   rk   r  r    s       D?==5EFF ? =c>BB?;|S11? :lC00? :.44	?
 9-q11? 9^Q//? 9Xq))? :4d;;? 9.22? 9.22? 8NAA666? 8-qq999? 8NAA666? ;}f55? :2C88?  8.:::!?" 8.:::#?$ 82AA>>>%?& 8L!!444'?( 8/;;;)?* 8111===+?, 8K333-?.  < 6AA/?0 :/551?2 8-q113?4 ;4f==5?6 ;4f==7?8 ;4f==9?: ;4f==;?<  < 2H===?KKKrm   r  c                   B    e Zd Zd Z edd           edd          gZdS )ReadMACMemoryRequestAddressr   Length   N)rr   rs   rt   ru   r   r{   r|   rm   rk   r1  r1    s8        !D:i44:h
33KKKrm   r1  zInvalid AddresszInvalid Lengthc                   |    e Zd Zd Z edde           edd           edddd           edd	d
           gZ	dS )ReadMACMemoryConfirmationr   r   r2  MACLenNMACDatarq   )	length_ofr       c                     | j         S r   )r7  ri   s    rk   r   z"ReadMACMemoryConfirmation.<lambda>  s    3: rm   r   )
rr   rs   rt   ru   r   ReadMACStatusr   r
   r   r{   r|   rm   rk   r6  r6    sh        &D =4??:i++ =49$OOO;y'?U?UVVVKKKrm   r6  ReadWrite)r   r   c                      e Zd Zd Z edd           edd           edde           edd           edd           e	 e
d	d          d
            e	 edd          d            edd           edd           e	 edd          d            e	 e
dd          d            e	 edddd          d            e	 e
dd          d            e	 eddd           d           gZd  ZdS )!ModuleOperationRequestreservedr   	NumOpDatar(   	operationOPDataLengthNr   	SessionIDc                     d| j         k    S r   rC  ri   s    rk   r   zModuleOperationRequest.<lambda>      #-0G rm   	ModuleIDXc                     d| j         k    S r   rG  ri   s    rk   r   zModuleOperationRequest.<lambda>  rH  rm   ModuleIDp  ModuleSubIDReadDataLenix  c                     d| j         k    S Nr   rG  ri   s    rk   r   zModuleOperationRequest.<lambda>  rH  rm   
ReadOffsetc                     d| j         k    S rP  rG  ri   s    rk   r   zModuleOperationRequest.<lambda>  rH  rm   WriteDataLen
ModuleDatarq   r   c                     d| j         k    S r   rG  ri   s    rk   r   zModuleOperationRequest.<lambda>  rH  rm   WriteOffsetc                     d| j         k    S r   rG  ri   s    rk   r   zModuleOperationRequest.<lambda>  rH  rm   r:  c                     | j         S r   )rS  ri   s    rk   r   zModuleOperationRequest.<lambda>  s	    HX rm   r   c                     d| j         k    S r   rG  ri   s    rk   r   zModuleOperationRequest.<lambda>  rH  rm   c                    | j         dk    r4| j        -d}|d d         t          j        d|          z   |dd          z   }| j         dk    r| j        Bdt	          | j                  z   }|d d         t          j        d|          z   |dd          z   }| j        ?t	          | j                  }|d d         t          j        d|          z   |d	d          z   }||z   S )
Nr      r   z!H	   r   r         )rC  rD  structpacklenrT  rS  r   r   pay_lens       rk   
post_buildz!ModuleOperationRequest.post_build  s    >V## (bqbEFKd333ae;>V## (C000bqbEFKd333ae; (4?++crcFV[t444qv=3wrm   )rr   rs   rt   ru   r   r   r   OperationListr   r   r   r
   r   r{   re  r|   rm   rk   r@  r@    s       #D9Z++:k400##KGG<559\1--##JJ{A$>$>$H$HJ J##JJ{A$>$>$H$HJ J<
F33<v66##LL$G$G$H$HJ J##JJ|Z$H$H$H$HJ J##MM.$;G6:%< %< %< %I$HJ J $#JJ}j$I$I$H$HJ J##KKg<X<X%Z %Z %Z$H$HJ J+KK2    rm   r@  c                   $   e Zd Zd Z edd           edd           edd           edd           edde           edd	           ed
d           e	 e
dd          d            e	 edd          d            edd           edd           e	 edddd          d            e	 e
dd          d            e	 eddd           d            e	 edd          d            e	 e
d d          d!           gZd" ZdS )#ModuleOperationConfirmationr   r   	ErrorCoderA  rB  r(   rC  rD  r[  r   rE  c                     d| j         k    S r   rG  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>!  rH  rm   rI  c                     d| j         k    S r   rG  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>#  rH  rm   rK  rL  rM  rN  NrT  rq   r   c                     d| j         k    S rP  rG  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>)  rH  rm   rQ  c                     d| j         k    S rP  rG  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>+  rH  rm   r:  c                     | j         S r   )rN  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>-  s     rm   r   c                     d| j         k    S rP  rG  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>.  rH  rm   rS  c                     d| j         k    S r   rG  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>0  rH  rm   rV  c                     d| j         k    S r   rG  ri   s    rk   r   z$ModuleOperationConfirmation.<lambda>2  rH  rm   c                    | j         dk    rI| j        Bdt          | j                  z   }|d d         t	          j        d|          z   |dd          z   }| j         dk    r| j        Bdt          | j                  z   }|d d         t	          j        d|          z   |dd          z   }| j        ?t          | j                  }|d d         t	          j        d|          z   |dd          z   }||z   S )	Nr   r[  r   hr\  r   r   r  )rC  rD  ra  rT  r_  r`  rS  rb  s       rk   re  z&ModuleOperationConfirmation.post_build4  s    >V## (C000bqbEFKT222QqrrU:>V## (C000bqbEFKT222QqrrU: (4?++crcFV[d333af<3wrm   )rr   rs   rt   ru   r   r   r   r   rf  r   r   r
   r   r{   re  r|   rm   rk   rh  rh    s       (D<&11<V449Z++:k400##KGG<779\1--##JJ{A$>$>$H$HJ J##JJ{A$>$>$H$HJ J<
F33<v66##MM-;G6:%< %< %< %I$HJ J $#JJ|Z$H$H$H$HJ J##KKg<W<W%Y %Y %Y$H$HJ J $#LL$C$C$H$HJ J##JJ}j$I$I$H$HJ J1KK6    rm   rh  zMAC Soft-Loader ImagezMAC Software ImagePIBzWrite Alternate Flash Location)r   r(   r*   r1   c           	          d}t          dt          |           d          D ].}|t          j        d| ||dz                      d         z  dz  }/| dz  S )Nr   r,   <Il    )rangera  r_  unpack)datacksumis      rk   chksum32r|  N  se    E1c$ii## M MtT!AE'];;A>>*LFj  rm   c                   p    e Zd Zd Z edde           edd           edd           edd          gZ	dS )	ReadModuleDataRequestrK  r*   rA  r   r3  r4  OffsetN)
rr   rs   rt   ru   r   ModuleIDListr   r   r   r{   r|   rm   rk   r~  r~  U  sX        "D =T<@@:j$//<&11:h
335KKKrm   r~  c                       e Zd Zd Z edde           edd           edde           edd           e	ddd	d
           e
dd           e
dd           ed	dd           gZd ZdS )ReadModuleDataConfirmationr   r   r   rK  r*   r   DataLenNrT  rq   r   r  checksumr:  c                     | j         S r   r  ri   s    rk   r   z#ReadModuleDataConfirmation.<lambda>f      ck rm   r   c                 (   | j         ?t          | j                  }|d d         t          j        d|          z   |dd          z   }| j        A|r?t          | j                  }|d d         t          j        d|          z   |dd          z   }||z   S )Nr"  rs        Ir1   r  ra  rT  r_  r`  r  r|  r   r   rc  rd  cks        rk   re  z%ReadModuleDataConfirmation.post_buildi  s    <t''D"1"C...1226A= Q $/**B#2#S"---"##6A3wrm   )rr   rs   rt   ru   r   r   r   r  r   r
   r   r   r{   re  r|   rm   rk   r  r  ]  s        'D =3<<<h77 =T<@@:lD11 =D<TRRR:h
33:j$//;|WBYBYZZZK    rm   r  c            
           e Zd Zd Z edde           edd           edddd	           ed
d           edd           e	ddd           gZ
d ZdS )WriteModuleDataRequestrK  r*   r   r   r  NrT  rq   r   r  r  r:  c                     | j         S r   r  ri   s    rk   r   zWriteModuleDataRequest.<lambda>~  r  rm   r   c                 (   | j         ?t          | j                  }|d d         t          j        d|          z   |dd          z   }| j        A|r?t          | j                  }|d d         t          j        d|          z   |dd          z   }||z   S )Nr*   rq   r,   r  rv  r  r  r  s        rk   re  z!WriteModuleDataRequest.post_build  s    <t''D"1"D$///!ABB%7A= Q $/**B"1"D"---"##6A3wrm   )rr   rs   rt   ru   r   r  r   r
   r   r   r{   re  r|   rm   rk   r  r  w  s        #D =T<@@:lD11 =D<TRRR:h
33:j$//;|WBYBYZZZK    rm   r  c                   v    e Zd Zd Z edd           edd           edd           eddd          gZd Zd	S )
ClassifierPriorityMapPriorityr   PIDIndividualOperandClassifierValuer   r1   c                 
    d|fS r   r|   r   s     rk   r   z%ClassifierPriorityMap.extract_padding  r   rm   Nrr   rs   rt   ru   r   r   r{   r   r|   rm   rk   r  r    sv        "D:j!,,:eQ'':1155##$5$0$&( (K    rm   r  c                   `    e Zd Zd Z edd           edd           eddd          gZd ZdS )	ClassifierObjClassifierPIDr   r  r  r   r1   c                 
    d|fS r   r|   r   s     rk   r   zClassifierObj.extract_padding  r   rm   Nr  r|   rm   rk   r  r    sg        D:oq11:1155##$5$0$&( (K    rm   r  c                   F   e Zd Zd Z edd           edd           edd           edded            ed	d           ed
d           edd           edd           e	dd           edd           e
ddd           edd           e
ddd          gZd ZdS )AutoConnectionActionr   ClassificationOperandNumClassifiersClassifierObjsr   c                     dS )Nr^  r|   xs    rk   r   zAutoConnection.<lambda>  s    ^` rm   r   CSPECversionConnCAPConnCoQoSPrioConnRateConnTTLrh   VlanTags       r,   r   r   s                    c                 
    d|fS r   r|   r   s     rk   r   zAutoConnection.extract_padding  r   rm   N)rr   rs   rt   ru   r   r   r   r  r   r   r   r   r{   r   r|   rm   rk   r  r    s       D:h--:5t<<;/88"?#3RT`T`aaa;~v66:i..:ot44:j!,,:i++:i++##I$/$%' ' 9\1--##L$0$&( (K&    rm   r  c                   H    e Zd ZdZ edd           edd          gZd ZdS )PeerNode	PeerNodesPeerTEIr   
PIBMACAddrr   c                 
    d|fS r   r|   r   s     rk   r   zPeerNode.extract_padding  r   rm   N)rr   rs   rt   ru   r   r   r{   r   r|   rm   rk   r  r    sN        D:i--8L*=>>K    rm   r  c                   H    e Zd Zd Z edd           edd          gZd ZdS )AggregateConfigEntrieTrafficTypeIDr   AggregationConfigIDc                 
    d|fS r   r|   r   s     rk   r   z%AggregateConfigEntrie.extract_padding  r   rm   Nrr   rs   rt   ru   r   r{   r   r|   rm   rk   r  r    sN        "D:os33:3S99K    rm   r  c                   2    e Zd Zd Z edd          gZd ZdS )RSVD_CustomAggregationParameterCustomAggregationParameterr   c                 
    d|fS r   r|   r   s     rk   r   z/RSVD_CustomAggregationParameter.extract_padding  r   rm   Nrr   rs   rt   ru   r   r{   r   r|   rm   rk   r  r    s?        ,D991== K    rm   r  c                   2    e Zd Zd Z edd          gZd ZdS )PrescalerValue	prescalerr   c                 
    d|fS r   r|   r   s     rk   r   zPrescalerValue.extract_padding  r   rm   Nr  r|   rm   rk   r  r    s>        D9[!,, K    rm   r  c                   2    e Zd Zd Z edd          gZd ZdS )GPIOMap	GPIOvaluer   c                 
    d|fS r   r|   r   s     rk   r   zGPIOMap.extract_padding  r   rm   Nr  r|   rm   rk   r  r    s>        D:k1-- K    rm   r  c                   2    e Zd Zd Z edd          gZd ZdS )ReservedPercentageForCap
CAPpercentr   c                 
    d|fS r   r|   r   s     rk   r   z(ReservedPercentageForCap.extract_padding  r   rm   Nr  r|   rm   rk   r  r    s>        %D:lA.. K    rm   r  c                      e Zd Zd Z eddd           eddd           eddd           eddd           eddd           eddd           ed	dd           ed
dd           eddd           eddd           eddd          gZdS )	ConfigBitOverrideSoundCapr   r(   OverrideFailHoldDefaultsOverrideResourceDefaults OverrideContentionWindowDefaultsOverrideUnplugDetectionDefaultsOverrideResoundDefaultsOverrideExpiryDefaultsDisableWorseChannelTriggerDisableBetterChannelTriggerDisableNetworkEventTriggerrsv1r"  N)rr   rs   rt   ru   r   r{   r|   rm   rk   r  r    s        D8.155861==861==8>1EE8=q!DD85q!<<84a;;88!Q??891a@@88!Q??8FAq))KKKrm   r  c                   2    e Zd Zd Z edd          gZd ZdS )ContentionWindowTableelementr   c                 
    d|fS r   r|   r   s     rk   r   z%ContentionWindowTable.extract_padding  r   rm   N)rr   rs   rt   ru   r   r{   r   r|   rm   rk   r  r    s>        "D;y!,, K    rm   r  c                   2    e Zd Zd Z edd          gZd ZdS )BackoffDeferalCountTabler  r   c                 
    d|fS r   r|   r   s     rk   r   z(BackoffDeferalCountTable.extract_padding  r   rm   Nr  r|   rm   rk   r  r    s>        %D:i++ K    rm   r  c                       e Zd Zd Z edd           edd           edd           edd           edd           edd           edd           ed	d           ed
d           edd          g
Zd ZdS )BehaviorBlockArrayBehIdr   	NoOfStepsDurationInMsGPIOMaskBits_1GPIOMaskBits_2GPIOMaskBits_3GPIOMaskBits_4GPIOMaskBits_5GPIOMaskBits_6reserved_behc                 
    d|fS r   r|   r   s     rk   r   z"BehaviorBlockArray.extract_padding-  r   rm   N)	rr   rs   rt   ru   r   r   r   r{   r   r|   rm   rk   r  r    s        D:gq)):k1--:na00;/33;/33;/33;/33;/33;/339^Q//
K    rm   r  c                       e Zd Zd Z edd           edd           edd           edd           edd           edd           edd           ed	d          gZd
 ZdS )EventBlockArrayEventPriorityIDr   EventIDBehID_1BehID_2BehID_3ParticipatingGPIOsEventAttributesreserved_evbc                 
    d|fS r   r|   r   s     rk   r   zEventBlockArray.extract_padding=  r   rm   N)rr   rs   rt   ru   r   r   r{   r   r|   rm   rk   r  r  1  s        D:/33:i++:i++:i++:i++;3Q77:/33;~q11K    rm   r  c            	        #    e Zd ZdZd ZddgZg  e edd          d            e edd          d            e ed	d          d
            e edd          d            e edd          d            e e	dd          d            e e
dd          d            e eddd          d            e edd          d            e eddd          d            e eddd          d             e ed!dd          d"            e ed#dd          d$            e ed%d          d&            e ed'd          d(            e ed)d          d*            e ed+d          d,            e ed-d.d/          d0            e ed1d          d2            e ed3d          d4            e ed5d          d6            e ed7d          d8            e e
d9d          d:            e ed;d          d<            e ed=d          d>            e ed?d          d@            e edAd          dB            e e
dCd          dD            e edEd          dF            e edGd          dH            e edIdJedK L          dM            e edNdOdP          dQ            e edRd          dS            e edTd          dU            e edVd          dW            e edXd          dY            e e	dZd          d[            e ed\d          d]            e ed^d          d_            e ed`d          da            e edbd          dc            e eddd          de            e edfd          dg            e edhd          di            e edjd          dk            e edld          dm            e ednd          do            e edpd          dq            e edrd          ds            e edtd          du            e edvd          dw            e edxd          dy            e edzd          d{            e ed|d          d}            e ed~d          d            e edd          d            e edd          d            e eddd          d            e edd          d            e edd          d            e edd          d            e eddd          d            e edd          d            e edd          d            e edd          d            e edd          d            e e	dd          d            e e	dd          d            e e	dd          d            e e	dd          d            e edd          d            e edd          d            e edd          d            e e	dd          d            e e	dd          d            e e	dd          d            e eddJed L          d            e eddJed L          d            e edd          d            e eddJed L          d            e eddJed L          d            e eddd          d            e edd          d            e edd          d            e edd          dÄ            e edd          dń            e edddȦ          dɄ            e edd          d˄            e edd          d̈́            e eddJedτ L          dЄ            e edddӦ          dԄ            e edd          dք            e edd          d؄            e eddd          dڄ            e edd          d܄            e edd          dބ            e eddd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e eddJed L          d            e edd          d            e edd          d            e ed dd          d            e edd          d            e eddd          d            e edd          d	            e e	d
d          d            e eddd          d            e edd          d            e edd          d            e e	dd          d            e e	dd          d            e edd          d            e edd          d            e edd          d            e e	dd          d            e ed d          d!            e ed"dJed# L          d$            e ed%d          d&            e ed'd          d(            e ed)d          d*            e e	d+d          d,            e e	d-d          d.            e e	d/d          d0            e ed1d          d2            e ed3d          d4            e ed5d          d6            e ed7d          d8            e ed9d          d:            e ed;dd          d<            e ed=d          d>            e ed?d          d@            e e	dAd          dB            e edCdJedD L          dE            e e	dFd          dG            e e	dHd          dI            e e	dJd          dK            e edLd          dM            e e	dNd          dO            e edPdJedQ L          dR            e edSdJedT L          dU            e edVd          dW            e edXd          dY            e edZd          d[            e ed\d          d]            e ed^d          d_            e ed`d          da            e edbd          dc            e eddd          de            e edfd          dg            e edhd          di            e edjd          dk            e edldmdn          do            e edpd          dq            e edrd          ds            e edtd          du            e edvd          dw            e edxd          dy            e edzdd          d{            e ed|d          d}            e ed~d          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e edd          d            e eddd          d            e edd          d            e edd          d            e edd          d            e edd          d            e eddJed L          d            e edd          d            e eddJed L          d           Zd fd	Z xZS (  	ModulePIBzb
        Simple Module PIB Decoder.
            /!/ A wrong slice would produce 'bad' results
    _ModulePIB__offset_ModulePIB__lengthFirmwareMajorVersionr   c                 >    d| j         k    od| j         | j        z   k    S )Nr   r(   r  r  ri   s    rk   r   zModulePIB.<lambda>J  "    SCL%8%_SCLSVS_D_=_ rm   PIBMinorVersionc                 >    d| j         k    od| j         | j        z   k    S )Nr(   r*   r  ri   s    rk   r   zModulePIB.<lambda>L  r   rm   r   c                 >    d| j         k    od| j         | j        z   k    S )Nr*   r,   r  ri   s    rk   r   zModulePIB.<lambda>N  r   rm   	PIBLengthc                 >    d| j         k    od| j         | j        z   k    S )Nr,   r"  r  ri   s    rk   r   zModulePIB.<lambda>P  r   rm   r   c                 >    d| j         k    od| j         | j        z   k    S )Nr"  r  r  ri   s    rk   r   zModulePIB.<lambda>R  r   rm   checksumPIBNc                 >    d| j         k    od| j         | j        z   k    S )Nr  r  r  ri   s    rk   r   zModulePIB.<lambda>T  r   rm   r  r   c                 >    d| j         k    od| j         | j        z   k    S )Nr  r[  r  ri   s    rk   r   zModulePIB.<lambda>V  s"    SCL%8%`TS\TWT`E`=` rm   r   r   r1   c                 >    d| j         k    od| j         | j        z   k    S )Nr[  r0   r  ri   s    rk   r   zModulePIB.<lambda>Z  "    TS\%9%adclUXUaFa>a rm   r   c                 >    d| j         k    od| j         | j        z   k    S )Nr0   $   r  ri   s    rk   r   zModulePIB.<lambda>\  r  rm   ManufactorIDs@                                                                   r   c                 >    d| j         k    od| j         | j        z   k    S )Nr  d   r  ri   s    rk   r   zModulePIB.<lambda>`  r  rm   r   c                 >    d| j         k    od| j         | j        z   k    S )Nr  t   r  ri   s    rk   r   zModulePIB.<lambda>d  r  rm   UserIDc                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>h  r  rm   AVLN_IDc                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>l  r  rm   CCoSelectionc                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>n  r  rm   CoExistSelectionc                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>p  r  rm   PLFreqSelectionc                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>r  r  rm   H3CDowngradeShldc                 >    d| j         k    od| j         | j        z   k    S )Nr!     r  ri   s    rk   r   zModulePIB.<lambda>t  r  rm   PreferredNIDr   r   c                 >    d| j         k    od| j         | j        z   k    S )Nr$     r  ri   s    rk   r   zModulePIB.<lambda>x  r  rm   AutoFWUpgradeablec                 >    d| j         k    od| j         | j        z   k    S )Nr'  r  r  ri   s    rk   r   zModulePIB.<lambda>z  s"    TS\%9%bes|VYVbGb>b rm   MDUConfigurationc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>|  "    Ucl%:%cuWZWcHc?c rm   MDURolec                 >    d| j         k    od| j         | j        z   k    S )Nr,    r  ri   s    rk   r   zModulePIB.<lambda>~  r-  rm   SnifferEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nr0    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   SnifferMACAddrRetrnc                 >    d| j         k    od| j         | j        z   k    S )Nr3  	  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   WireTapEnablec                 >    d| j         k    od| j         | j        z   k    S )Nr6  
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
reserved_4c                 >    d| j         k    od| j         | j        z   k    S )Nr9    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   StaticNetworkEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nr<    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   LD_TEIc                 >    d| j         k    od| j         | j        z   k    S )Nr?    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
CCo_MACAddc                 >    d| j         k    od| j         | j        z   k    S )NrB    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   SNIDc                 >    d| j         k    od| j         | j        z   k    S )NrE    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   NumOfPeerNodesc                 >    d| j         k    od| j         | j        z   k    S )NrH    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   r  r   c                     dS )N8   r|   r  s    rk   r   zModulePIB.<lambda>  s    Z\ rm   r   c                 >    d| j         k    od| j         | j        z   k    S )NrK  i  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
reserved_5s>                                                                 >   c                 >    d| j         k    od| j         | j        z   k    S )NiF  iN  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   OverideModeDefaultsc                 >    d| j         k    od| j         | j        z   k    S )Ni    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   DisableFlowControlc                 >    d| j         k    od| j         | j        z   k    S )NrT    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   AdvertisementCapabilitiesc                 >    d| j         k    od| j         | j        z   k    S )NrW    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   OverrideMeteringDefaultsc                 >    d| j         k    od| j         | j        z   k    S )NrZ    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   MaxFramesPerSecc                 >    d| j         k    od| j         | j        z   k    S )Nr]    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   DisableAutoNegotiationc                 >    d| j         k    od| j         | j        z   k    S )Nr`    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   EnetSpeedSettingc                 >    d| j         k    od| j         | j        z   k    S )Nrc    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   EnetDuplexSettingc                 >    d| j         k    od| j         | j        z   k    S )Nrf    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   DisableTxFlowControlc                 >    d| j         k    od| j         | j        z   k    S )Nri    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   DisableRxFlowControlc                 >    d| j         k    od| j         | j        z   k    S )Nrl    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PhyAddressSelectionc                 >    d| j         k    od| j         | j        z   k    S )Nro    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PhyAddressSelection_Datac                 >    d| j         k    od| j         | j        z   k    S )Nrr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
reserved_6c                 >    d| j         k    od| j         | j        z   k    S )Nru    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
Force33MHzc                 >    d| j         k    od| j         | j        z   k    S )Nrx    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   LinkStatusOnPowerlinec                 >    d| j         k    od| j         | j        z   k    S )Nr{    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   OverrideIdDefaultsc                 >    d| j         k    od| j         | j        z   k    S )Nr~    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   OverrideSubIdDefaultsc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PCIDeviceIDc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PCIVendorIDc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
reserved_7c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PCIClassCodec                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PCIClassCodeSubClassc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PCIRevisionIDc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PCISubsystemIDc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PCISybsystemVendorIDc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
reserved_8c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   OverrideIGMPDefaultsc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   ConfigFlagsc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   NumCpToSend_PLFramesc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   
reserved_9s                                   c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   UniCastPriorityc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   McastPriorityc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   IGMPPriorityc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   AVStreamPriorityc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PriorityTTL_0c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PriorityTTL_1c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PriorityTTL_2c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PriorityTTL_3c                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   EnableVLANOverc                 >    d| j         k    od| j         | j        z   k    S )Nr  !  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   EnableTOSOverc                 >    d| j         k    od| j         | j        z   k    S )Nr  "  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   reserved_10c                 >    d| j         k    od| j         | j        z   k    S )Nr  $  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   VLANPrioTOSPrecMatrixc                 >    d| j         k    od| j         | j        z   k    S )Nr  (  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   NumClassifierPriorityMapsc                 >    d| j         k    od| j         | j        z   k    S )Nr  ,  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   NumAutoConnectionsc                 >    d| j         k    od| j         | j        z   k    S )Nr  0  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   ClassifierPriorityMapsc                     dS )N   r|   r  s    rk   r   zModulePIB.<lambda>  s    tw rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr  iD  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   AutoConnectionsc                     dS )Ni@  r|   r  s    rk   r   zModulePIB.<lambda>      fj rm   c                 >    d| j         k    od| j         | j        z   k    S )Ni  in  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   NumberOfConfigEntriesc                 >    d| j         k    od| j         | j        z   k    S )NiP	  Q	  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   AggregateConfigEntriesc                     dS )Nr1   r|   r  s    rk   r   zModulePIB.<lambda>  s    tv rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr  a	  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm    RSVD_CustomAggregationParametersc                     dS )N0   r|   r  s    rk   r   zModulePIB.<lambda>  s      IK rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr  	  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   reserved_11s{                                                                                                                              {   c                 >    d| j         k    od| j         | j        z   k    S )Nr  
  r  ri   s    rk   r   zModulePIB.<lambda>   r-  rm   ToneMaskTypec                 >    d| j         k    od| j         | j        z   k    S )Nr  
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   ToneMaskEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nr  
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   	StartTonec                 >    d| j         k    od| j         | j        z   k    S )Nr  
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   EndTonec                 >    d| j         k    od| j         | j        z   k    S )Nr  
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   reserved_12s               r  c                 >    d| j         k    od| j         | j        z   k    S )Nr  (
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PsdIndexc                 >    d| j         k    od| j         | j        z   k    S )Nr  ,
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   TxPrescalerTypec                 >    d| j         k    od| j         | j        z   k    S )Nr   0
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   PrescalerValuesc                     dS )Ni  r|   r  s    rk   r   zModulePIB.<lambda>  r  rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr  i4
  r  ri   s    rk   r   zModulePIB.<lambda>  r-  rm   reserved_13s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              i  c                 >    d| j         k    od| j         | j        z   k    S )Ni@    r  ri   s    rk   r   zModulePIB.<lambda>  "    Vs|%;%e#,Y\YeJe@e rm   AllowNEKRotationc                 >    d| j         k    od| j         | j        z   k    S )Nr	    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   OverrideLocalNEKc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   LocalNEKToUsec                 >    d| j         k    od| j         | j        z   k    S )Nr  $  r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   OverrideNEKRotationTimerc                 >    d| j         k    od| j         | j        z   k    S )Nr  (  r  ri   s    rk   r   zModulePIB.<lambda>   r
  rm   NEKRotationTime_Minc                 >    d| j         k    od| j         | j        z   k    S )Nr  ,  r  ri   s    rk   r   zModulePIB.<lambda>"  r
  rm   reserved_14s`                                                                                                   `   c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>&  r
  rm   AVLNMembershipc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>(  r
  rm   SimpleConnectTimeoutc                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>*  r
  rm   EnableLEDThroughputIndicatec                 >    d| j         k    od| j         | j        z   k    S )Nr#    r  ri   s    rk   r   zModulePIB.<lambda>,  r
  rm   MidLEDThroughputThreshold_Mbpsc                 >    d| j         k    od| j         | j        z   k    S )Nr&    r  ri   s    rk   r   zModulePIB.<lambda>.  r
  rm   HighLEDThroughputThreshold_Mbpsc                 >    d| j         k    od| j         | j        z   k    S )Nr)    r  ri   s    rk   r   zModulePIB.<lambda>0  r
  rm   reserved_15c                 >    d| j         k    od| j         | j        z   k    S )Nr,    r  ri   s    rk   r   zModulePIB.<lambda>2  r
  rm   EnableUnicastQuieriesToMemberc                 >    d| j         k    od| j         | j        z   k    S )Nr/    r  ri   s    rk   r   zModulePIB.<lambda>4  r
  rm   DisableMLDGroupIDCheckInMACc                 >    d| j         k    od| j         | j        z   k    S )Nr2    r  ri   s    rk   r   zModulePIB.<lambda>6  r
  rm   EnableReportsToNonQuerierHostsc                 >    d| j         k    od| j         | j        z   k    S )Nr5    r  ri   s    rk   r   zModulePIB.<lambda>8  r
  rm   $DisableExpireGroupMembershipIntervalc                 >    d| j         k    od| j         | j        z   k    S )Nr8    r  ri   s    rk   r   zModulePIB.<lambda>:  r
  rm   DisableLEDTestLightsc                 >    d| j         k    od| j         | j        z   k    S )Nr;    r  ri   s    rk   r   zModulePIB.<lambda><  r
  rm   GPIOMapsc                     dS )Nr  r|   r  s    rk   r   zModulePIB.<lambda>=  s    XZ rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr>    r  ri   s    rk   r   zModulePIB.<lambda>>  r
  rm   reserved_16c                 >    d| j         k    od| j         | j        z   k    S )NrB    r  ri   s    rk   r   zModulePIB.<lambda>@  r
  rm   EnableTrafficClass_DSCPOverc                 >    d| j         k    od| j         | j        z   k    S )NrE    r  ri   s    rk   r   zModulePIB.<lambda>B  r
  rm   TrafficClass_DSCPMatricesc                 >    d| j         k    od| j         | j        z   k    S )NrH    r  ri   s    rk   r   zModulePIB.<lambda>F  r
  rm   GPIOControlc                 >    d| j         k    od| j         | j        z   k    S )NrK    r  ri   s    rk   r   zModulePIB.<lambda>H  r
  rm   
LEDControls                                    r.   c                 >    d| j         k    od| j         | j        z   k    S )NrN    r  ri   s    rk   r   zModulePIB.<lambda>L  r
  rm   OverrideMinButtonPressHoldTimec                 >    d| j         k    od| j         | j        z   k    S )NrQ    r  ri   s    rk   r   zModulePIB.<lambda>N  r
  rm   MinButtonPressHoldTimec                 >    d| j         k    od| j         | j        z   k    S )NrT  "  r  ri   s    rk   r   zModulePIB.<lambda>P  r
  rm   reserved_17s                         r]  c                 >    d| j         k    od| j         | j        z   k    S )NrW  8  r  ri   s    rk   r   zModulePIB.<lambda>T  r
  rm   MemoryProfilec                 >    d| j         k    od| j         | j        z   k    S )NrZ  <  r  ri   s    rk   r   zModulePIB.<lambda>V  r
  rm   DisableAllLEDFlashOnWarmRebootc                 >    d| j         k    od| j         | j        z   k    S )Nr]  @  r  ri   s    rk   r   zModulePIB.<lambda>X  r
  rm   UplinkLimit_bpsc                 >    d| j         k    od| j         | j        z   k    S )Nr`  D  r  ri   s    rk   r   zModulePIB.<lambda>Z  r
  rm   DownlinkLimit_bpsc                 >    d| j         k    od| j         | j        z   k    S )Nrc  H  r  ri   s    rk   r   zModulePIB.<lambda>\  r
  rm   MDUStaticSNIDc                 >    d| j         k    od| j         | j        z   k    S )Nrf  L  r  ri   s    rk   r   zModulePIB.<lambda>^  r
  rm   MitigateEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nri  M  r  ri   s    rk   r   zModulePIB.<lambda>`  r
  rm   CorrelThresholdc                 >    d| j         k    od| j         | j        z   k    S )Nrl  Q  r  ri   s    rk   r   zModulePIB.<lambda>b  r
  rm   ScaledTxGainc                 >    d| j         k    od| j         | j        z   k    S )Nro  U  r  ri   s    rk   r   zModulePIB.<lambda>d  r
  rm   ResourceThresholdEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nrr  V  r  ri   s    rk   r   zModulePIB.<lambda>f  r
  rm   ReservedPercentageForCapsc                     dS Nr,   r|   r  s    rk   r   zModulePIB.<lambda>g  s    z{ rm   c                 >    d| j         k    od| j         | j        z   k    S )Nru  Z  r  ri   s    rk   r   zModulePIB.<lambda>h  r
  rm   PowerSavingModec                 >    d| j         k    od| j         | j        z   k    S )Nrz  [  r  ri   s    rk   r   zModulePIB.<lambda>j  r
  rm   PowerLEDDutyCyclec                 >    d| j         k    od| j         | j        z   k    S )Nr}  \  r  ri   s    rk   r   zModulePIB.<lambda>l  r
  rm   reserved_18c                 >    d| j         k    od| j         | j        z   k    S )Nr  ^  r  ri   s    rk   r   zModulePIB.<lambda>n  r
  rm   LinkUpDurationBeforeReset_msc                 >    d| j         k    od| j         | j        z   k    S )Nr  b  r  ri   s    rk   r   zModulePIB.<lambda>p  r
  rm   PowerLEDPeriod_msc                 >    d| j         k    od| j         | j        z   k    S )Nr  f  r  ri   s    rk   r   zModulePIB.<lambda>r  r
  rm   %LinkDownDurationBeforeLowPowerMode_msc                 >    d| j         k    od| j         | j        z   k    S )Nr  j  r  ri   s    rk   r   zModulePIB.<lambda>t  r
  rm   reserved_19c                 >    d| j         k    od| j         | j        z   k    S )Nr  n  r  ri   s    rk   r   zModulePIB.<lambda>v  r
  rm   AfeGainBusModec                 >    d| j         k    od| j         | j        z   k    S )Nr  o  r  ri   s    rk   r   zModulePIB.<lambda>x  r
  rm   EnableDynamicPsdc                 >    d| j         k    od| j         | j        z   k    S )Nr  p  r  ri   s    rk   r   zModulePIB.<lambda>z  r
  rm   ReservedPercentageForTxStreamsc                 >    d| j         k    od| j         | j        z   k    S )Nr  q  r  ri   s    rk   r   zModulePIB.<lambda>|  r
  rm   ReservedPercentageForRxStreamsc                 >    d| j         k    od| j         | j        z   k    S )Nr  r  r  ri   s    rk   r   zModulePIB.<lambda>~  r
  rm   reserved_20c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   LegacyNetworkUpgradeEnablec                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   unknownc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   	MMETTL_usc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   
ConfigBitsc                     dS )Nr*   r|   r  s    rk   r   zModulePIB.<lambda>  s    \] rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   TxToneMapExpiry_msc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   RxToneMapExpiry_msc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   TimeoutToResound_msc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   &MissingSackThresholdForUnplugDetectionc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   UnplugTimeout_msc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   ContentionWindowTableESc                     dS )Nr  r|   r  s    rk   r   zModulePIB.<lambda>  s    uv rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   BackoffDeferalCountTableESc                     dS rx  r|   r  s    rk   r   zModulePIB.<lambda>  s    {| rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   GoodSoundCountThresholdc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   &SoundCountThreshold_GoodSoundCountPassc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   &SoundCountThreshold_GoodSoundCountFailc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_21c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   ExclusiveTxPbs_percentagec                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   ExclusiveRxPbs_percentagec                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   OptimizationBackwardCompatiblec                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_21bc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   MaxPbsPerSymbolc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   MaxModulationc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   ContinuousRxc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_22s         r"  c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   PBControlStatusc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   STAMembershipMaskEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   ExitDefaultEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   RejectDefaultEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   ChainingEnabledc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   VendorSpecificNMKc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   LocalMACAddressLimitc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   OverrideBridgeTableAgingTimec                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   LocalBridgeTableAgingTime_minc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   RemoteBridgeTableAgingTime_minc                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   PhySyncReferencec                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_23c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_24c                 >    d| j         k    od| j         | j        z   k    S )Nr
    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_25c                 >    d| j         k    od| j         | j        z   k    S )Nr    r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_26s                           r^  c                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   OverrideDefaultLedEventBehavior   c                 >    d| j         k    od| j         | j        z   k    S )Nr  	   r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   ReportToHostInfoc                 >    d| j         k    od| j         | j        z   k    S )Nr  
   r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   reserved_27c                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   NumBehaviorsc                 >    d| j         k    od| j         | j        z   k    S )Nr     r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   BehaviorBlockArrayESc                     dS )Ni  r|   r  s    rk   r   zModulePIB.<lambda>  s    os rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr   $  r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   	NumEventsc                 >    d| j         k    od| j         | j        z   k    S )Nr$  $  r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   EventBlockArrayESc                     dS )Ni&  r|   r  s    rk   r   zModulePIB.<lambda>  s    il rm   c                 >    d| j         k    od| j         | j        z   k    S )Nr'  i&  r  ri   s    rk   r   zModulePIB.<lambda>  r
  rm   r4  c                 p    || _         || _        t          t          |                               |          S r   )r  r  superr  __init__)r   packetoffsetlength	__class__s       rk   r-  zModulePIB.__init__  s/    Y%%..v666rm   )r   r   r4  ) rr   rs   rt   r   ru   	__slots__r   r   r   r   r   r   r   r  r  r  r  r  r   r  r  r   r  r  r  r  r   r  r  r{   r-  __classcell__)r1  s   @rk   r  r  A  s$         D%';<I[$:DAA``	b 	b[ 	$5t<<``	b 	b[
 	\6::``	b 	b[ 	[&99``	b 	b[ 	\6::``	b 	b[ 	M488``	b 	b[ 	,0CDDaa	c 	c[ 	))%*6*,. . cb	d 	d[& 	\6::bb	d 	d'[* 	)).*6*,. . cb	d 	d+[2 	))%*6*,. . cb	d 	d3[: 	))(*6*,. . cb	d 	d;[B 	)))*6*,. . cb	d 	dC[J 	ND99bb	d 	dK[N 	$6==bb	d 	dO[R 	$5t<<bb	d 	dS[V 	$6==bb	d 	dW[Z 	)).*5*+- - cb	d 	d[[b 	$7>>cc	e 	ec[f 	$6==dd	f 	fg[j 	It44dd	f 	fk[n 	$4d;;dd	f 	fo[r 	"79LMMdd	f 	fs[v 	OT::dd	f 	fw[z 	\6::dd	f 	f{[~ 	$:DAAdd	f 	f[B 	Hd33dd	f 	fC[F 	,0CDDdd	f 	fG[J 	FD11dd	f 	fK[N 	$4d;;dd	f 	fO[R 	b(P\P\]]]dd	f 	fS[V 	)),*6*,. . ed	f 	fW[^ 	$94@@dd	f 	f_[b 	$8$??dd	f 	fc[f 	$?FFdd	f 	fg[j 	$>EEdd	f 	fk[n 	$5q99dd	f 	fo[r 	$<dCCdd	f 	fs[v 	$6==dd	f 	fw[z 	$7>>dd	f 	f{[~ 	$:DAAdd	f 	f[B 	$:DAAdd	f 	fC[F 	$94@@dd	f 	fG[J 	$>EEdd	f 	fK[N 	L$77dd	f 	fO[R 	L$77dd	f 	fS[V 	$;TBBdd	f 	fW[Z 	$8$??dd	f 	f[[^ 	$;TBBdd	f 	f_[b 	]F;;dd	f 	fc[f 	]F;;dd	f 	fg[j 	L$77dd	f 	fk[n 	ND99dd	f 	fo[r 	$:DAAdd	f 	fs[v 	OT::dd	f 	fw[z 	%5v>>dd	f 	f{[~ 	%;VDDdd	f 	f[B 	)),*6*,. . ed	f 	fC[J 	$:DAAdd	f 	fK[N 	M488dd	f 	fO[R 	$:DAAdd	f 	fS[V 	)),*6*,. . ed	f 	fW[^ 	$5t<<dd	f 	f_[b 	OT::dd	f 	fc[f 	ND99dd	f 	fg[j 	$6==dd	f 	fk[n 	OQ77dd	f 	fo[r 	OQ77dd	f 	fs[v 	OQ77dd	f 	fw[z 	OQ77dd	f 	f{[~ 	$4d;;dd	f 	f[B 	OT::dd	f 	fC[F 	]F;;dd	f 	fG[J 	$;Q??dd	f 	fK[N 	$?CCdd	f 	fO[R 	$8!<<dd	f 	fS[V 	)A2G\jwjwxxxdd	f 	fW[Z 	):B\j\jkkkdd	f 	f[[^ 	$;TBBdd	f 	f_[b 	)A2G\jvjvwwwdd	f 	fc[f 	)KRQp  K  K  L  L  Ldd	f 	fg[j 	))-*7*-/ / ed	f 	fk[r 	>155dd	f 	fs[v 	#4a88dd	f 	fw[z 	;22dd	f 	f{[~ 	9a00dd	f 	f[B 	))-*6*,. . ed	f 	fC[J 	:q11dd	f 	fK[N 	#4a88dd	f 	fO[R 	):B\j\jkkkdd	f 	fS[V 	))-*8*.0 0 gf	h 	hW[^ 	#5q99ff	h 	h_[b 	#5q99ff	h 	hc[f 	))/*6*,. . gf	h 	hg[n 	#=qAAff	h 	ho[r 	#8!<<ff	h 	hs[v 	))-*6*,. . gf	h 	hw[~ 	#3Q77ff	h 	h[B 	#91==ff	h 	hC[F 	$A1EEff	h 	hG[J 	$DaHHff	h 	hK[N 	$EqIIff	h 	hO[R 	M155ff	h 	hS[V 	$CQGGff	h 	hW[Z 	$A1EEff	h 	h[[^ 	%EqIIff	h 	h_[b 	#I1MMff	h 	hc[f 	#91==ff	h 	hg[j 	Rll[[[ff	h 	hk[n 	M155ff	h 	ho[r 	$A1EEff	h 	hs[v 	))*E*6*,. . gf	h 	hw[~ 	M155ff	h 	h[B 	)),*6*,. . gf	h 	hC[J 	#CQGGff	h 	hK[N 	$<a@@ff	h 	hO[R 	))-*6*,. . gf	h 	hS[Z 	?A66ff	h 	h[[^ 	#CQGGff	h 	h_[b 	$5q99ff	h 	hc[f 	$7;;ff	h 	hg[j 	?A66ff	h 	hk[n 	$5q99ff	h 	ho[r 	#4a88ff	h 	hs[v 	NA66ff	h 	hw[z 	$>BBff	h 	h{[~ 	)DbJbp{p{|||ff	h 	h[B	 	$5q99ff	h 	hC	[F	 	$7;;ff	h 	hG	[J	 	]A66ff	h 	hK	[N	 	$BAFFff	h 	hO	[R	 	$7;;ff	h 	hS	[V	 	$KQOOff	h 	hW	[Z	 	=!44ff	h 	h[	[^	 	$4a88ff	h 	h_	[b	 	$6::ff	h 	hc	[f	 	$DaHHff	h 	hg	[j	 	$DaHHff	h 	hk	[n	 	))-*6*,. . gf	h 	ho	[v	 	#?CCff	h 	hw	[z	 	9a00ff	h 	h{	[~	 	K33ff	h 	h	[B
 	r9R]R]^^^ff	h 	hC
[F
 	$8!<<ff	h 	hG
[J
 	$8!<<ff	h 	hK
[N
 	$91==ff	h 	hO
[R
 	#KQOOff	h 	hS
[V
 	$6::ff	h 	hW
[Z
 	)BBH]kvkvwwwff	h 	h[
[^
 	)ErKcq|q|}}}ff	h 	h_
[b
 	$=qAAff	h 	hc
[f
 	$LaPPff	h 	hg
[j
 	$LaPPff	h 	hk
[n
 	]A66ff	h 	ho
[r
 	$?CCff	h 	hs
[v
 	$?CCff	h 	hw
[z
 	$DaHHff	h 	h{
[~
 	NA66ff	h 	h
[B 	$5q99ff	h 	hC[F 	OQ77ff	h 	hG[J 	NA66ff	h 	hK[N 	))-*5*+- - gf	h 	hO[V 	$5q99ff	h 	hW[Z 	$>BBff	h 	h[[^ 	$8!<<ff	h 	h_[b 	$:A>>ff	h 	hc[f 	$5q99ff	h 	hg[j 	))*=*6*,. . gf	h 	hk[r 	$:A>>ff	h 	hs[v 	$BAFFff	h 	hw[z 	%DaHHff	h 	h{[~ 	%EqIIff	h 	h[B 	#5q99ff	h 	hC[F 	M155ff	h 	hG[J 	=!44ff	h 	hK[N 	=!44ff	h 	hO[R 	))-*6*,. . gf	h 	hS[Z 	$EtLLff	h 	h[[^ 	$6::ff	h 	h_[b 	mQ77ff	h 	hc[f 	NA66ff	h 	hg[j 	)?EWesestttff	h 	hk[n 	K33ff	h 	ho[r 	)<b/_l_lmmmff	h 	hs[Kz7 7 7 7 7 7 7 7 7 7rm   r  c            	           e Zd Zd Z edde           edd           edd           edd           edd           edd          gZdS )	StartMACRequestrK  r   
reserver_1ImgLoadStartAddr	ImgLengthImgCheckSumImgStartAddrN)	rr   rs   rt   ru   r   StartMACCodesr   r   r{   r|   rm   rk   r5  r5    sw        D =T=AA<h77:0*==:k:66:mZ88:nj99KKKrm   r5  c                   D    e Zd Zd Z edde           edd          gZdS )StartMACConfirmationr   r   rK  N)rr   rs   rt   ru   r   r;  r   r{   r|   rm   rk   r=  r=    s:        !D =4??:j$//KKKrm   r=  c                       e Zd Zd Zg ZdS )ResetDeviceRequestNr   r|   rm   rk   r?  r?    s        DKKKrm   r?  c                   .    e Zd Zd Z edde          gZdS )ResetDeviceConfirmationr   r   N)rr   rs   rt   ru   r   ResetDeviceCodesr{   r|   rm   rk   rA  rA    s*        $D =41ABBCKKKrm   rA  c                       e Zd Zd Zg ZdS )ReadConfBlockRequestNr   r|   rm   rk   rD  rD    s        !DKKKrm   rD  zGeneric Imager(   zSynopsis configurationr*   zDenali configurationr+   zDenali appletr,   zRuntime firmwarer-   z
OAS clientr"  zCustom imager   zMemory control appletr  zPower management appletr\  zOAS client IP stack
   zOAS client TR069   
SoftLoaderr  zFlash layout   r  zChain manifestr  zRuntime parametersr1   zCustom module in scratchr   zCustom module update appletc                      e Zd Zd Z edd           edd           edd           edd           edd           edd           edd           ed	de           ed
d           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd          gZ	dS )	ConfBlockHeaderVersionNumr   
ImgAddrNVMImgAddrSDRAMr8  r9  
EntryPointHeaderMinVersionHeaderImgTypeHeaderIgnoreMaskHeaderModuleIDHeaderModuleSubIDAddrNextHeaderNVMHeaderChecksum	SDRAMsizeSDRAMConfRegisterSDRAMTimingRegister_0SDRAMTimingRegister_1SDRAMControlRegisterSDRAMRefreshRegisterMACClockRegisterr   N)
rr   rs   rt   ru   r   r   r   CBImgTCodesr   r{   r|   rm   rk   rJ  rJ  5  sd       D:0!44:lA..:na00:k1--:mQ//:lA..:0$77 =$DD;16:::.22:1155:1155:.22:k1--:1155:5q99:5q99:4a88:4a88:0!44:lA..)2KKKrm   rJ  c                   h    e Zd Zd Z edde           edddd           edded 	          gZ	dS )
ReadConfBlockConfirmationr   r   BlockLenNConfigurationBlockr   r   c                     | j         S r   )r`  ri   s    rk   r   z"ReadConfBlockConfirmation.<lambda>R  s
    adam rm   r   )
rr   rs   rt   ru   r   ReadConfBlockCodesr
   r   rJ  r{   r|   rm   rk   r_  r_  N  s`        &D =41CDD =T<PVYZZZ"?#7yVmVmnnnpKKKrm   r_  c                   .    e Zd Zd Z edde          gZdS )WriteModuleData2NVMRequestrK  r*   N)rr   rs   rt   ru   r   r  r{   r|   rm   rk   re  re  Y  s)        'D =T<@@AKKKrm   re  c                   F    e Zd Zd Z edde           edde          gZdS )WriteModuleData2NVMConfirmationr   r   rK  r*   N)rr   rs   rt   ru   r   r   r  r{   r|   rm   rk   rg  rg  ^  s=        ,D =3<< =T<@@BKKKrm   rg  c            
           e Zd ZdZdZe e edd          e           e e	d e
            e
d           d           gZd	 Zd
S )
HomePlugAVzH
        HomePlugAV Packet - by default => gets devices information
    zHomePlugAV FragmentInfor   VendorFieldc                     dS )Nr+   r|   r  s    rk   r   zHomePlugAV.<lambda>p  s    ! rm   r   c                     | j         dk    S rP  rg   ri   s    rk   r   zHomePlugAV.<lambda>q  s    t0C rm   c                 ,    t          | t                    S r   )
isinstanceri  )r   others     rk   answerszHomePlugAV.answerss  s    4,,-rm   N)rr   rs   rt   r   ru   ro   r   r   rl   r   r~   r{   rq  r|   rm   rk   ri  ri  f  s          D&##KK$D$D$02 2##OOM99;;4=@K%M %M %M %E$DF FGK. . . . .rm   ri  typei  )rp   i  r   )rp   rh   r&   r    r!   r"   r#   r$   r%   r   )kr   r_  scapy.packetr   r   scapy.fieldsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   scapy.layers.l2r   rw   rz   r   r   r   rv   ry   
EofPadListrl   ro   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r.  r  SnifferCodesr  r/  ANCodesr  r1  r<  r6  rf  r@  rh  r  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r;  r5  r=  rB  r?  rA  rc  rD  r]  rJ  r_  re  rg  ri  r|   rm   rk   <module>ry     s     , , , , , , , ,                                               0 " ! ! ! ! !F9 F>F3F 8F -	F
 2F 6F ;F 0F 5F 5F 4F 9F <F AF +F  0!F" .7<,96C<AD5F F F8     $%%%$$--%' '  !*,. . !(') ) =
K=
 K= K= K= N= K=  K!=" I#=& O'=* N+=, -=. /=0 1=2 3=4 5=6 N7=8 9= =: %;=< ==> ?=@ !A=B !C=D )E=F G=H NI=J #K=L M=N O=P !Q=R #S=T U=V "W=X MY=Z M[= = =\ M]=^ N_=` "a=b c=d Le=f g=h +i=j %k=l m=n o=p q=r (s=t !u=v "w=x y=z {= = @ f
  D D D D D& D D D. . . . . . . .
L L L L Lv L L L           V        V   &    V   &    V   ,z z z z z z z zz z z z z z z z *,. .G G G G G G G G3 3 3 3 3f 3 3 33 3 3 3 36 3 3 3
) 
) 
) 
) 
)f 
) 
) 
) $'') ) 
C C C C C6 C C C> > > > >V > > >    f   
< < < < <6 < < < (&( (  +& M M M M MV M M M
 ")+ +> > > > >& > > >
      !? !? !? !? !?f !? !? !?P    6    !(') )
          " "' ' ' ' 'V ' ' 'T) ) ) ) )& ) ) )b .*68 8! ! !5 5 5 5 5F 5 5 5       4    V   0    F       F       V   4    v       F       f       V       f       v               F       v          $    f    g7 g7 g7 g7 g7 g7 g7 g7\ y!    f       6    )$        
D D D D Df D D D I&     6   
4t_ 4-4+4 _4 '	4
 \4 ^4 ,4 .4 *4 '4 \4 ^4 Y4 %4 )4  /!4" 2#4 4(2 2 2 2 2 2 2 22p p p p p p p pB B B B B B B B
B B B B Bf B B B. . . . . . . ." E:/ 0 0 0
 J( 8 8 8 8 J 7 7 7 7 J,V < < < < J*6 : : : : J/ ? ? ? ? J1& A A A A J,V < < < < J1& A A A A J-f = = = = J26 B B B B J.v > > > > J3F C C C C J.v > > > > J26 B B B B J7 G G G G J264 P P P P J264 P P P P &vt T T T T &vt T T T T J*6 : : : : J 7 7 7 7 J,V < < < < J/ ? ? ? ? J4V D D D D J,V < < < < J1& A A A A J.v > > > > J/ ? ? ? ? J4V D D D D Jv 6 6 6 6 J+F ; ; ; ; J 7 7 7 7 rm   