;ELC   
;;; Compiled
;;; in Emacs version 26.3
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(defalias 'bindat--unpack-u8 #[nil "	H	T\207" [bindat-raw bindat-idx] 2])
(defalias 'bindat--unpack-u16 #[nil "\300\301\302 \303\"\302 \"\207" [logior lsh bindat--unpack-u8 8] 4])
(defalias 'bindat--unpack-u24 #[nil "\300\301\302 \303\"\304 \"\207" [logior lsh bindat--unpack-u16 8 bindat--unpack-u8] 4])
(defalias 'bindat--unpack-u32 #[nil "\300\301\302 \303\"\302 \"\207" [logior lsh bindat--unpack-u16 16] 4])
(defalias 'bindat--unpack-u16r #[nil "\300\301 \302\301 \303\"\"\207" [logior bindat--unpack-u8 lsh 8] 5])
(defalias 'bindat--unpack-u24r #[nil "\300\301 \302\303 \304\"\"\207" [logior bindat--unpack-u16r lsh bindat--unpack-u8 16] 5])
(defalias 'bindat--unpack-u32r #[nil "\300\301 \302\301 \303\"\"\207" [logior bindat--unpack-u16r lsh 16] 5])
(defalias 'bindat--unpack-item #[(type len &optional vectype) "\306=\203\n \307\310\311>\203 \312 \207\313>\203 \314 \207\315=\203% \316 \207\317>\203. \320 \207\321=\2037 \322 \207\323=\203@ \324 \207\325=\203I \326 \207\305=\203\225 \327	\330_S\327\211\f\331Y\203\222 \312 \211\331U\203q \f\330Z\211\202[ \332\211\331V\203Z \333\n\"\331U\204\206 \fB\fS\334\335\"\211\202t ,\207\336=\203\276 &'\211	\\O('	\\'(;\203\266 (\202\274 \337(\260!)\207\340=\203\n\331\327(\211)	W\203\346 &')\\H\331U\204\346 )T\211)\202\313 &'\211)\\O('	\\'(;\203(\202\337(\260!*\207\307=\203\\\341	\331\"\331\342*)+,:\2031,A@*\343,8,\202;,\2067\344\327,)	W\203X+)\345*,#I\210)T\211)\202=++\207\327\207" [type len m j bnum bits ip vec 4 (u8 byte) bindat--unpack-u8 (u16 word short) bindat--unpack-u16 u24 bindat--unpack-u24 (u32 dword long) bindat--unpack-u32 u16r bindat--unpack-u16r u24r bindat--unpack-u24r u32r bindat--unpack-u32r nil 8 0 128 logand lsh -1 str string-make-unibyte strz make-vector 1 2 u8 bindat--unpack-item bindat-raw bindat-idx s i vlen v vectype] 7])
(defalias 'bindat--unpack-group #[(spec) "\306\211\n\203\240\n@\211@A@\3078\310=\205  \3118\311\306\nA\f:\203= \f@\312=\203= \312\fA@!\203S :\203S @\312=\203S \312A@!\203n :\203n @\312=\203n \312A@!\f\313>\203~ \307\f\306:\203\222 \312=\204\222 \314\315	#\204\232 \316\312=\203\265 \f\203\255 \312!\202\202\312!\210\202\202\317=\203\305 \\\202\202\320=\203\336 \246\321U\204\202T\211\202\315 \301=\203\357 \322\312!!\202\202\323=\203 \321\211W\203\322\233!BT\211\202\375 \237*\202\202\324=\203w\233\306\211 !\"!\203s!@ !A! @\211\"\232\204e\325\232\204e:\2036\312!\2036\322 A!\306\211!\204;,\202\202\326#\211\203\233\f\203\225\fB	B\202\233\327	\".\202 	*\207" [last struct spec item field type nil 2 vec 3 eval (eval fill align struct union) apply bindat-get-field 1 fill align 0 bindat--unpack-group repeat union t bindat--unpack-item append len vectype tail data bindat-idx count index cc case cases tag] 5])
#@190 Return structured data according to SPEC for binary data in BINDAT-RAW.
BINDAT-RAW is a unibyte string or vector.
Optional third arg BINDAT-IDX specifies the starting offset in BINDAT-RAW.
(defalias 'bindat-unpack #[(spec bindat-raw &optional bindat-idx) "\303!\203\n \304\305!\210	\204 \306\307\n!\207" [bindat-raw bindat-idx spec multibyte-string-p error "String is multibyte" 0 bindat--unpack-group] 2 (#$ . 3390)])
#@352 In structured data STRUCT, return value of field named FIELD.
If multiple field names are specified, use the field names to
lookup nested sub-structures in STRUCT, corresponding to the
C-language syntax STRUCT.FIELD1.FIELD2.FIELD3...
An integer value in the field list is taken as an array index,
e.g. corresponding to STRUCT.FIELD1[INDEX2].FIELD3...
(defalias 'bindat-get-field #[(struct &rest field) "\203) 	\203) 	@\250\203 	@8\202\" 	@\236\211:\205! \nA)	A\202  \207" [struct field val] 3 (#$ . 3819)])
(defvar bindat--fixed-length-alist '((u8 . 1) (byte . 1) (u16 . 2) (u16r . 2) (word . 2) (short . 2) (u24 . 3) (u24r . 3) (u32 . 4) (u32r . 4) (dword . 4) (long . 4) (ip . 4)))
(defalias 'bindat--length-group #[(struct spec) "\306	\205\301	@\211@\nA@\307\n8\f\310=\205 \311\n8\311	A:\2037 @\312=\2037 \312A@!\f\203M \f:\203M \f@\312=\203M \312\fA@!\203c :\203c @\312=\203c \312A@!\313>\203r \307\f\306:\203\204 \f\312=\204\204 \314\315#\204\212 \316\f\310=\203\266 \316:\203\250 A@_\3078\202\262 \206\256 \317\306)\202\212 \f\312=\203\324 \203\315 \312!BB\202\274\312!\210\202\274\f\320=\203\343 \\\202\274\f\321=\203\373 \246\322U\204\274T\211\202\353 \f\323=\203\324\203\315\"\202\312!\"\210\202\274\f\325=\203G\322\211W\203C\324\315\"8\n\233\"\210T\211\202%*\202\274\f\326=\203\236\n\233\306\211 ! \203\232 @ A @\211!\232\204\213\327\232\204\213:\203\\\312!\203\\\324A\"\210\306\211 \204a,\202\274\f\"\236\211\203\254\fA_\203\266\315\"\\.\202 )\207" [last spec item field type len nil 2 vec 3 eval (eval fill align struct union) apply bindat-get-field 1 u8 fill align 0 struct bindat--length-group repeat union t vectype tail vlen bindat-idx count index cc case cases tag bindat--fixed-length-alist] 6])
#@66 Calculate bindat-raw length for STRUCT according to bindat SPEC.
(defalias 'bindat-length #[(spec struct) "\303\304	\n\"\210)\207" [bindat-idx struct spec 0 bindat--length-group] 3 (#$ . 5716)])
(defalias 'bindat--pack-u8 #[(v) "	\303\n\304\"I\210	T\211\207" [bindat-raw bindat-idx v logand 255] 5])
(defalias 'bindat--pack-u16 #[(v) "	\303\304\n\305\"\306\"I\210	T\303\n\306\"I\210	\307\\\211\207" [bindat-raw bindat-idx v logand lsh -8 255 2] 6])
(defalias 'bindat--pack-u24 #[(v) "\301\302\303\"!\210\304!\207" [v bindat--pack-u8 lsh -16 bindat--pack-u16] 4])
(defalias 'bindat--pack-u32 #[(v) "\301\302\303\"!\210\301!\207" [v bindat--pack-u16 lsh -16] 4])
(defalias 'bindat--pack-u16r #[(v) "	T\303\304\n\305\"\306\"I\210	\303\n\306\"I\210	\307\\\211\207" [bindat-raw bindat-idx v logand lsh -8 255 2] 6])
(defalias 'bindat--pack-u24r #[(v) "\301!\210\302\303\304\"!\207" [v bindat--pack-u16r bindat--pack-u8 lsh -16] 4])
(defalias 'bindat--pack-u32r #[(v) "\301!\210\301\302\303\"!\207" [v bindat--pack-u16r lsh -16] 4])
(defalias 'bindat--pack-item #[(v type len &optional vectype) "\306=\203\n \307\310\n\204 	\\\211\207\311>\203 \312\n!\207\313>\203( \314\n!\207\315=\2032 \316\n!\207\317>\203< \320\n!\207\321=\203F \322\n!\207\323=\203P \324\n!\207\325=\203Z \326\n!\207\327=\203\253 	\330_S\331\211$$\332Y\205\251 \332\n\204\200 $\330Z$\202\242 \333\211\332V\203\242 $\n>\203\224 \334\f\"$S$\335\336\"\211\202\203 \312\f!\210\202j +\207\337>\203\345 \nG\332%\211&	V\203\301 	&%&W\203\336 '%\\\n%HI\210%T\211%\202\303 	\\\211*\207\307=\203=\nG\332\340(%&):\203\n)A@(\341)8)\202)\206\342\331)&	V\203	&%&W\205;\343\n%H()$\210%T\211%\202 +\207	\\\211\207" [type len v bindat-idx m j ip vec 4 (u8 byte) bindat--pack-u8 (u16 word short) bindat--pack-u16 u24 bindat--pack-u24 (u32 dword long) bindat--pack-u32 u16r bindat--pack-u16r u24r bindat--pack-u24r u32r bindat--pack-u32r bits 8 nil 0 128 logior lsh -1 (str strz) 1 2 u8 bindat--pack-item bnum i l bindat-raw vlen vectype] 6])
(defalias 'bindat--pack-group #[(struct spec) "\306	\205\205	@\211@\nA@\307\n8\f\310=\205 \311\n8\311	A:\2037 @\312=\2037 \312A@!\f\203M \f:\203M \f@\312=\203M \312\fA@!\203c :\203c @\312=\203c \312A@!\313>\203r \307\f\306:\203\204 \f\312=\204\204 \314\315#\204\212 \316\f\312=\203\250 \203\241 \312!BB\202\200\312!\210\202\200\f\317=\203\267 \\\202\200\f\320=\203\317 \246\321U\204\200T\211\202\277 \f\322=\203\354 \323\203\342 \315\"\202\344 \312!\"\210\202\200\f\324=\203\321\211W\203\323\315\"8\n\233\"\210T\211\202\371 *\202\200\f\325=\203r\n\233\306\211 \203n@A@\211 \232\204_\326\232\204_:\2030\312!\2030\323A\"\210\306\211\2045,\202\200\315\"\327\f$\210.\202 )\207" [last spec item field type len nil 2 vec 3 eval (eval fill align struct union) apply bindat-get-field 1 fill align 0 struct bindat--pack-group repeat union t bindat--pack-item vectype tail bindat-idx count index cc case cases tag] 6])
#@232 Return binary data packed according to SPEC for structured data STRUCT.
Optional third arg BINDAT-RAW is a pre-allocated unibyte string or vector to
pack into.
Optional fourth arg BINDAT-IDX is the starting offset into BINDAT-RAW.
(defalias 'bindat-pack #[(spec struct &optional bindat-raw bindat-idx) "\305!\203\n \306\307!\210\n\204 \310\204  \311\n\312\f\"\\\310\"\313\f\"\210	?\205+ )\207" [bindat-raw no-return bindat-idx spec struct multibyte-string-p error "Pre-allocated string is multibyte" 0 make-string bindat-length bindat--pack-group] 5 (#$ . 8863)])
#@239 Format vector VECT using element format FMT and separator SEP.
Result is a string with each element of VECT formatted using FMT and
separated by the string SEP.  If optional fourth arg LEN is given, use
only that many elements from VECT.
(defalias 'bindat-format-vector #[(vect fmt sep &optional len) "\204 	G\nP\306\307V\2034 S\310\307U\203( \202) 	H\"\fB\202 \311\312\f\"+\207" [len vect sep fmt s fmt2 nil 0 format apply concat i] 4 (#$ . 9444)])
#@120 Format vector VECT in decimal format separated by dots.
If optional second arg SEP is a string, use that as separator.
(defalias 'bindat-vector-to-dec #[(vect &optional sep) "\302\303	;\203\f 	\202 \304#\207" [vect sep bindat-format-vector "%d" "."] 4 (#$ . 9924)])
#@116 Format vector VECT in hex format separated by dots.
If optional second arg SEP is a string, use that as separator.
(defalias 'bindat-vector-to-hex #[(vect &optional sep) "\302\303	;\203\f 	\202 \304#\207" [vect sep bindat-format-vector "%02x" ":"] 4 (#$ . 10199)])
#@115 Format vector IP as an ip address in dotted notation.
The port (if any) is omitted.  IP can be a string, as well.
(defalias 'bindat-ip-to-string #[(ip) "\301!\203 \302\303\"\207\304\305\306H\307H\310H\311H%\207" [ip vectorp format-network-address t format "%d.%d.%d.%d" 0 1 2 3] 7 (#$ . 10473)])
(provide 'bindat)
